Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Re-enable ProduceReferenceAssembly #346

Merged
merged 4 commits into from
Dec 16, 2023

fix: Add reference assemblies for Bolero.Server

45ca059
Select commit
Loading
Failed to load commit list.
Sign in for the full log view
Merged

Re-enable ProduceReferenceAssembly #346

fix: Add reference assemblies for Bolero.Server
45ca059
Select commit
Loading
Failed to load commit list.
GitHub Actions / Unit tests succeeded Dec 16, 2023 in 0s

Unit tests ✅

Tests passed successfully

✅ tests/Unit/TestResults/_fv-az984-104_2023-12-16_11_07_08.trx

390 tests were completed in 47s with 388 passed, 0 failed and 2 skipped.

Test suite Passed Failed Skipped Time
Bolero.Tests.Web.Elmish 5✅ 485ms
Bolero.Tests.Web.Html 26✅ 3s
Bolero.Tests.Web.Remoting 4✅ 1⚪ 1s
Bolero.Tests.Web.Routing 318✅ 29s
Bolero.Tests.Web.Templating 35✅ 1⚪ 2s

✅ Bolero.Tests.Web.Elmish

✅ ecomp passes attributes
✅ ElmishComponent dispatches message
✅ ElmishComponent is rendered
✅ Input event handler dispatches message
✅ ProgramComponent is rendered

✅ Bolero.Tests.Web.Html

✅ bind.change
✅ bind.change radio
✅ bind.changeFloat
✅ bind.changeInt
✅ bind.checked
✅ bind.input
✅ bind.inputFloat
✅ bind.inputInt
✅ Blazor Component
✅ Bolero Component
✅ Boolean cond reacts to events
✅ ComponentBindKeyAndRef
✅ ComponentChildContent
✅ ComponentRefBinder
✅ ComponentRefBinderRendersChildren
✅ Element with content that must be escaped
✅ Element with id and text content
✅ ElementBindKeyAndRef
✅ ElementRefBinder
✅ PreventDefault
✅ Raw HTML
✅ Render many for loop items
✅ Render many forEach items
✅ StopPropagation
✅ Union cond reacts to events
✅ Virtualize

✅ Bolero.Tests.Web.Remoting

✅ Authorized remote function fails if role is missing
✅ Authorized remote function fails when signed out
✅ Authorized remote function succeeds if role is present
✅ Authorized remote function succeeds when signed in
⚪ Set and remove key

✅ Bolero.Tests.Web.Routing

✅ Click link(Home)
✅ Click link(NoArg)
✅ Click link(WithArg "")
✅ Click link(WithArg "bar")
✅ Click link(WithArg "foo")
✅ Click link(WithArg "日本語")
✅ Click link(WithArgs ❨"", 3❩)
✅ Click link(WithArgs ❨"bar", 2❩)
✅ Click link(WithArgs ❨"foo", 1❩)
✅ Click link(WithArray [|❨2, ""❩; ❨34, "b"❩|])
✅ Click link(WithArray [|❨2, "a"❩; ❨34, "b"❩|])
✅ Click link(WithList [❨2, ""❩; ❨34, "b"❩])
✅ Click link(WithList [❨2, "a"❩; ❨34, "b"❩])
✅ Click link(WithModel { Model = 0 })
✅ Click link(WithModelAndArgs ❨42, { Model = null }❩)
✅ Click link(WithNestedUnion ❨WithArg ""❩)
✅ Click link(WithNestedUnion ❨WithArg "bar"❩)
✅ Click link(WithNestedUnion ❨WithArg "foo"❩)
✅ Click link(WithNestedUnion ❨WithArg "日本語"❩)
✅ Click link(WithNestedUnion ❨WithArgs ❨"", 3❩❩)
✅ Click link(WithNestedUnion ❨WithArgs ❨"bar", 2❩❩)
✅ Click link(WithNestedUnion ❨WithArgs ❨"foo", 1❩❩)
✅ Click link(WithNestedUnion ❨WithArray [|❨2, ""❩; ❨34, "b"❩|]❩)
✅ Click link(WithNestedUnion ❨WithArray [|❨2, "a"❩; ❨34, "b"❩|]❩)
✅ Click link(WithNestedUnion ❨WithList [❨2, ""❩; ❨34, "b"❩]❩)
✅ Click link(WithNestedUnion ❨WithList [❨2, "a"❩; ❨34, "b"❩]❩)
✅ Click link(WithNestedUnion ❨WithModel { Model = 0 }❩)
✅ Click link(WithNestedUnion ❨WithModelAndArgs ❨42, { Model = null }❩❩)
✅ Click link(WithNestedUnion ❨WithPath ""❩)
✅ Click link(WithNestedUnion ❨WithPath "abc"❩)
✅ Click link(WithNestedUnion ❨WithPathAndSuffix ""❩)
✅ Click link(WithNestedUnion ❨WithPathAndSuffix "abc"❩)
✅ Click link(WithNestedUnion ❨WithPathAndSuffix2 ❨"", 123❩❩)
✅ Click link(WithNestedUnion ❨WithPathAndSuffix2 ❨"abc", 123❩❩)
✅ Click link(WithNestedUnion ❨WithPathAndSuffix3 ""❩)
✅ Click link(WithNestedUnion ❨WithPathAndSuffix3 "abc"❩)
✅ Click link(WithNestedUnion ❨WithPathRecord { x = 3
                                  y = InnerHome
                                  z = false }❩)
✅ Click link(WithNestedUnion ❨WithPathRecord { x = 3
                                  y = InnerNoArg
                                  z = false }❩)
✅ Click link(WithNestedUnion ❨WithPathRecord { x = 3
                                  y = InnerWithArg ""
                                  z = false }❩)
✅ Click link(WithNestedUnion ❨WithPathRecord { x = 3
                                  y = InnerWithArg "bar"
                                  z = false }❩)
✅ Click link(WithNestedUnion ❨WithPathRecord { x = 3
                                  y = InnerWithArg "foo"
                                  z = false }❩)
✅ Click link(WithNestedUnion ❨WithPathRecord { x = 3
                                  y = InnerWithArgs ❨"", 3❩
                                  z = false }❩)
✅ Click link(WithNestedUnion ❨WithPathRecord { x = 3
                                  y = InnerWithArgs ❨"bar", 2❩
                                  z = false }❩)
✅ Click link(WithNestedUnion ❨WithPathRecord { x = 3
                                  y = InnerWithArgs ❨"foo", 1❩
                                  z = false }❩)
✅ Click link(WithNestedUnion ❨WithQuery ❨42, 1, 2, Some 3, ValueNone❩❩)
✅ Click link(WithNestedUnion ❨WithQuery ❨42, 4, 5, None, ValueSome 3❩❩)
✅ Click link(WithNestedUnion ❨WithRecord { x = 1
                              y = InnerHome
                              z = true }❩)
✅ Click link(WithNestedUnion ❨WithRecord { x = 1
                              y = InnerNoArg
                              z = true }❩)
✅ Click link(WithNestedUnion ❨WithRecord { x = 1
                              y = InnerWithArg ""
                              z = true }❩)
✅ Click link(WithNestedUnion ❨WithRecord { x = 1
                              y = InnerWithArg "bar"
                              z = true }❩)
✅ Click link(WithNestedUnion ❨WithRecord { x = 1
                              y = InnerWithArg "foo"
                              z = true }❩)
✅ Click link(WithNestedUnion ❨WithRecord { x = 1
                              y = InnerWithArgs ❨"", 3❩
                              z = true }❩)
✅ Click link(WithNestedUnion ❨WithRecord { x = 1
                              y = InnerWithArgs ❨"bar", 2❩
                              z = true }❩)
✅ Click link(WithNestedUnion ❨WithRecord { x = 1
                              y = InnerWithArgs ❨"foo", 1❩
                              z = true }❩)
✅ Click link(WithNestedUnion ❨WithRestArray [|❨1, "foo"❩; ❨2, "bar"❩|]❩)
✅ Click link(WithNestedUnion ❨WithRestArray [|❨1, "foo"❩|]❩)
✅ Click link(WithNestedUnion ❨WithRestArray [||]❩)
✅ Click link(WithNestedUnion ❨WithRestList []❩)
✅ Click link(WithNestedUnion ❨WithRestList [12; 34; 56]❩)
✅ Click link(WithNestedUnion ❨WithRestList [42]❩)
✅ Click link(WithNestedUnion ❨WithRestString ""❩)
✅ Click link(WithNestedUnion ❨WithRestString "foo"❩)
✅ Click link(WithNestedUnion ❨WithRestString "foo/bar"❩)
✅ Click link(WithNestedUnion ❨WithTuple ❨324, "", false❩❩)
✅ Click link(WithNestedUnion ❨WithTuple ❨42, "hi", true❩❩)
✅ Click link(WithNestedUnion ❨WithUnion ❨InnerWithArg ""❩❩)
✅ Click link(WithNestedUnion ❨WithUnion ❨InnerWithArg "bar"❩❩)
✅ Click link(WithNestedUnion ❨WithUnion ❨InnerWithArg "foo"❩❩)
✅ Click link(WithNestedUnion ❨WithUnion ❨InnerWithArgs ❨"", 3❩❩❩)
✅ Click link(WithNestedUnion ❨WithUnion ❨InnerWithArgs ❨"bar", 2❩❩❩)
✅ Click link(WithNestedUnion ❨WithUnion ❨InnerWithArgs ❨"foo", 1❩❩❩)
✅ Click link(WithNestedUnion ❨WithUnion InnerHome❩)
✅ Click link(WithNestedUnion ❨WithUnion InnerNoArg❩)
✅ Click link(WithNestedUnion ❨WithUnionNotTerminal ❨InnerHome, ""❩❩)
✅ Click link(WithNestedUnion ❨WithUnionNotTerminal ❨InnerHome, "foo"❩❩)
✅ Click link(WithNestedUnion ❨WithUnionNotTerminal ❨InnerNoArg, ""❩❩)
✅ Click link(WithNestedUnion ❨WithUnionNotTerminal ❨InnerNoArg, "foo"❩❩)
✅ Click link(WithNestedUnion ❨WithUnionNotTerminal ❨InnerWithArg "", ""❩❩)
✅ Click link(WithNestedUnion ❨WithUnionNotTerminal ❨InnerWithArg "", "foo"❩❩)
✅ Click link(WithNestedUnion ❨WithUnionNotTerminal ❨InnerWithArg "bar", ""❩❩)
✅ Click link(WithNestedUnion ❨WithUnionNotTerminal ❨InnerWithArg "bar", "foo"❩❩)
✅ Click link(WithNestedUnion ❨WithUnionNotTerminal ❨InnerWithArg "foo", ""❩❩)
✅ Click link(WithNestedUnion ❨WithUnionNotTerminal ❨InnerWithArg "foo", "foo"❩❩)
✅ Click link(WithNestedUnion ❨WithUnionNotTerminal ❨InnerWithArgs ❨"", 3❩, ""❩❩)
✅ Click link(WithNestedUnion ❨WithUnionNotTerminal ❨InnerWithArgs ❨"", 3❩, "foo"❩❩)
✅ Click link(WithNestedUnion ❨WithUnionNotTerminal ❨InnerWithArgs ❨"bar", 2❩, ""❩❩)
✅ Click link(WithNestedUnion ❨WithUnionNotTerminal ❨InnerWithArgs ❨"bar", 2❩, "foo"❩❩)
✅ Click link(WithNestedUnion ❨WithUnionNotTerminal ❨InnerWithArgs ❨"foo", 1❩, ""❩❩)
✅ Click link(WithNestedUnion ❨WithUnionNotTerminal ❨InnerWithArgs ❨"foo", 1❩, "foo"❩❩)
✅ Click link(WithNestedUnion Home)
✅ Click link(WithNestedUnion NoArg)
✅ Click link(WithNestedUnion WithPathConstant)
✅ Click link(WithPath "")
✅ Click link(WithPath "abc")
✅ Click link(WithPathAndSuffix "")
✅ Click link(WithPathAndSuffix "abc")
✅ Click link(WithPathAndSuffix2 ❨"", 123❩)
✅ Click link(WithPathAndSuffix2 ❨"abc", 123❩)
✅ Click link(WithPathAndSuffix3 "")
✅ Click link(WithPathAndSuffix3 "abc")
✅ Click link(WithPathConstant)
✅ Click link(WithPathRecord { x = 3
                 y = InnerHome
                 z = false })
✅ Click link(WithPathRecord { x = 3
                 y = InnerNoArg
                 z = false })
✅ Click link(WithPathRecord { x = 3
                 y = InnerWithArg ""
                 z = false })
✅ Click link(WithPathRecord { x = 3
                 y = InnerWithArg "bar"
                 z = false })
✅ Click link(WithPathRecord { x = 3
                 y = InnerWithArg "foo"
                 z = false })
✅ Click link(WithPathRecord { x = 3
                 y = InnerWithArgs ❨"", 3❩
                 z = false })
✅ Click link(WithPathRecord { x = 3
                 y = InnerWithArgs ❨"bar", 2❩
                 z = false })
✅ Click link(WithPathRecord { x = 3
                 y = InnerWithArgs ❨"foo", 1❩
                 z = false })
✅ Click link(WithQuery ❨42, 1, 2, Some 3, ValueNone❩)
✅ Click link(WithQuery ❨42, 4, 5, None, ValueSome 3❩)
✅ Click link(WithRecord { x = 1
             y = InnerHome
             z = true })
✅ Click link(WithRecord { x = 1
             y = InnerNoArg
             z = true })
✅ Click link(WithRecord { x = 1
             y = InnerWithArg ""
             z = true })
✅ Click link(WithRecord { x = 1
             y = InnerWithArg "bar"
             z = true })
✅ Click link(WithRecord { x = 1
             y = InnerWithArg "foo"
             z = true })
✅ Click link(WithRecord { x = 1
             y = InnerWithArgs ❨"", 3❩
             z = true })
✅ Click link(WithRecord { x = 1
             y = InnerWithArgs ❨"bar", 2❩
             z = true })
✅ Click link(WithRecord { x = 1
             y = InnerWithArgs ❨"foo", 1❩
             z = true })
✅ Click link(WithRestArray [|❨1, "foo"❩; ❨2, "bar"❩|])
✅ Click link(WithRestArray [|❨1, "foo"❩|])
✅ Click link(WithRestArray [||])
✅ Click link(WithRestList [])
✅ Click link(WithRestList [12; 34; 56])
✅ Click link(WithRestList [42])
✅ Click link(WithRestString "")
✅ Click link(WithRestString "foo")
✅ Click link(WithRestString "foo/bar")
✅ Click link(WithTuple ❨324, "", false❩)
✅ Click link(WithTuple ❨42, "hi", true❩)
✅ Click link(WithUnion ❨InnerWithArg ""❩)
✅ Click link(WithUnion ❨InnerWithArg "bar"❩)
✅ Click link(WithUnion ❨InnerWithArg "foo"❩)
✅ Click link(WithUnion ❨InnerWithArgs ❨"", 3❩❩)
✅ Click link(WithUnion ❨InnerWithArgs ❨"bar", 2❩❩)
✅ Click link(WithUnion ❨InnerWithArgs ❨"foo", 1❩❩)
✅ Click link(WithUnion InnerHome)
✅ Click link(WithUnion InnerNoArg)
✅ Click link(WithUnionNotTerminal ❨InnerHome, ""❩)
✅ Click link(WithUnionNotTerminal ❨InnerHome, "foo"❩)
✅ Click link(WithUnionNotTerminal ❨InnerNoArg, ""❩)
✅ Click link(WithUnionNotTerminal ❨InnerNoArg, "foo"❩)
✅ Click link(WithUnionNotTerminal ❨InnerWithArg "", ""❩)
✅ Click link(WithUnionNotTerminal ❨InnerWithArg "", "foo"❩)
✅ Click link(WithUnionNotTerminal ❨InnerWithArg "bar", ""❩)
✅ Click link(WithUnionNotTerminal ❨InnerWithArg "bar", "foo"❩)
✅ Click link(WithUnionNotTerminal ❨InnerWithArg "foo", ""❩)
✅ Click link(WithUnionNotTerminal ❨InnerWithArg "foo", "foo"❩)
✅ Click link(WithUnionNotTerminal ❨InnerWithArgs ❨"", 3❩, ""❩)
✅ Click link(WithUnionNotTerminal ❨InnerWithArgs ❨"", 3❩, "foo"❩)
✅ Click link(WithUnionNotTerminal ❨InnerWithArgs ❨"bar", 2❩, ""❩)
✅ Click link(WithUnionNotTerminal ❨InnerWithArgs ❨"bar", 2❩, "foo"❩)
✅ Click link(WithUnionNotTerminal ❨InnerWithArgs ❨"foo", 1❩, ""❩)
✅ Click link(WithUnionNotTerminal ❨InnerWithArgs ❨"foo", 1❩, "foo"❩)
✅ Invalid routers(Dictionary`2)
✅ Invalid routers(Duplicate field)
✅ Invalid routers(Identical paths with different parameter names)
✅ Invalid routers(Incomplete parameter list)
✅ Invalid routers(Invalid parameter syntax)
✅ Invalid routers(Mismatched type parameters in same position)
✅ Invalid routers(Rest parameter in non-final position)
✅ Invalid routers(Unknown parameter name)
✅ Link with anchor
✅ Not found
✅ Set by model(Home)
✅ Set by model(NoArg)
✅ Set by model(WithArg "")
✅ Set by model(WithArg "bar")
✅ Set by model(WithArg "foo")
✅ Set by model(WithArg "日本語")
✅ Set by model(WithArgs ❨"", 3❩)
✅ Set by model(WithArgs ❨"bar", 2❩)
✅ Set by model(WithArgs ❨"foo", 1❩)
✅ Set by model(WithArray [|❨2, ""❩; ❨34, "b"❩|])
✅ Set by model(WithArray [|❨2, "a"❩; ❨34, "b"❩|])
✅ Set by model(WithList [❨2, ""❩; ❨34, "b"❩])
✅ Set by model(WithList [❨2, "a"❩; ❨34, "b"❩])
✅ Set by model(WithModel { Model = 0 })
✅ Set by model(WithModelAndArgs ❨42, { Model = null }❩)
✅ Set by model(WithNestedUnion ❨WithArg ""❩)
✅ Set by model(WithNestedUnion ❨WithArg "bar"❩)
✅ Set by model(WithNestedUnion ❨WithArg "foo"❩)
✅ Set by model(WithNestedUnion ❨WithArg "日本語"❩)
✅ Set by model(WithNestedUnion ❨WithArgs ❨"", 3❩❩)
✅ Set by model(WithNestedUnion ❨WithArgs ❨"bar", 2❩❩)
✅ Set by model(WithNestedUnion ❨WithArgs ❨"foo", 1❩❩)
✅ Set by model(WithNestedUnion ❨WithArray [|❨2, ""❩; ❨34, "b"❩|]❩)
✅ Set by model(WithNestedUnion ❨WithArray [|❨2, "a"❩; ❨34, "b"❩|]❩)
✅ Set by model(WithNestedUnion ❨WithList [❨2, ""❩; ❨34, "b"❩]❩)
✅ Set by model(WithNestedUnion ❨WithList [❨2, "a"❩; ❨34, "b"❩]❩)
✅ Set by model(WithNestedUnion ❨WithModel { Model = 0 }❩)
✅ Set by model(WithNestedUnion ❨WithModelAndArgs ❨42, { Model = null }❩❩)
✅ Set by model(WithNestedUnion ❨WithPath ""❩)
✅ Set by model(WithNestedUnion ❨WithPath "abc"❩)
✅ Set by model(WithNestedUnion ❨WithPathAndSuffix ""❩)
✅ Set by model(WithNestedUnion ❨WithPathAndSuffix "abc"❩)
✅ Set by model(WithNestedUnion ❨WithPathAndSuffix2 ❨"", 123❩❩)
✅ Set by model(WithNestedUnion ❨WithPathAndSuffix2 ❨"abc", 123❩❩)
✅ Set by model(WithNestedUnion ❨WithPathAndSuffix3 ""❩)
✅ Set by model(WithNestedUnion ❨WithPathAndSuffix3 "abc"❩)
✅ Set by model(WithNestedUnion ❨WithPathRecord { x = 3
                                  y = InnerHome
                                  z = false }❩)
✅ Set by model(WithNestedUnion ❨WithPathRecord { x = 3
                                  y = InnerNoArg
                                  z = false }❩)
✅ Set by model(WithNestedUnion ❨WithPathRecord { x = 3
                                  y = InnerWithArg ""
                                  z = false }❩)
✅ Set by model(WithNestedUnion ❨WithPathRecord { x = 3
                                  y = InnerWithArg "bar"
                                  z = false }❩)
✅ Set by model(WithNestedUnion ❨WithPathRecord { x = 3
                                  y = InnerWithArg "foo"
                                  z = false }❩)
✅ Set by model(WithNestedUnion ❨WithPathRecord { x = 3
                                  y = InnerWithArgs ❨"", 3❩
                                  z = false }❩)
✅ Set by model(WithNestedUnion ❨WithPathRecord { x = 3
                                  y = InnerWithArgs ❨"bar", 2❩
                                  z = false }❩)
✅ Set by model(WithNestedUnion ❨WithPathRecord { x = 3
                                  y = InnerWithArgs ❨"foo", 1❩
                                  z = false }❩)
✅ Set by model(WithNestedUnion ❨WithQuery ❨42, 1, 2, Some 3, ValueNone❩❩)
✅ Set by model(WithNestedUnion ❨WithQuery ❨42, 4, 5, None, ValueSome 3❩❩)
✅ Set by model(WithNestedUnion ❨WithRecord { x = 1
                              y = InnerHome
                              z = true }❩)
✅ Set by model(WithNestedUnion ❨WithRecord { x = 1
                              y = InnerNoArg
                              z = true }❩)
✅ Set by model(WithNestedUnion ❨WithRecord { x = 1
                              y = InnerWithArg ""
                              z = true }❩)
✅ Set by model(WithNestedUnion ❨WithRecord { x = 1
                              y = InnerWithArg "bar"
                              z = true }❩)
✅ Set by model(WithNestedUnion ❨WithRecord { x = 1
                              y = InnerWithArg "foo"
                              z = true }❩)
✅ Set by model(WithNestedUnion ❨WithRecord { x = 1
                              y = InnerWithArgs ❨"", 3❩
                              z = true }❩)
✅ Set by model(WithNestedUnion ❨WithRecord { x = 1
                              y = InnerWithArgs ❨"bar", 2❩
                              z = true }❩)
✅ Set by model(WithNestedUnion ❨WithRecord { x = 1
                              y = InnerWithArgs ❨"foo", 1❩
                              z = true }❩)
✅ Set by model(WithNestedUnion ❨WithRestArray [|❨1, "foo"❩; ❨2, "bar"❩|]❩)
✅ Set by model(WithNestedUnion ❨WithRestArray [|❨1, "foo"❩|]❩)
✅ Set by model(WithNestedUnion ❨WithRestArray [||]❩)
✅ Set by model(WithNestedUnion ❨WithRestList []❩)
✅ Set by model(WithNestedUnion ❨WithRestList [12; 34; 56]❩)
✅ Set by model(WithNestedUnion ❨WithRestList [42]❩)
✅ Set by model(WithNestedUnion ❨WithRestString ""❩)
✅ Set by model(WithNestedUnion ❨WithRestString "foo"❩)
✅ Set by model(WithNestedUnion ❨WithRestString "foo/bar"❩)
✅ Set by model(WithNestedUnion ❨WithTuple ❨324, "", false❩❩)
✅ Set by model(WithNestedUnion ❨WithTuple ❨42, "hi", true❩❩)
✅ Set by model(WithNestedUnion ❨WithUnion ❨InnerWithArg ""❩❩)
✅ Set by model(WithNestedUnion ❨WithUnion ❨InnerWithArg "bar"❩❩)
✅ Set by model(WithNestedUnion ❨WithUnion ❨InnerWithArg "foo"❩❩)
✅ Set by model(WithNestedUnion ❨WithUnion ❨InnerWithArgs ❨"", 3❩❩❩)
✅ Set by model(WithNestedUnion ❨WithUnion ❨InnerWithArgs ❨"bar", 2❩❩❩)
✅ Set by model(WithNestedUnion ❨WithUnion ❨InnerWithArgs ❨"foo", 1❩❩❩)
✅ Set by model(WithNestedUnion ❨WithUnion InnerHome❩)
✅ Set by model(WithNestedUnion ❨WithUnion InnerNoArg❩)
✅ Set by model(WithNestedUnion ❨WithUnionNotTerminal ❨InnerHome, ""❩❩)
✅ Set by model(WithNestedUnion ❨WithUnionNotTerminal ❨InnerHome, "foo"❩❩)
✅ Set by model(WithNestedUnion ❨WithUnionNotTerminal ❨InnerNoArg, ""❩❩)
✅ Set by model(WithNestedUnion ❨WithUnionNotTerminal ❨InnerNoArg, "foo"❩❩)
✅ Set by model(WithNestedUnion ❨WithUnionNotTerminal ❨InnerWithArg "", ""❩❩)
✅ Set by model(WithNestedUnion ❨WithUnionNotTerminal ❨InnerWithArg "", "foo"❩❩)
✅ Set by model(WithNestedUnion ❨WithUnionNotTerminal ❨InnerWithArg "bar", ""❩❩)
✅ Set by model(WithNestedUnion ❨WithUnionNotTerminal ❨InnerWithArg "bar", "foo"❩❩)
✅ Set by model(WithNestedUnion ❨WithUnionNotTerminal ❨InnerWithArg "foo", ""❩❩)
✅ Set by model(WithNestedUnion ❨WithUnionNotTerminal ❨InnerWithArg "foo", "foo"❩❩)
✅ Set by model(WithNestedUnion ❨WithUnionNotTerminal ❨InnerWithArgs ❨"", 3❩, ""❩❩)
✅ Set by model(WithNestedUnion ❨WithUnionNotTerminal ❨InnerWithArgs ❨"", 3❩, "foo"❩❩)
✅ Set by model(WithNestedUnion ❨WithUnionNotTerminal ❨InnerWithArgs ❨"bar", 2❩, ""❩❩)
✅ Set by model(WithNestedUnion ❨WithUnionNotTerminal ❨InnerWithArgs ❨"bar", 2❩, "foo"❩❩)
✅ Set by model(WithNestedUnion ❨WithUnionNotTerminal ❨InnerWithArgs ❨"foo", 1❩, ""❩❩)
✅ Set by model(WithNestedUnion ❨WithUnionNotTerminal ❨InnerWithArgs ❨"foo", 1❩, "foo"❩❩)
✅ Set by model(WithNestedUnion Home)
✅ Set by model(WithNestedUnion NoArg)
✅ Set by model(WithNestedUnion WithPathConstant)
✅ Set by model(WithPath "")
✅ Set by model(WithPath "abc")
✅ Set by model(WithPathAndSuffix "")
✅ Set by model(WithPathAndSuffix "abc")
✅ Set by model(WithPathAndSuffix2 ❨"", 123❩)
✅ Set by model(WithPathAndSuffix2 ❨"abc", 123❩)
✅ Set by model(WithPathAndSuffix3 "")
✅ Set by model(WithPathAndSuffix3 "abc")
✅ Set by model(WithPathConstant)
✅ Set by model(WithPathRecord { x = 3
                 y = InnerHome
                 z = false })
✅ Set by model(WithPathRecord { x = 3
                 y = InnerNoArg
                 z = false })
✅ Set by model(WithPathRecord { x = 3
                 y = InnerWithArg ""
                 z = false })
✅ Set by model(WithPathRecord { x = 3
                 y = InnerWithArg "bar"
                 z = false })
✅ Set by model(WithPathRecord { x = 3
                 y = InnerWithArg "foo"
                 z = false })
✅ Set by model(WithPathRecord { x = 3
                 y = InnerWithArgs ❨"", 3❩
                 z = false })
✅ Set by model(WithPathRecord { x = 3
                 y = InnerWithArgs ❨"bar", 2❩
                 z = false })
✅ Set by model(WithPathRecord { x = 3
                 y = InnerWithArgs ❨"foo", 1❩
                 z = false })
✅ Set by model(WithQuery ❨42, 1, 2, Some 3, ValueNone❩)
✅ Set by model(WithQuery ❨42, 4, 5, None, ValueSome 3❩)
✅ Set by model(WithRecord { x = 1
             y = InnerHome
             z = true })
✅ Set by model(WithRecord { x = 1
             y = InnerNoArg
             z = true })
✅ Set by model(WithRecord { x = 1
             y = InnerWithArg ""
             z = true })
✅ Set by model(WithRecord { x = 1
             y = InnerWithArg "bar"
             z = true })
✅ Set by model(WithRecord { x = 1
             y = InnerWithArg "foo"
             z = true })
✅ Set by model(WithRecord { x = 1
             y = InnerWithArgs ❨"", 3❩
             z = true })
✅ Set by model(WithRecord { x = 1
             y = InnerWithArgs ❨"bar", 2❩
             z = true })
✅ Set by model(WithRecord { x = 1
             y = InnerWithArgs ❨"foo", 1❩
             z = true })
✅ Set by model(WithRestArray [|❨1, "foo"❩; ❨2, "bar"❩|])
✅ Set by model(WithRestArray [|❨1, "foo"❩|])
✅ Set by model(WithRestArray [||])
✅ Set by model(WithRestList [])
✅ Set by model(WithRestList [12; 34; 56])
✅ Set by model(WithRestList [42])
✅ Set by model(WithRestString "")
✅ Set by model(WithRestString "foo")
✅ Set by model(WithRestString "foo/bar")
✅ Set by model(WithTuple ❨324, "", false❩)
✅ Set by model(WithTuple ❨42, "hi", true❩)
✅ Set by model(WithUnion ❨InnerWithArg ""❩)
✅ Set by model(WithUnion ❨InnerWithArg "bar"❩)
✅ Set by model(WithUnion ❨InnerWithArg "foo"❩)
✅ Set by model(WithUnion ❨InnerWithArgs ❨"", 3❩❩)
✅ Set by model(WithUnion ❨InnerWithArgs ❨"bar", 2❩❩)
✅ Set by model(WithUnion ❨InnerWithArgs ❨"foo", 1❩❩)
✅ Set by model(WithUnion InnerHome)
✅ Set by model(WithUnion InnerNoArg)
✅ Set by model(WithUnionNotTerminal ❨InnerHome, ""❩)
✅ Set by model(WithUnionNotTerminal ❨InnerHome, "foo"❩)
✅ Set by model(WithUnionNotTerminal ❨InnerNoArg, ""❩)
✅ Set by model(WithUnionNotTerminal ❨InnerNoArg, "foo"❩)
✅ Set by model(WithUnionNotTerminal ❨InnerWithArg "", ""❩)
✅ Set by model(WithUnionNotTerminal ❨InnerWithArg "", "foo"❩)
✅ Set by model(WithUnionNotTerminal ❨InnerWithArg "bar", ""❩)
✅ Set by model(WithUnionNotTerminal ❨InnerWithArg "bar", "foo"❩)
✅ Set by model(WithUnionNotTerminal ❨InnerWithArg "foo", ""❩)
✅ Set by model(WithUnionNotTerminal ❨InnerWithArg "foo", "foo"❩)
✅ Set by model(WithUnionNotTerminal ❨InnerWithArgs ❨"", 3❩, ""❩)
✅ Set by model(WithUnionNotTerminal ❨InnerWithArgs ❨"", 3❩, "foo"❩)
✅ Set by model(WithUnionNotTerminal ❨InnerWithArgs ❨"bar", 2❩, ""❩)
✅ Set by model(WithUnionNotTerminal ❨InnerWithArgs ❨"bar", 2❩, "foo"❩)
✅ Set by model(WithUnionNotTerminal ❨InnerWithArgs ❨"foo", 1❩, ""❩)
✅ Set by model(WithUnionNotTerminal ❨InnerWithArgs ❨"foo", 1❩, "foo"❩)

✅ Bolero.Tests.Web.Templating

✅ Attr hole
✅ Attr hole [multiple]("attrhole2-1")
✅ Attr hole [multiple]("attrhole2-2")
✅ Attr hole mixed with node hole
✅ Attr hole obj value
✅ Bind checkbox
✅ Bind float("-onchange")
⚪ Bind float("")
✅ Bind int("-onchange")
✅ Bind int("")
✅ Bind string to normal input("-onchange")
✅ Bind string to normal input("")
✅ Bind string to select
✅ Bind string to textarea("-onchange")
✅ Bind string to textarea("")
✅ Event hole
✅ File template is instantiated
✅ File template node hole filled
✅ Full attr hole
✅ Inline template is instantiated
✅ Nested template hole filled
✅ Nested template is instantiated
✅ Nested template is removed from its original parent
✅ Node hole filled with node
✅ Node hole filled with node [multiple]("nodehole4-1")
✅ Node hole filled with node [multiple]("nodehole4-2")
✅ Node hole filled with string
✅ Node hole filled with string [multiple]("nodehole3-1")
✅ Node hole filled with string [multiple]("nodehole3-2")
✅ Recursively nested template is instantiated
✅ Recursively nested template is removed from its original parent
✅ Regression #11: common hole in attrs and children
✅ Regression #256: attribute name case is respected
✅ Scoped CSS is propagated to elements that don't have holes
✅ Scoped CSS is propagated to elements that have holes
✅ Template element ref