@voxgig/sdkgen 4.8.2 → 4.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/voxgig-sdkgen +1 -1
- package/dist/action/doctor.d.ts +1 -0
- package/dist/action/doctor.js +50 -2
- package/dist/action/doctor.js.map +1 -1
- package/dist/helpers/naming.js +4 -2
- package/dist/helpers/naming.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/model/sdkgen.aon +21 -0
- package/package.json +1 -1
- package/project/.sdk/model/feature/secrets.aon +120 -18
- package/project/.sdk/model/target/c.aon +10 -0
- package/project/.sdk/model/target/clojure.aon +13 -0
- package/project/.sdk/model/target/cpp.aon +10 -0
- package/project/.sdk/model/target/csharp.aon +9 -0
- package/project/.sdk/model/target/dart.aon +10 -0
- package/project/.sdk/model/target/elixir.aon +9 -0
- package/project/.sdk/model/target/go.aon +13 -0
- package/project/.sdk/model/target/java.aon +9 -0
- package/project/.sdk/model/target/js.aon +7 -0
- package/project/.sdk/model/target/kotlin.aon +9 -0
- package/project/.sdk/model/target/lean.aon +17 -0
- package/project/.sdk/model/target/lua.aon +8 -0
- package/project/.sdk/model/target/ocaml.aon +9 -0
- package/project/.sdk/model/target/perl.aon +8 -0
- package/project/.sdk/model/target/php.aon +8 -0
- package/project/.sdk/model/target/py.aon +13 -0
- package/project/.sdk/model/target/rb.aon +8 -0
- package/project/.sdk/model/target/rust.aon +10 -0
- package/project/.sdk/model/target/scala.aon +21 -2
- package/project/.sdk/model/target/swift.aon +18 -0
- package/project/.sdk/model/target/ts.aon +13 -0
- package/project/.sdk/model/target/zig.aon +9 -0
- package/project/.sdk/src/cmp/clojure/Package_clojure.ts +9 -2
- package/project/.sdk/src/cmp/cpp/Gitignore_cpp.ts +3 -0
- package/project/.sdk/src/cmp/dart/Test_dart.ts +2 -0
- package/project/.sdk/src/cmp/elixir/Package_elixir.ts +4 -1
- package/project/.sdk/src/cmp/go/Config_go.ts +59 -2
- package/project/.sdk/src/cmp/go/Main_go.ts +8 -2
- package/project/.sdk/src/cmp/java/Test_java.ts +6 -5
- package/project/.sdk/src/cmp/kotlin/Test_kotlin.ts +6 -5
- package/project/.sdk/src/cmp/lean/Package_lean.ts +23 -0
- package/project/.sdk/src/cmp/lean/ReadmeInstall_lean.ts +1 -0
- package/project/.sdk/src/cmp/lean/ReadmeTopTest_lean.ts +1 -0
- package/project/.sdk/src/cmp/ocaml/Gitignore_ocaml.ts +1 -0
- package/project/.sdk/src/cmp/ocaml/Main_ocaml.ts +7 -3
- package/project/.sdk/src/cmp/py/Config_py.ts +82 -1
- package/project/.sdk/src/cmp/py/Main_py.ts +44 -0
- package/project/.sdk/src/cmp/py/fragment/Main.fragment.py +2 -0
- package/project/.sdk/src/cmp/swift/Main_swift.ts +10 -0
- package/project/.sdk/src/cmp/swift/Package_swift.ts +13 -1
- package/project/.sdk/src/cmp/ts/Config_ts.ts +42 -17
- package/project/.sdk/src/cmp/ts/fragment/Config.data.fragment.ts +13 -1
- package/project/.sdk/src/cmp/ts/fragment/Config.fragment.ts +13 -1
- package/project/.sdk/src/cmp/zig/Package_zig.ts +15 -11
- package/project/.sdk/src/cmp/zig/fragment/Entity.fragment.zig +3 -3
- package/project/.sdk/src/cmp/zig/fragment/EntityListOp.fragment.zig +3 -3
- package/project/.sdk/src/cmp/zig/fragment/Main.fragment.zig +3 -3
- package/project/.sdk/src/cmp/zig/utility_zig.ts +50 -1
- package/project/.sdk/tm/c/Makefile +38 -3
- package/project/.sdk/tm/c/tests/omni_resolver.h +361 -0
- package/project/.sdk/tm/c/tests/omni_smoke_test.c +237 -0
- package/project/.sdk/tm/c/tests/primary_corpus_test.c +205 -284
- package/project/.sdk/tm/c/tests/struct_corpus_test.c +292 -212
- package/project/.sdk/tm/c/tests/vendor/omni/json.c +811 -0
- package/project/.sdk/tm/c/tests/vendor/omni/omni.h +240 -0
- package/project/.sdk/tm/c/tests/vendor/omni/runner.c +940 -0
- package/project/.sdk/tm/c/tests/vendor/omni/util.c +351 -0
- package/project/.sdk/tm/c/utility/struct/utility.c +7 -2
- package/project/.sdk/tm/clojure/test/sdk/test/omni.clj +401 -0
- package/project/.sdk/tm/clojure/test/sdk/test/omni_smoke.clj +81 -0
- package/project/.sdk/tm/clojure/test/sdk/test/primary.clj +92 -58
- package/project/.sdk/tm/clojure/test/sdk/test/struct_corpus.clj +122 -149
- package/project/.sdk/tm/clojure/test/sdk/test_runner.clj +8 -3
- package/project/.sdk/tm/clojure/test/vendor/omni/voxgig/omni/json.clj +145 -0
- package/project/.sdk/tm/clojure/test/vendor/omni/voxgig/omni/runner.clj +445 -0
- package/project/.sdk/tm/clojure/test/vendor/omni/voxgig/omni/util.clj +145 -0
- package/project/.sdk/tm/cpp/Makefile +5 -1
- package/project/.sdk/tm/cpp/test/omni_resolver.hpp +473 -0
- package/project/.sdk/tm/cpp/test/omni_smoke_test.cpp +209 -0
- package/project/.sdk/tm/cpp/test/primary_utility_test.cpp +243 -184
- package/project/.sdk/tm/cpp/test/runner_support.hpp +68 -181
- package/project/.sdk/tm/cpp/test/struct_corpus_test.cpp +183 -56
- package/project/.sdk/tm/cpp/test/vendor/omni/json.hpp +406 -0
- package/project/.sdk/tm/cpp/test/vendor/omni/omni.hpp +751 -0
- package/project/.sdk/tm/cpp/test/vendor/omni/util.hpp +256 -0
- package/project/.sdk/tm/cpp/utility/pipeline.hpp +7 -1
- package/project/.sdk/tm/csharp/test/OmniResolver.cs +491 -0
- package/project/.sdk/tm/csharp/test/OmniSmokeTest.cs +106 -0
- package/project/.sdk/tm/csharp/test/PrimaryUtilityTest.cs +299 -316
- package/project/.sdk/tm/csharp/test/Runner.cs +104 -269
- package/project/.sdk/tm/csharp/test/StructUtilityTest.cs +535 -724
- package/project/.sdk/tm/csharp/test/vendor/omni/Runner.cs +864 -0
- package/project/.sdk/tm/csharp/test/vendor/omni/Util.cs +347 -0
- package/project/.sdk/tm/csharp/utility/MakeSpec.cs +3 -1
- package/project/.sdk/tm/csharp/utility/PrepareMethod.cs +6 -1
- package/project/.sdk/tm/csharp/utility/struct/Struct.cs +21 -5
- package/project/.sdk/tm/dart/test/omni.dart +520 -0
- package/project/.sdk/tm/dart/test/omni_smoke_test.dart +143 -0
- package/project/.sdk/tm/dart/test/primary_test.dart +86 -28
- package/project/.sdk/tm/dart/test/struct_test.dart +438 -11
- package/project/.sdk/tm/dart/test/vendor/omni/omni.dart +7 -0
- package/project/.sdk/tm/dart/test/vendor/omni/runner.dart +653 -0
- package/project/.sdk/tm/dart/test/vendor/omni/util.dart +232 -0
- package/project/.sdk/tm/elixir/Makefile +11 -3
- package/project/.sdk/tm/elixir/test/omni_smoke_test.exs +117 -0
- package/project/.sdk/tm/elixir/test/primary_utility_test.exs +341 -16
- package/project/.sdk/tm/elixir/test/struct_corpus_test.exs +554 -9
- package/project/.sdk/tm/elixir/test/support/omni.ex +377 -0
- package/project/.sdk/tm/elixir/test/vendor/omni/json.ex +122 -0
- package/project/.sdk/tm/elixir/test/vendor/omni/runner.ex +623 -0
- package/project/.sdk/tm/elixir/test/vendor/omni/util.ex +187 -0
- package/project/.sdk/tm/go/core/context.go +32 -16
- package/project/.sdk/tm/go/feature/secrets/plugin/capability.go +261 -0
- package/project/.sdk/tm/go/feature/secrets/plugin/catalog.go +78 -0
- package/project/.sdk/tm/go/feature/secrets/plugin/config.go +652 -0
- package/project/.sdk/tm/go/feature/secrets/plugin/depend.go +250 -0
- package/project/.sdk/tm/go/feature/secrets/plugin/env.go +194 -0
- package/project/.sdk/tm/go/feature/secrets/plugin/export.go +80 -0
- package/project/.sdk/tm/go/feature/secrets/plugin/graph.go +238 -0
- package/project/.sdk/tm/go/feature/secrets/plugin/host.go +1575 -0
- package/project/.sdk/tm/go/feature/secrets/plugin/order.go +248 -0
- package/project/.sdk/tm/go/feature/secrets/plugin/point.go +184 -0
- package/project/.sdk/tm/go/feature/secrets/plugin/ref.go +123 -0
- package/project/.sdk/tm/go/feature/secrets/plugin/resolve.go +79 -0
- package/project/.sdk/tm/go/feature/secrets/plugin/types.go +296 -0
- package/project/.sdk/tm/go/feature/secrets/plugin/util.go +87 -0
- package/project/.sdk/tm/go/feature/secrets/plugin/version.go +161 -0
- package/project/.sdk/tm/go/feature/secrets/plugins/aws/aws.go +292 -0
- package/project/.sdk/tm/go/feature/secrets/plugins/aws/sigv4.go +201 -0
- package/project/.sdk/tm/go/feature/secrets/plugins/azuresecrets/azuresecrets.go +187 -0
- package/project/.sdk/tm/go/feature/secrets/plugins/boru/boru.go +184 -0
- package/project/.sdk/tm/go/feature/secrets/plugins/doppler/doppler.go +114 -0
- package/project/.sdk/tm/go/feature/secrets/plugins/gcpsecrets/gcpsecrets.go +156 -0
- package/project/.sdk/tm/go/feature/secrets/plugins/hashicorp/hashicorp.go +208 -0
- package/project/.sdk/tm/go/feature/secrets/plugins/httpjson/httpjson.go +241 -0
- package/project/.sdk/tm/go/feature/secrets/plugins/infisical/infisical.go +150 -0
- package/project/.sdk/tm/go/feature/secrets/plugins/onepassword/onepassword.go +152 -0
- package/project/.sdk/tm/go/feature/secrets/plugins/secretspec/secretspec.go +143 -0
- package/project/.sdk/tm/go/feature/secrets/sekreto/addr.go +120 -0
- package/project/.sdk/tm/go/feature/secrets/sekreto/providers.go +442 -0
- package/project/.sdk/tm/go/feature/secrets/sekreto/sekreto.go +714 -0
- package/project/.sdk/tm/go/feature/secrets_feature.go +675 -0
- package/project/.sdk/tm/go/src/feature/secrets/.gitkeep +0 -0
- package/project/.sdk/tm/go/test/feature/secrets/secrets_feature_test.go +799 -0
- package/project/.sdk/tm/go/test/omni/omni.go +902 -0
- package/project/.sdk/tm/go/test/omni/util.go +381 -0
- package/project/.sdk/tm/go/test/omniresolver_test.go +748 -0
- package/project/.sdk/tm/go/test/omnismoke_test.go +112 -0
- package/project/.sdk/tm/go/test/primary_utility_test.go +123 -191
- package/project/.sdk/tm/go/test/struct_utility_test.go +323 -16
- package/project/.sdk/tm/go/test/testsupport_test.go +294 -0
- package/project/.sdk/tm/go/utility/make_options.go +8 -1
- package/project/.sdk/tm/go/utility/prepare_method.go +5 -1
- package/project/.sdk/tm/go/utility/struct/voxgigstruct.go +2 -2
- package/project/.sdk/tm/java/test/OmniResolver.java +355 -0
- package/project/.sdk/tm/java/test/OmniSmokeTest.java +99 -0
- package/project/.sdk/tm/java/test/PrimaryUtilityTest.java +254 -280
- package/project/.sdk/tm/java/test/RunnerSupport.java +9 -194
- package/project/.sdk/tm/java/test/StructCorpusTest.java +119 -42
- package/project/.sdk/tm/java/test/vendor/omni/Json.java +287 -0
- package/project/.sdk/tm/java/test/vendor/omni/Runner.java +851 -0
- package/project/.sdk/tm/java/test/vendor/omni/Util.java +322 -0
- package/project/.sdk/tm/java/utility/MakeSpec.java +3 -1
- package/project/.sdk/tm/java/utility/PrepareMethod.java +5 -5
- package/project/.sdk/tm/java/utility/struct/Struct.java +17 -4
- package/project/.sdk/tm/js/src/utility/StructUtility.js +3 -3
- package/project/.sdk/tm/js/test/omni.js +251 -0
- package/project/.sdk/tm/js/test/omni.test.js +105 -0
- package/project/.sdk/tm/js/test/utility/PrimaryUtility.test.js +6 -2
- package/project/.sdk/tm/js/test/utility/StructUtility.test.js +27 -2
- package/project/.sdk/tm/js/test/vendor/omni/index.js +77 -0
- package/project/.sdk/tm/js/test/vendor/omni/runner.js +628 -0
- package/project/.sdk/tm/js/test/vendor/omni/util.js +229 -0
- package/project/.sdk/tm/kotlin/core/Utility.kt +1 -1
- package/project/.sdk/tm/kotlin/test/OmniResolver.kt +343 -0
- package/project/.sdk/tm/kotlin/test/OmniSmokeTest.kt +100 -0
- package/project/.sdk/tm/kotlin/test/PrimaryUtilityTest.kt +244 -262
- package/project/.sdk/tm/kotlin/test/RunnerSupport.kt +9 -178
- package/project/.sdk/tm/kotlin/test/StructCorpusTest.kt +121 -32
- package/project/.sdk/tm/kotlin/test/vendor/omni/Json.kt +264 -0
- package/project/.sdk/tm/kotlin/test/vendor/omni/Runner.kt +615 -0
- package/project/.sdk/tm/kotlin/test/vendor/omni/Util.kt +139 -0
- package/project/.sdk/tm/kotlin/utility/MakeSpecUrl.kt +6 -3
- package/project/.sdk/tm/kotlin/utility/Prepare.kt +6 -6
- package/project/.sdk/tm/kotlin/utility/struct/Struct.kt +18 -2
- package/project/.sdk/tm/lean/Makefile +12 -5
- package/project/.sdk/tm/lean/src/SdkUtility.lean +14 -1
- package/project/.sdk/tm/lean/test/OmniResolver.lean +358 -0
- package/project/.sdk/tm/lean/test/OmniSmoke.lean +174 -0
- package/project/.sdk/tm/lean/test/StructCorpus.lean +245 -574
- package/project/.sdk/tm/lean/test/TPrimaryUtility.lean +155 -291
- package/project/.sdk/tm/lean/test/vendor/omni/Omni.lean +997 -0
- package/project/.sdk/tm/lua/test/omni.lua +456 -0
- package/project/.sdk/tm/lua/test/omni_smoke_test.lua +103 -0
- package/project/.sdk/tm/lua/test/primary_utility_test.lua +250 -509
- package/project/.sdk/tm/lua/test/struct_utility_test.lua +161 -70
- package/project/.sdk/tm/lua/test/vendor/omni/json.lua +268 -0
- package/project/.sdk/tm/lua/test/vendor/omni/regex.lua +385 -0
- package/project/.sdk/tm/lua/test/vendor/omni/runner.lua +641 -0
- package/project/.sdk/tm/lua/test/vendor/omni/util.lua +282 -0
- package/project/.sdk/tm/lua/utility/prepare_method.lua +5 -1
- package/project/.sdk/tm/lua/utility/struct/regex.lua +663 -0
- package/project/.sdk/tm/lua/utility/struct/struct.lua +660 -420
- package/project/.sdk/tm/ocaml/Makefile +37 -12
- package/project/.sdk/tm/ocaml/test/omni_resolver.ml +284 -0
- package/project/.sdk/tm/ocaml/test/omni_smoke_test.ml +169 -0
- package/project/.sdk/tm/ocaml/test/primary_utility_test.ml +84 -100
- package/project/.sdk/tm/ocaml/test/struct_corpus.ml +225 -201
- package/project/.sdk/tm/ocaml/test/vendor/omni/omni.ml +1157 -0
- package/project/.sdk/tm/perl/lib/Voxgig/Struct.pm +88 -12
- package/project/.sdk/tm/perl/t/omni.pm +647 -0
- package/project/.sdk/tm/perl/t/omni_smoke.t +87 -0
- package/project/.sdk/tm/perl/t/primary_utility.t +189 -487
- package/project/.sdk/tm/perl/t/struct_utility.t +455 -389
- package/project/.sdk/tm/perl/t/vendor/omni/Voxgig/Omni/Runner.pm +649 -0
- package/project/.sdk/tm/perl/t/vendor/omni/Voxgig/Omni/Util.pm +253 -0
- package/project/.sdk/tm/perl/t/vendor/omni/Voxgig/Omni.pm +24 -0
- package/project/.sdk/tm/perl/utility/prepare_method.pm +7 -2
- package/project/.sdk/tm/php/test/Omni.php +691 -0
- package/project/.sdk/tm/php/test/OmniSmokeTest.php +93 -0
- package/project/.sdk/tm/php/test/PrimaryUtilityTest.php +210 -571
- package/project/.sdk/tm/php/test/StructUtilityTest.php +320 -342
- package/project/.sdk/tm/php/test/vendor/omni/Runner.php +644 -0
- package/project/.sdk/tm/php/test/vendor/omni/Util.php +283 -0
- package/project/.sdk/tm/php/utility/MakeSpec.php +10 -3
- package/project/.sdk/tm/php/utility/PrepareBody.php +7 -1
- package/project/.sdk/tm/php/utility/PrepareMethod.php +6 -2
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/__init__.py +36 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/capability.py +141 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/catalog.py +50 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/config.py +333 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/depend.py +198 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/env.py +147 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/export.py +52 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/graph.py +139 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/host.py +1053 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/order.py +171 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/point.py +95 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/ref.py +116 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/resolve.py +59 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/types.py +87 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/version.py +112 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/__init__.py +76 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/addr.py +116 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/aws.py +192 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/azuresecrets.py +120 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/boru.py +140 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/doppler.py +62 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/gcpsecrets.py +101 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/hashicorp.py +151 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/httpjson.py +115 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/infisical.py +90 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/onepassword.py +101 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/secretspec.py +119 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/sigv4.py +125 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/providers.py +211 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/sekreto.py +475 -0
- package/project/.sdk/tm/py/pkg/feature/secrets_feature.py +467 -0
- package/project/.sdk/tm/py/pkg/utility/prepare_method.py +5 -1
- package/project/.sdk/tm/py/pkg/utility/voxgig_struct/__init__.py +0 -2
- package/project/.sdk/tm/py/pkg/utility/voxgig_struct/voxgig_struct.py +780 -529
- package/project/.sdk/tm/py/src/feature/secrets/.gitkeep +0 -0
- package/project/.sdk/tm/py/test/feature/__init__.py +0 -0
- package/project/.sdk/tm/py/test/feature/secrets/__init__.py +0 -0
- package/project/.sdk/tm/py/test/feature/secrets/test_secrets.py +337 -0
- package/project/.sdk/tm/py/test/omni.py +415 -0
- package/project/.sdk/tm/py/test/test_omni_smoke.py +74 -0
- package/project/.sdk/tm/py/test/test_primary_utility.py +144 -668
- package/project/.sdk/tm/py/test/test_struct_utility.py +74 -27
- package/project/.sdk/tm/py/test/voxgig_omni/__init__.py +62 -0
- package/project/.sdk/tm/py/test/voxgig_omni/runner.py +580 -0
- package/project/.sdk/tm/py/test/voxgig_omni/util.py +252 -0
- package/project/.sdk/tm/rb/test/omni.rb +505 -0
- package/project/.sdk/tm/rb/test/omni_smoke_test.rb +72 -0
- package/project/.sdk/tm/rb/test/primary_utility_test.rb +174 -560
- package/project/.sdk/tm/rb/test/struct_utility_test.rb +13 -7
- package/project/.sdk/tm/rb/test/vendor/omni/runner.rb +493 -0
- package/project/.sdk/tm/rb/test/vendor/omni/util.rb +199 -0
- package/project/.sdk/tm/rb/test/vendor/omni/voxgig_omni.rb +15 -0
- package/project/.sdk/tm/rb/utility/prepare_method.rb +5 -1
- package/project/.sdk/tm/rust/tests/common/mod.rs +19 -242
- package/project/.sdk/tm/rust/tests/omni_resolver/mod.rs +888 -0
- package/project/.sdk/tm/rust/tests/omni_smoke_test.rs +286 -0
- package/project/.sdk/tm/rust/tests/primary_utility_test.rs +318 -312
- package/project/.sdk/tm/rust/tests/struct_utility_test.rs +66 -28
- package/project/.sdk/tm/rust/tests/vendor/omni/json.rs +412 -0
- package/project/.sdk/tm/rust/tests/vendor/omni/mod.rs +38 -0
- package/project/.sdk/tm/rust/tests/vendor/omni/regex.rs +392 -0
- package/project/.sdk/tm/rust/tests/vendor/omni/runner.rs +1001 -0
- package/project/.sdk/tm/rust/tests/vendor/omni/util.rs +161 -0
- package/project/.sdk/tm/rust/utility/prepare_method.rs +5 -1
- package/project/.sdk/tm/scala/Makefile +16 -6
- package/project/.sdk/tm/scala/sdktest/OmniResolver.scala +497 -0
- package/project/.sdk/tm/scala/sdktest/OmniSmoke.scala +192 -0
- package/project/.sdk/tm/scala/sdktest/PrimaryCorpus.scala +47 -19
- package/project/.sdk/tm/scala/sdktest/StructCorpus.scala +0 -0
- package/project/.sdk/tm/scala/sdktest/vendor/omni/Json.scala +229 -0
- package/project/.sdk/tm/scala/sdktest/vendor/omni/Runner.scala +552 -0
- package/project/.sdk/tm/scala/sdktest/vendor/omni/Util.scala +104 -0
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/Struct/Constants.swift +10 -0
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/Struct/Inject.swift +28 -5
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/Struct/Injection.swift +5 -1
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/Struct/Minor.swift +4 -1
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/Struct/Validate.swift +15 -5
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/utility/Prepare.swift +6 -1
- package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/OmniResolver.swift +474 -0
- package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/OmniSmokeTest.swift +107 -0
- package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/PrimaryUtilityTest.swift +141 -178
- package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/Runner.swift +17 -113
- package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/StructUtilityTest.swift +295 -446
- package/project/.sdk/tm/swift/Tests/vendor/omni/Json.swift +364 -0
- package/project/.sdk/tm/swift/Tests/vendor/omni/Runner.swift +730 -0
- package/project/.sdk/tm/swift/Tests/vendor/omni/Util.swift +162 -0
- package/project/.sdk/tm/ts/src/feature/secrets/SecretsFeature.ts +7 -0
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Capability.ts +148 -0
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Catalog.ts +55 -0
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Config.ts +344 -0
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Depend.ts +205 -0
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Env.ts +138 -0
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Export.ts +46 -0
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/FeatureHost.ts +349 -0
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Graph.ts +181 -0
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Host.ts +1132 -0
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Order.ts +177 -0
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Point.ts +119 -0
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Ref.ts +102 -0
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Resolve.ts +61 -0
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Types.ts +112 -0
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Version.ts +100 -0
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/index.ts +37 -0
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/Sekreto.ts +163 -30
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/index.ts +27 -22
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/aws.ts +26 -36
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/azuresecrets.ts +19 -21
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/boru.ts +36 -17
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/doppler.ts +14 -21
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/gcpsecrets.ts +27 -27
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/hashicorp.ts +25 -39
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/httpjson.ts +99 -0
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/infisical.ts +14 -16
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/onepassword.ts +15 -22
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/secretspec.ts +98 -0
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{Sigv4.ts → plugins/sigv4.ts} +7 -6
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/addr.ts +97 -23
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/builtin.ts +37 -0
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/dotenv.ts +4 -17
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/env.ts +4 -16
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/file.ts +11 -25
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/memory.ts +6 -23
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/support.ts +106 -39
- package/project/.sdk/tm/ts/src/utility/StructUtility.ts +3 -3
- package/project/.sdk/tm/ts/test/omni.ts +104 -32
- package/project/.sdk/tm/ts/test/utility/StructUtility.test.ts +27 -0
- package/project/.sdk/tm/ts/test/vendor/omni/Runner.ts +32 -5
- package/project/.sdk/tm/ts/test/vendor/omni/Util.ts +2 -2
- package/project/.sdk/tm/ts/test/vendor/omni/index.ts +2 -2
- package/project/.sdk/tm/zig/Makefile +15 -1
- package/project/.sdk/tm/zig/build.zig +23 -5
- package/project/.sdk/tm/zig/core/helpers.zig +52 -11
- package/project/.sdk/tm/zig/core/mem.zig +17 -1
- package/project/.sdk/tm/zig/core/utility.zig +23 -19
- package/project/.sdk/tm/zig/feature/audit.zig +2 -2
- package/project/.sdk/tm/zig/feature/cache.zig +2 -2
- package/project/.sdk/tm/zig/feature/debug.zig +5 -5
- package/project/.sdk/tm/zig/feature/netsim.zig +2 -2
- package/project/.sdk/tm/zig/feature/paging.zig +2 -2
- package/project/.sdk/tm/zig/feature/proxy.zig +15 -8
- package/project/.sdk/tm/zig/feature/streaming.zig +5 -5
- package/project/.sdk/tm/zig/feature/support.zig +3 -3
- package/project/.sdk/tm/zig/feature/telemetry.zig +5 -5
- package/project/.sdk/tm/zig/feature/test.zig +10 -5
- package/project/.sdk/tm/zig/test/fh.zig +10 -10
- package/project/.sdk/tm/zig/test/gotcha_test.zig +5 -5
- package/project/.sdk/tm/zig/test/omniresolver.zig +515 -0
- package/project/.sdk/tm/zig/test/omnismoke_test.zig +284 -0
- package/project/.sdk/tm/zig/test/pipeline_test.zig +8 -8
- package/project/.sdk/tm/zig/test/primary_utility_test.zig +145 -155
- package/project/.sdk/tm/zig/test/struct_corpus.zig +264 -187
- package/project/.sdk/tm/zig/test/vendor/omni/omni.zig +1314 -0
- package/project/.sdk/tm/zig/test/vendor/omni/regex.zig +446 -0
- package/project/.sdk/tm/zig/utility/voxgigstruct/regex.zig +7 -4
- package/project/.sdk/tm/zig/utility/voxgigstruct/struct.zig +356 -157
- package/project/sdkgen-package.json +1 -1
- package/src/action/doctor.ts +66 -2
- package/src/helpers/naming.ts +4 -2
- package/project/.sdk/tm/c/tests/runner.h +0 -274
- package/project/.sdk/tm/cpp/test/struct_runner.hpp +0 -314
- package/project/.sdk/tm/csharp/test/StructRunner.cs +0 -276
- package/project/.sdk/tm/dart/test/runner.dart +0 -406
- package/project/.sdk/tm/dart/test/struct_corpus.dart +0 -531
- package/project/.sdk/tm/elixir/test/support/struct_corpus.ex +0 -1088
- package/project/.sdk/tm/go/test/runner_test.go +0 -629
- package/project/.sdk/tm/go/test/struct_runner_test.go +0 -1094
- package/project/.sdk/tm/java/test/StructRunner.java +0 -281
- package/project/.sdk/tm/js/test/runner.js +0 -387
- package/project/.sdk/tm/kotlin/test/StructRunner.kt +0 -177
- package/project/.sdk/tm/lua/test/struct_runner.lua +0 -602
- package/project/.sdk/tm/ocaml/test/corpus_runner.ml +0 -185
- package/project/.sdk/tm/perl/t/struct_runner.pm +0 -275
- package/project/.sdk/tm/php/test/StructRunner.php +0 -275
- package/project/.sdk/tm/py/test/struct_runner.py +0 -411
- package/project/.sdk/tm/rb/test/struct_runner.rb +0 -309
- package/project/.sdk/tm/rust/tests/struct_runner/mod.rs +0 -424
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/Registry.ts +0 -90
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/http.ts +0 -66
- package/project/.sdk/tm/ts/test/vendor/omni/compat.ts +0 -188
- package/project/.sdk/tm/zig/test/struct_runner.zig +0 -464
|
@@ -1,15 +1,22 @@
|
|
|
1
1
|
# Makefile for the ProjectName OCaml SDK (generated by @voxgig/sdkgen).
|
|
2
2
|
#
|
|
3
3
|
# The SDK is dependency-free: it compiles with the stock bytecode compiler
|
|
4
|
-
# (ocamlc) — no opam packages, no dune.
|
|
4
|
+
# (ocamlc) — no opam packages, no dune. Four test executables are built:
|
|
5
5
|
# run_sdk_test — the SDK pipeline + feature suite (Testutil harness)
|
|
6
|
+
# run_omni_smoke — the vendored omni runner's own failure paths
|
|
6
7
|
# run_struct_corpus — the shared voxgig/struct JSON corpus
|
|
8
|
+
# run_primary_corpus — the shared primary-utility JSON corpus
|
|
9
|
+
#
|
|
10
|
+
# The two corpus suites run on the VENDORED @voxgig/omni engine
|
|
11
|
+
# (test/vendor/omni/omni.ml), driven through its native API by the local
|
|
12
|
+
# adapter test/omni_resolver.ml. Never edit anything under test/vendor —
|
|
13
|
+
# it is resynced from upstream by the sdkgen vendor tool.
|
|
7
14
|
#
|
|
8
15
|
# Entity modules (sdk_entity_*.ml) and per-entity tests are discovered by
|
|
9
16
|
# wildcard; they are mutually independent so their relative order is free.
|
|
10
17
|
|
|
11
18
|
OCAMLC = ocamlc
|
|
12
|
-
INC = -I utility -I . -I test
|
|
19
|
+
INC = -I utility -I . -I test -I test/vendor/omni
|
|
13
20
|
|
|
14
21
|
# The shared JSON corpus lives in the sibling .sdk workspace.
|
|
15
22
|
CORPUS = ../.sdk/test/test.json
|
|
@@ -17,6 +24,10 @@ CORPUS = ../.sdk/test/test.json
|
|
|
17
24
|
RUNTIME = utility/vregex.ml utility/voxgig_struct.ml sdk_json.ml \
|
|
18
25
|
sdk_types.ml sdk_helpers.ml sdk_runtime.ml sdk_features.ml
|
|
19
26
|
|
|
27
|
+
# The vendored corpus engine plus the adapter that drives it. Order matters:
|
|
28
|
+
# the adapter references the vendored module.
|
|
29
|
+
OMNI = test/vendor/omni/omni.ml test/omni_resolver.ml
|
|
30
|
+
|
|
20
31
|
ENTITIES = $(sort $(wildcard sdk_entity_*.ml))
|
|
21
32
|
|
|
22
33
|
SDK = $(RUNTIME) sdk_config.ml $(ENTITIES) sdk_client.ml sdk_error.ml
|
|
@@ -33,32 +44,45 @@ SDK_TEST = $(RUNTIME) sdk_config.ml $(ENTITIES) sdk_client.ml sdk_error.ml \
|
|
|
33
44
|
test/t_pipeline.ml test/t_feature.ml test/custom_utility.ml \
|
|
34
45
|
$(ENTITY_TESTS) $(DOC_TESTS) test/t_main.ml
|
|
35
46
|
|
|
36
|
-
|
|
37
|
-
|
|
47
|
+
# The struct corpus needs only the struct library and the corpus engine —
|
|
48
|
+
# omni carries its own JSON reader and regex engine, so nothing of the SDK
|
|
49
|
+
# runtime is linked here.
|
|
50
|
+
CORPUS_SRC = utility/vregex.ml utility/voxgig_struct.ml \
|
|
51
|
+
$(OMNI) test/struct_corpus.ml
|
|
38
52
|
|
|
39
53
|
# The primary-utility corpus needs the whole SDK, because it drives the SDK's
|
|
40
54
|
# own request-shaping utilities — not just the struct library.
|
|
41
55
|
PRIMARY_SRC = $(RUNTIME) sdk_config.ml $(ENTITIES) sdk_client.ml sdk_error.ml \
|
|
42
|
-
|
|
56
|
+
$(OMNI) test/primary_utility_test.ml
|
|
57
|
+
|
|
58
|
+
# The runner's own smoke test: an in-memory spec, no fixture file.
|
|
59
|
+
SMOKE_SRC = utility/vregex.ml utility/voxgig_struct.ml \
|
|
60
|
+
$(OMNI) test/omni_smoke_test.ml
|
|
43
61
|
|
|
44
|
-
.PHONY: test test-sdk test-corpus test-primary build lint clean
|
|
62
|
+
.PHONY: test test-sdk test-omni test-corpus test-primary build lint clean
|
|
45
63
|
|
|
46
|
-
test: test-sdk test-corpus test-primary
|
|
64
|
+
test: test-sdk test-omni test-corpus test-primary
|
|
47
65
|
|
|
48
66
|
test-sdk: run_sdk_test
|
|
49
67
|
./run_sdk_test
|
|
50
68
|
|
|
69
|
+
test-omni: run_omni_smoke
|
|
70
|
+
./run_omni_smoke
|
|
71
|
+
|
|
51
72
|
test-corpus: run_struct_corpus
|
|
52
73
|
./run_struct_corpus $(CORPUS)
|
|
53
74
|
|
|
75
|
+
test-primary: run_primary_corpus
|
|
76
|
+
./run_primary_corpus $(CORPUS)
|
|
77
|
+
|
|
54
78
|
run_sdk_test: $(SDK_TEST)
|
|
55
79
|
$(OCAMLC) $(INC) $(SDK_TEST) -o run_sdk_test
|
|
56
80
|
|
|
57
|
-
|
|
58
|
-
$(OCAMLC)
|
|
81
|
+
run_omni_smoke: $(SMOKE_SRC)
|
|
82
|
+
$(OCAMLC) $(INC) $(SMOKE_SRC) -o run_omni_smoke
|
|
59
83
|
|
|
60
|
-
|
|
61
|
-
|
|
84
|
+
run_struct_corpus: $(CORPUS_SRC)
|
|
85
|
+
$(OCAMLC) $(INC) $(CORPUS_SRC) -o run_struct_corpus
|
|
62
86
|
|
|
63
87
|
run_primary_corpus: $(PRIMARY_SRC)
|
|
64
88
|
$(OCAMLC) $(INC) $(PRIMARY_SRC) -o run_primary_corpus
|
|
@@ -71,4 +95,5 @@ lint:
|
|
|
71
95
|
|
|
72
96
|
clean:
|
|
73
97
|
rm -f *.cmi *.cmo test/*.cmi test/*.cmo utility/*.cmi utility/*.cmo \
|
|
74
|
-
|
|
98
|
+
test/vendor/omni/*.cmi test/vendor/omni/*.cmo \
|
|
99
|
+
run_sdk_test run_omni_smoke run_struct_corpus run_primary_corpus a.out
|
|
@@ -0,0 +1,284 @@
|
|
|
1
|
+
(* The corpus test runner: vendored @voxgig/omni driven through its NATIVE
|
|
2
|
+
* API (`Omni.make_runner` / `runpack.runsetflags_args`), presented to the
|
|
3
|
+
* corpus suites in the shape they already use (`spec`, `getset`, `runset`,
|
|
4
|
+
* `runset_args`, `report`). No compat shim is vendored: the adapter below IS
|
|
5
|
+
* the whole bridge, per language, per the vendor-tag rollout
|
|
6
|
+
* (docs/design/vendor-tag-rollout.md, Decision 4). It supersedes the whole of
|
|
7
|
+
* the retired test/corpus_runner.ml — engine AND the handful of value
|
|
8
|
+
* helpers that sat beside it, which are re-homed here rather than left in a
|
|
9
|
+
* file whose name no longer describes anything.
|
|
10
|
+
*
|
|
11
|
+
* It is the OCaml peer of tm/rust/tests/omni_resolver/mod.rs and
|
|
12
|
+
* tm/java/test/OmniResolver.java: the portable answer for a statically typed
|
|
13
|
+
* port with no reflection — omni's `provider` is closure-based, so nothing
|
|
14
|
+
* in omni ever has to name this SDK's types.
|
|
15
|
+
*
|
|
16
|
+
* OCaml-specific decisions, each load-bearing:
|
|
17
|
+
*
|
|
18
|
+
* 1. TWO VALUE MODELS, ONE CONVERSION PAIR. `Omni.json` and the SDK's
|
|
19
|
+
* `Voxgig_struct.value` are different variants, so every crossing is an
|
|
20
|
+
* explicit `tostruct` / `toomni`. `Omni.Absent` <-> `Voxgig_struct.Noval`
|
|
21
|
+
* and `Omni.Null` <-> `Voxgig_struct.Null` keep the two no-value states
|
|
22
|
+
* the corpus distinguishes apart — which is also why OCaml needs neither
|
|
23
|
+
* go's `novalargs` spec rewrite nor lua/php's compat shim for the
|
|
24
|
+
* corpus's ZERO-ARGUMENT entries. An entry with no `in`/`args`/`ctx`
|
|
25
|
+
* reaches the subject as one `Omni.Absent`, and that becomes exactly this
|
|
26
|
+
* port's own no-value, `Noval` — so `typify` answers T_NOVAL where a null
|
|
27
|
+
* would answer T_NULL, and the arity correction is structural rather than
|
|
28
|
+
* a special case.
|
|
29
|
+
*
|
|
30
|
+
* 2. ARGUMENTS ARE WRITTEN BACK. `Omni.subject_args` (`json array -> json`)
|
|
31
|
+
* is the channel omni provides for a subject that MUTATES its arguments,
|
|
32
|
+
* which `match: {args: ...}` then asserts on — `struct/minor/setpath`
|
|
33
|
+
* (7 entries) and `struct/merge/integrity` (6) turn on it. Decision 1
|
|
34
|
+
* handed the subject a CONVERTED COPY, and `Omni.json` is immutable, so
|
|
35
|
+
* every subject here runs through `runsetflags_args` and the wrapper
|
|
36
|
+
* converts the (possibly mutated) values back into omni's own array
|
|
37
|
+
* after the call. A dynamic port's shim gets this free from shared object
|
|
38
|
+
* identity; OCaml cannot.
|
|
39
|
+
*
|
|
40
|
+
* 3. `match: {ctx: ...}` IS RETARGETED ONTO `match: {args: {"0": ...}}`.
|
|
41
|
+
* The one place this port cannot follow canonical omni as written, and a
|
|
42
|
+
* VALUE-SEMANTICS consequence, not a choice. omni's `drive` stores the
|
|
43
|
+
* contextified first argument as `entry.ctx` and as `args[0]` — two
|
|
44
|
+
* copies of an immutable value — and `checkresult` reads `entry.ctx` for
|
|
45
|
+
* the ctx base. A subject's post-call writes (decision 2) can never reach
|
|
46
|
+
* that copy, and NINE `primary` entries assert exactly the post-call
|
|
47
|
+
* state (makeRequest, makeResponse, makeSpec, param, prepareAuth,
|
|
48
|
+
* resultBody, resultHeaders, transformRequest, transformResponse).
|
|
49
|
+
* `args[0]` IS the ctx of a ctx entry (omni itself sets
|
|
50
|
+
* `args = [entry.ctx]`), and the runner reads that array back after an
|
|
51
|
+
* args-subject call — so moving the assertion from `ctx` to `args.0`
|
|
52
|
+
* reads the SAME map, post-call, and preserves every leaf: nothing is
|
|
53
|
+
* dropped, weakened or skipped. `retargetctx` below does that rewrite on
|
|
54
|
+
* the spec handed to the engine. Rust and Swift face the identical
|
|
55
|
+
* problem and answer it identically; the upstream fix is for the port's
|
|
56
|
+
* `drive` to re-point `entry.ctx` at the returned `args[0]`, the way JS
|
|
57
|
+
* object identity does implicitly — a follow-up, never a hand-edit of a
|
|
58
|
+
* vendored file.
|
|
59
|
+
*
|
|
60
|
+
* 4. KEY ORDER AND NUMBERS NEED NOTHING. omni's OCaml port models a map as
|
|
61
|
+
* an ordered assoc list built in document order by its own parser, and
|
|
62
|
+
* compares maps order-independently (`deepequal`); this port's `omap` is
|
|
63
|
+
* also insertion-ordered. Both read every JSON number as `float`. So the
|
|
64
|
+
* round trip is lossless in both directions — unlike rust (BTreeMap) or
|
|
65
|
+
* go/csharp/java (integral doubles).
|
|
66
|
+
*
|
|
67
|
+
* 5. SUBJECT FAILURES ARRIVE AS `Failure`. omni's `errmessage` understands
|
|
68
|
+
* `Omni_error` and `Failure` and renders anything else through
|
|
69
|
+
* `Printexc`, which would turn `Voxgig_struct.Struct_error "Expected
|
|
70
|
+
* string, ..."` into `Voxgig_struct.Struct_error("Expected string, ...")`
|
|
71
|
+
* and break the 50-odd `validate`/`transform` entries that match on the
|
|
72
|
+
* message. So the wrappers translate `Struct_error` to `Failure`.
|
|
73
|
+
* `Omni_error` is deliberately NOT used: omni re-raises that as a runner
|
|
74
|
+
* error rather than treating it as a candidate for an `err` expectation.
|
|
75
|
+
* An SDK-branded error is translated the same way at the primary suite's
|
|
76
|
+
* call site, which is where `Sdk_types` is in scope.
|
|
77
|
+
*
|
|
78
|
+
* 6. FAILURES ARE ACCUMULATED, NOT RAISED. omni stops a group at its first
|
|
79
|
+
* bad entry and raises; the corpus suites report the whole corpus in one
|
|
80
|
+
* run. `drive` records the message and carries on, so one run still names
|
|
81
|
+
* every broken GROUP. A group that is ABSENT from the corpus, or present
|
|
82
|
+
* with an empty set, is recorded in `skipped` and printed by `report` —
|
|
83
|
+
* named out loud, never a silent vacuous pass. *)
|
|
84
|
+
|
|
85
|
+
module O = Omni
|
|
86
|
+
module V = Voxgig_struct
|
|
87
|
+
|
|
88
|
+
(* The sentinels, under the names the corpus suites already use. *)
|
|
89
|
+
let nullmark = O.nullmark
|
|
90
|
+
let undefmark = O.undefmark
|
|
91
|
+
let existsmark = O.existsmark
|
|
92
|
+
|
|
93
|
+
(* ---------------- value model conversion (decision 1) ---------------- *)
|
|
94
|
+
|
|
95
|
+
let rec tostruct (value : O.json) : V.value =
|
|
96
|
+
match value with
|
|
97
|
+
| O.Absent -> V.Noval
|
|
98
|
+
| O.Null -> V.Null
|
|
99
|
+
| O.Bool flag -> V.Bool flag
|
|
100
|
+
| O.Num entry -> V.Num entry
|
|
101
|
+
| O.Str text -> V.Str text
|
|
102
|
+
| O.JList entries -> V.List (ref (List.map tostruct entries))
|
|
103
|
+
| O.JMap entries -> V.Map { V.entries = List.map (fun (k, e) -> (k, tostruct e)) entries }
|
|
104
|
+
|
|
105
|
+
let rec toomni (value : V.value) : O.json =
|
|
106
|
+
match value with
|
|
107
|
+
| V.Noval -> O.Absent
|
|
108
|
+
| V.Null -> O.Null
|
|
109
|
+
| V.Bool flag -> O.Bool flag
|
|
110
|
+
| V.Num entry -> O.Num entry
|
|
111
|
+
| V.Str text -> O.Str text
|
|
112
|
+
| V.List entries -> O.JList (List.map toomni !entries)
|
|
113
|
+
| V.Map m -> O.JMap (List.map (fun (k, e) -> (k, toomni e)) m.V.entries)
|
|
114
|
+
(* Neither can appear in a JSON corpus, and no subject here returns one;
|
|
115
|
+
* rendered rather than dropped so an unexpected one FAILS visibly instead
|
|
116
|
+
* of vanishing into a null. *)
|
|
117
|
+
| V.Func _ -> O.Str "[Function]"
|
|
118
|
+
| V.Sentinel tag -> O.Str tag
|
|
119
|
+
|
|
120
|
+
(* ---------------- value helpers (re-homed from corpus_runner) -------- *)
|
|
121
|
+
|
|
122
|
+
(* Raw property read: absent answers Noval, never an alt. *)
|
|
123
|
+
let getp (value : V.value) (key : string) : V.value =
|
|
124
|
+
match value with
|
|
125
|
+
| V.Map m -> (match V.omap_get m key with Some x -> x | None -> V.Noval)
|
|
126
|
+
| _ -> V.Noval
|
|
127
|
+
|
|
128
|
+
let hasp (value : V.value) (key : string) : bool =
|
|
129
|
+
match value with V.Map m -> V.omap_has m key | _ -> false
|
|
130
|
+
|
|
131
|
+
let omap_v (pairs : (string * V.value) list) : V.value =
|
|
132
|
+
let m = V.empty_map () in
|
|
133
|
+
List.iter (fun (k, v) -> ignore (V.setprop m (V.Str k) v)) pairs;
|
|
134
|
+
m
|
|
135
|
+
|
|
136
|
+
let default_injdef () : V.injdef =
|
|
137
|
+
{ V.d_meta = V.Noval; V.d_extra = V.Noval; V.d_errs = V.Noval; V.d_modify = None;
|
|
138
|
+
V.d_handler = None; V.d_base = V.Noval; V.d_dparent = V.Noval; V.d_dpath = V.Noval;
|
|
139
|
+
V.d_key = V.Noval }
|
|
140
|
+
|
|
141
|
+
(* ---------------- the run ------------------------------------------- *)
|
|
142
|
+
|
|
143
|
+
type run = {
|
|
144
|
+
pack : O.runpack;
|
|
145
|
+
mutable pass : int; (* corpus CASES executed and passed *)
|
|
146
|
+
mutable groups : int; (* corpus groups driven *)
|
|
147
|
+
mutable failures : string list;
|
|
148
|
+
mutable skipped : string list;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
(* Every hook is optional and this SDK needs none of them: subjects are
|
|
152
|
+
* passed explicitly per group (so `subject` is unused), the primary suite
|
|
153
|
+
* builds its own per-section client from the corpus DEF.setup block (so
|
|
154
|
+
* `client`/`inject` are unused), contexts stay maps across the runner
|
|
155
|
+
* (decision 3, so `contextify` is unused), and no corpus entry asserts on
|
|
156
|
+
* an error CODE, so omni's own {name,message} errify is exactly right. *)
|
|
157
|
+
let provider = O.empty_provider
|
|
158
|
+
|
|
159
|
+
let make_run_spec (spec : O.json) (name : string) : run =
|
|
160
|
+
let runner = O.make_runner_spec spec provider in
|
|
161
|
+
{ pack = runner name None; pass = 0; groups = 0; failures = []; skipped = [] }
|
|
162
|
+
|
|
163
|
+
let make_run (testfile : string) (name : string) : run =
|
|
164
|
+
make_run_spec (O.loadspec testfile) name
|
|
165
|
+
|
|
166
|
+
(* The resolved section of the spec (omni's `primary.<name>`, then `<name>`,
|
|
167
|
+
* then the whole spec). *)
|
|
168
|
+
let spec (r : run) : O.json = r.pack.O.spec
|
|
169
|
+
|
|
170
|
+
(* A named group, by a path of keys from the resolved section. *)
|
|
171
|
+
let getset (r : run) (keys : string list) : O.json =
|
|
172
|
+
List.fold_left (fun acc key -> O.jget acc key) (spec r) keys
|
|
173
|
+
|
|
174
|
+
(* A corpus group authored as ONE `{in, out}` pair rather than a set —
|
|
175
|
+
* `merge/basic`, `inject/basic`, `transform/basic`, `walk/log`. Wrapped into
|
|
176
|
+
* a one-entry set so it runs through the SAME engine as everything else
|
|
177
|
+
* instead of a bespoke code path beside it. `out` selects a sub-path of the
|
|
178
|
+
* authored `out` (walk/log asserts only on `out.after`). *)
|
|
179
|
+
let single ?(out = []) (node : O.json) : O.json =
|
|
180
|
+
let expected = List.fold_left (fun acc key -> O.jget acc key) (O.jget node "out") out in
|
|
181
|
+
O.JMap [ ("set", O.JList [ O.JMap [ ("in", O.jget node "in"); ("out", expected) ] ]) ]
|
|
182
|
+
|
|
183
|
+
(* ---------------- decision 3: retarget match.ctx --------------------- *)
|
|
184
|
+
|
|
185
|
+
let retargetctx (testspec : O.json) : O.json =
|
|
186
|
+
match testspec with
|
|
187
|
+
| O.JMap fields -> (
|
|
188
|
+
match O.jget testspec "set" with
|
|
189
|
+
| O.JList entries ->
|
|
190
|
+
let rewrite raw =
|
|
191
|
+
let check = O.jget raw "match" in
|
|
192
|
+
if O.ismap raw && O.ismap check && O.jhas check "ctx" && not (O.jhas check "args")
|
|
193
|
+
&& (O.jhas raw "ctx" || O.jhas raw "args")
|
|
194
|
+
then begin
|
|
195
|
+
(* Drop the original leaf: it would read the stale pre-call copy
|
|
196
|
+
* omni keeps in `entry.ctx`. *)
|
|
197
|
+
let trimmed =
|
|
198
|
+
match check with
|
|
199
|
+
| O.JMap kv -> O.JMap (List.filter (fun (k, _) -> k <> "ctx") kv)
|
|
200
|
+
| other -> other
|
|
201
|
+
in
|
|
202
|
+
let retargeted = O.jset trimmed "args" (O.JMap [ ("0", O.jget check "ctx") ]) in
|
|
203
|
+
O.jset raw "match" retargeted
|
|
204
|
+
end
|
|
205
|
+
else raw
|
|
206
|
+
in
|
|
207
|
+
let rewritten = O.JList (List.map rewrite entries) in
|
|
208
|
+
O.JMap (List.map (fun (k, v) -> if k = "set" then (k, rewritten) else (k, v)) fields)
|
|
209
|
+
| _ -> testspec)
|
|
210
|
+
| _ -> testspec
|
|
211
|
+
|
|
212
|
+
(* ---------------- subject wrappers (decisions 2 and 5) --------------- *)
|
|
213
|
+
|
|
214
|
+
let guard (call : unit -> V.value) : V.value =
|
|
215
|
+
try call () with V.Struct_error message -> raise (Failure message)
|
|
216
|
+
|
|
217
|
+
let wrap1 (subject : V.value -> V.value) : O.json array -> O.json =
|
|
218
|
+
fun cells ->
|
|
219
|
+
let first = if 0 < Array.length cells then tostruct cells.(0) else V.Noval in
|
|
220
|
+
let res = guard (fun () -> subject first) in
|
|
221
|
+
if 0 < Array.length cells then cells.(0) <- toomni first;
|
|
222
|
+
toomni res
|
|
223
|
+
|
|
224
|
+
let wrapargs (subject : V.value array -> V.value) : O.json array -> O.json =
|
|
225
|
+
fun cells ->
|
|
226
|
+
let vals = Array.map tostruct cells in
|
|
227
|
+
let res = guard (fun () -> subject vals) in
|
|
228
|
+
Array.iteri (fun index v -> cells.(index) <- toomni v) vals;
|
|
229
|
+
toomni res
|
|
230
|
+
|
|
231
|
+
(* ---------------- driving one group ---------------------------------- *)
|
|
232
|
+
|
|
233
|
+
let entrycount (node : O.json) : int =
|
|
234
|
+
match O.jget node "set" with O.JList entries -> List.length entries | _ -> -1
|
|
235
|
+
|
|
236
|
+
let oneline (text : string) : string =
|
|
237
|
+
String.concat " | " (String.split_on_char '\n' text)
|
|
238
|
+
|
|
239
|
+
let drive (r : run) (nullflag : bool) (label : string) (node : O.json)
|
|
240
|
+
(call : O.json array -> O.json) : unit =
|
|
241
|
+
let count = entrycount node in
|
|
242
|
+
if count <= 0 then
|
|
243
|
+
(* Absent, malformed, or empty. NAMED, never silent: a group that stopped
|
|
244
|
+
* running is the failure mode the vendored engine exists to prevent. *)
|
|
245
|
+
r.skipped <- Printf.sprintf "%s (%s)" label
|
|
246
|
+
(if O.isabsent node then "absent from corpus"
|
|
247
|
+
else if count = 0 then "empty set" else "no set")
|
|
248
|
+
:: r.skipped
|
|
249
|
+
else begin
|
|
250
|
+
r.groups <- r.groups + 1;
|
|
251
|
+
let flags = { O.null = nullflag; O.name = Some label } in
|
|
252
|
+
let usespec = retargetctx node in
|
|
253
|
+
match r.pack.O.runsetflags_args usespec flags call with
|
|
254
|
+
| () -> r.pass <- r.pass + count
|
|
255
|
+
| exception O.Omni_error message -> r.failures <- oneline message :: r.failures
|
|
256
|
+
end
|
|
257
|
+
|
|
258
|
+
(* Run one group whose subject takes the entry's single argument. *)
|
|
259
|
+
let runset (r : run) ?(nullflag = true) (label : string) (node : O.json)
|
|
260
|
+
(subject : V.value -> V.value) : unit =
|
|
261
|
+
drive r nullflag label node (wrap1 subject)
|
|
262
|
+
|
|
263
|
+
(* Run one group whose subject takes omni's whole argument array. This is the
|
|
264
|
+
* shape the `primary` suite needs: a `ctx` entry arrives as `args.(0)`, a
|
|
265
|
+
* MAP, which the call site turns into a live context and writes the
|
|
266
|
+
* observable state back into (decisions 2 and 3). *)
|
|
267
|
+
let runset_args (r : run) ?(nullflag = true) (label : string) (node : O.json)
|
|
268
|
+
(subject : V.value array -> V.value) : unit =
|
|
269
|
+
drive r nullflag label node (wrapargs subject)
|
|
270
|
+
|
|
271
|
+
(* ---------------- reporting ------------------------------------------ *)
|
|
272
|
+
|
|
273
|
+
let report (r : run) (prefix : string) : unit =
|
|
274
|
+
List.iter (fun m -> print_endline ("FAIL " ^ m)) (List.rev r.failures);
|
|
275
|
+
if [] <> r.skipped then
|
|
276
|
+
List.iter (fun s -> print_endline ("SKIP " ^ s)) (List.rev r.skipped);
|
|
277
|
+
Printf.printf "\n%sPASS %d FAIL %d\n" prefix r.pass (List.length r.failures);
|
|
278
|
+
Printf.printf "%sGROUPS %d SKIPPED %d\n" prefix r.groups (List.length r.skipped);
|
|
279
|
+
(* A run that executes nothing is not a pass. *)
|
|
280
|
+
if 0 = r.pass then begin
|
|
281
|
+
print_endline (prefix ^ "the corpus executed no cases");
|
|
282
|
+
exit 1
|
|
283
|
+
end;
|
|
284
|
+
if [] <> r.failures then exit 1
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
(* ProjectName SDK omni runner smoke test.
|
|
2
|
+
*
|
|
3
|
+
* Smoke tests for the VENDORED omni runner itself, and for the two
|
|
4
|
+
* load-bearing decisions in Omni_resolver. A runner that cannot FAIL a bad
|
|
5
|
+
* entry would turn every corpus suite vacuously green, so the failure paths
|
|
6
|
+
* are pinned here, not just the happy one. (OCaml peer of ts's
|
|
7
|
+
* test/omni.test.ts, py's test_omni_smoke.py and lua's
|
|
8
|
+
* test/omni_smoke_test.lua.)
|
|
9
|
+
*
|
|
10
|
+
* The spec is built IN MEMORY, in omni's own value model — no fixture file,
|
|
11
|
+
* and no OMNI block (lenient v0, like the shared corpus).
|
|
12
|
+
*)
|
|
13
|
+
|
|
14
|
+
module O = Omni
|
|
15
|
+
module R = Omni_resolver
|
|
16
|
+
module V = Voxgig_struct
|
|
17
|
+
|
|
18
|
+
(* ---------------- a tiny assertion harness ---------------- *)
|
|
19
|
+
|
|
20
|
+
let npass = ref 0
|
|
21
|
+
let nfail = ref 0
|
|
22
|
+
|
|
23
|
+
let check (name : string) (cond : bool) : unit =
|
|
24
|
+
if cond then incr npass
|
|
25
|
+
else begin
|
|
26
|
+
incr nfail;
|
|
27
|
+
print_endline ("FAIL " ^ name)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
let contains (hay : string) (needle : string) : bool =
|
|
31
|
+
let hl = String.length hay and nl = String.length needle in
|
|
32
|
+
let rec go at = if at + nl > hl then false
|
|
33
|
+
else if String.sub hay at nl = needle then true else go (at + 1) in
|
|
34
|
+
nl = 0 || go 0
|
|
35
|
+
|
|
36
|
+
let onefailure (name : string) (r : R.run) (want : string) : unit =
|
|
37
|
+
match r.R.failures with
|
|
38
|
+
| [ message ] ->
|
|
39
|
+
check (name ^ ": failure mentions " ^ want) (contains message want)
|
|
40
|
+
| other ->
|
|
41
|
+
check (name ^ ": expected exactly one failure, got "
|
|
42
|
+
^ string_of_int (List.length other)) false
|
|
43
|
+
|
|
44
|
+
(* ---------------- the in-memory spec ---------------- *)
|
|
45
|
+
|
|
46
|
+
let num n = O.Num (float_of_int n)
|
|
47
|
+
|
|
48
|
+
let makespec () =
|
|
49
|
+
O.JMap [ ("primary", O.JMap [ ("smoke", O.JMap [
|
|
50
|
+
|
|
51
|
+
("basic", O.JMap [ ("set", O.JList [
|
|
52
|
+
O.JMap [ ("in", num 1); ("out", num 2) ];
|
|
53
|
+
O.JMap [ ("in", num 41); ("out", num 42) ] ]) ]);
|
|
54
|
+
|
|
55
|
+
("bad", O.JMap [ ("set", O.JList [
|
|
56
|
+
O.JMap [ ("in", num 1); ("out", num 999) ] ]) ]);
|
|
57
|
+
|
|
58
|
+
("err", O.JMap [ ("set", O.JList [
|
|
59
|
+
O.JMap [ ("in", num 0); ("err", O.Str "zero refused") ] ]) ]);
|
|
60
|
+
|
|
61
|
+
("empty", O.JMap [ ("set", O.JList []) ]);
|
|
62
|
+
|
|
63
|
+
(* Resolver decision 2: a subject that MUTATES its argument, which
|
|
64
|
+
* `match.args` then asserts on. Without the write-back this passes
|
|
65
|
+
* vacuously - the assertion would read the unmutated input. *)
|
|
66
|
+
("mutate", O.JMap [ ("set", O.JList [
|
|
67
|
+
O.JMap [ ("in", O.JMap [ ("x", num 1) ]);
|
|
68
|
+
("match", O.JMap [ ("args", O.JMap [ ("0", O.JMap [ ("x", num 2) ]) ]) ]);
|
|
69
|
+
("out", num 2) ] ]) ]);
|
|
70
|
+
|
|
71
|
+
(* Resolver decision 3: `match: {ctx: ...}` must read the POST-call ctx.
|
|
72
|
+
* omni's own `entry.ctx` is a pre-call copy, so without the retarget
|
|
73
|
+
* this entry fails. *)
|
|
74
|
+
("ctx", O.JMap [ ("set", O.JList [
|
|
75
|
+
O.JMap [ ("ctx", O.JMap [ ("a", num 1) ]);
|
|
76
|
+
("match", O.JMap [ ("ctx", O.JMap [ ("b", num 2) ]) ]);
|
|
77
|
+
("out", num 1) ] ]) ]);
|
|
78
|
+
|
|
79
|
+
]) ]) ]
|
|
80
|
+
|
|
81
|
+
let pack () : R.run = R.make_run_spec (makespec ()) "smoke"
|
|
82
|
+
|
|
83
|
+
(* ---------------- subjects ---------------- *)
|
|
84
|
+
|
|
85
|
+
let inc (v : V.value) : V.value =
|
|
86
|
+
match v with
|
|
87
|
+
| V.Num n -> if 0.0 = n then failwith "smoke: zero refused" else V.Num (n +. 1.0)
|
|
88
|
+
| other -> other
|
|
89
|
+
|
|
90
|
+
let identity (v : V.value) : V.value = v
|
|
91
|
+
|
|
92
|
+
(* Mutates its argument in place and returns the new value. *)
|
|
93
|
+
let bump (v : V.value) : V.value =
|
|
94
|
+
ignore (V.setprop v (V.Str "x") (V.Num 2.0));
|
|
95
|
+
V.Num 2.0
|
|
96
|
+
|
|
97
|
+
(* Does NOT mutate: the negative control for decision 2. *)
|
|
98
|
+
let nobump (_v : V.value) : V.value = V.Num 2.0
|
|
99
|
+
|
|
100
|
+
(* Writes a key onto the ctx map AFTER it was handed over: the positive
|
|
101
|
+
* control for decision 3. *)
|
|
102
|
+
let ctxwrite (args : V.value array) : V.value =
|
|
103
|
+
ignore (V.setprop args.(0) (V.Str "b") (V.Num 2.0));
|
|
104
|
+
V.Num 1.0
|
|
105
|
+
|
|
106
|
+
let ctxnowrite (_args : V.value array) : V.value = V.Num 1.0
|
|
107
|
+
|
|
108
|
+
(* ---------------- the tests ---------------- *)
|
|
109
|
+
|
|
110
|
+
let () =
|
|
111
|
+
(* A correct subject passes, and every case is counted. *)
|
|
112
|
+
let r = pack () in
|
|
113
|
+
R.runset r "basic" (R.getset r ["basic"]) inc;
|
|
114
|
+
check "basic: no failures" ([] = r.R.failures);
|
|
115
|
+
check "basic: both cases ran" (2 = r.R.pass);
|
|
116
|
+
|
|
117
|
+
(* A wrong result FAILS, and the resolver records it rather than
|
|
118
|
+
* swallowing it. This is the anti-vacuity check the rollout exists for. *)
|
|
119
|
+
let r = pack () in
|
|
120
|
+
R.runset r "bad" (R.getset r ["bad"]) inc;
|
|
121
|
+
onefailure "bad" r "result mismatch";
|
|
122
|
+
check "bad: no case counted as passing" (0 = r.R.pass);
|
|
123
|
+
|
|
124
|
+
(* An expected error is matched. *)
|
|
125
|
+
let r = pack () in
|
|
126
|
+
R.runset r "err" (R.getset r ["err"]) inc;
|
|
127
|
+
check "err: expected error matched" ([] = r.R.failures);
|
|
128
|
+
check "err: case counted" (1 = r.R.pass);
|
|
129
|
+
|
|
130
|
+
(* An expected error that does NOT occur must fail. *)
|
|
131
|
+
let r = pack () in
|
|
132
|
+
R.runset r "err" (R.getset r ["err"]) identity;
|
|
133
|
+
onefailure "err-missing" r "expected error did not occur";
|
|
134
|
+
|
|
135
|
+
(* A group absent from the spec is NAMED, never a silent pass. *)
|
|
136
|
+
let r = pack () in
|
|
137
|
+
R.runset r "nosuch" (R.getset r ["nosuch"]) inc;
|
|
138
|
+
check "absent: no failures" ([] = r.R.failures);
|
|
139
|
+
check "absent: nothing counted" (0 = r.R.pass);
|
|
140
|
+
check "absent: named as skipped" (1 = List.length r.R.skipped);
|
|
141
|
+
|
|
142
|
+
(* An EMPTY set is likewise named, not counted as a pass. *)
|
|
143
|
+
let r = pack () in
|
|
144
|
+
R.runset r "empty" (R.getset r ["empty"]) inc;
|
|
145
|
+
check "empty: nothing counted" (0 = r.R.pass);
|
|
146
|
+
check "empty: named as skipped" (1 = List.length r.R.skipped);
|
|
147
|
+
|
|
148
|
+
(* Decision 2: argument mutation reaches `match.args`. *)
|
|
149
|
+
let r = pack () in
|
|
150
|
+
R.runset r "mutate" (R.getset r ["mutate"]) bump;
|
|
151
|
+
check "mutate: write-back reaches match.args" ([] = r.R.failures);
|
|
152
|
+
check "mutate: case counted" (1 = r.R.pass);
|
|
153
|
+
|
|
154
|
+
let r = pack () in
|
|
155
|
+
R.runset r "mutate" (R.getset r ["mutate"]) nobump;
|
|
156
|
+
onefailure "mutate-missing" r "match failed at args.0.x";
|
|
157
|
+
|
|
158
|
+
(* Decision 3: `match.ctx` reads the POST-call ctx. *)
|
|
159
|
+
let r = pack () in
|
|
160
|
+
R.runset_args r "ctx" (R.getset r ["ctx"]) ctxwrite;
|
|
161
|
+
check "ctx: retarget reaches post-call ctx" ([] = r.R.failures);
|
|
162
|
+
check "ctx: case counted" (1 = r.R.pass);
|
|
163
|
+
|
|
164
|
+
let r = pack () in
|
|
165
|
+
R.runset_args r "ctx" (R.getset r ["ctx"]) ctxnowrite;
|
|
166
|
+
onefailure "ctx-missing" r "match failed at args.0.b";
|
|
167
|
+
|
|
168
|
+
Printf.printf "\nOMNI SMOKE: PASS %d FAIL %d\n" !npass !nfail;
|
|
169
|
+
if 0 < !nfail then exit 1
|