@voxgig/sdkgen 4.8.1 → 4.8.3
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 +2 -2
- 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/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/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 +209 -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 +151 -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 +439 -0
- package/project/.sdk/tm/go/feature/secrets/sekreto/sekreto.go +685 -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 +897 -0
- package/project/.sdk/tm/go/test/omni/util.go +360 -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 +613 -0
- package/project/.sdk/tm/js/test/vendor/omni/util.js +212 -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 +74 -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 +152 -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 +92 -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 +455 -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 +566 -0
- package/project/.sdk/tm/py/test/voxgig_omni/util.py +237 -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/test/primary_utility_test.zig +1 -1
- package/project/.sdk/tm/zig/test/struct_runner.zig +5 -4
- 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
|
@@ -0,0 +1,456 @@
|
|
|
1
|
+
-- ProjectName SDK corpus test runner: vendored @voxgig/omni driven through
|
|
2
|
+
-- its NATIVE API (`makeRunner(specref, provider)`), presented to the corpus
|
|
3
|
+
-- tests in the struct-runner shape they already use (`R.spec`, `R.runset`,
|
|
4
|
+
-- `R.runsetflags`, `R.client`). No compat shim is vendored: the adapter
|
|
5
|
+
-- below IS the whole bridge, per language, per the vendor-tag rollout
|
|
6
|
+
-- (docs/design/vendor-tag-rollout.md, Decision 4). It is the lua peer of
|
|
7
|
+
-- tm/ts/test/omni.ts / tm/py/test/omni.py, and a port of upstream omni's
|
|
8
|
+
-- own lua struct shim (voxgig/omni lua/compat/struct.lua) onto the REAL
|
|
9
|
+
-- generated SDK.
|
|
10
|
+
--
|
|
11
|
+
-- Four local decisions, all required:
|
|
12
|
+
--
|
|
13
|
+
-- 1. SPEC PATH. omni's own spec loading expects a usable path. A relative
|
|
14
|
+
-- path is absolutized against THIS module's directory (test/), so the
|
|
15
|
+
-- existing '../../.sdk/test/test.json' constant keeps working verbatim
|
|
16
|
+
-- wherever the suite is run from.
|
|
17
|
+
--
|
|
18
|
+
-- 2. PROVIDER DELEGATION. Corpus-driven contexts get `ctx.client` set to
|
|
19
|
+
-- the runner's provider (omni overwrites it on any ctx/args map entry).
|
|
20
|
+
-- A five-hook provider object HIDES the live SDK from the generated
|
|
21
|
+
-- utilities that reach through it - prepare_auth and prepare_headers via
|
|
22
|
+
-- `ctx.client:options_map()`, feature_add appending to client.features.
|
|
23
|
+
-- So the provider here is a READ-THROUGH view of the live SDK instance:
|
|
24
|
+
-- a table holding the omni hooks whose metatable delegates reads to the
|
|
25
|
+
-- SDK (`__index`) and routes writes onto it (`__newindex`) - the lua
|
|
26
|
+
-- spelling of ts's prototype delegation. (Upstream omni#56 tracks
|
|
27
|
+
-- giving the stock provider the same shape.)
|
|
28
|
+
--
|
|
29
|
+
-- 3. TWO VALUE MODELS, converted at the subject boundary. omni marks maps
|
|
30
|
+
-- and lists by METATABLE IDENTITY and models null/absent as sentinel
|
|
31
|
+
-- tables (a lua table cannot hold nil); the SDK and the vendored struct
|
|
32
|
+
-- speak dkjson's `__jsontype` convention with plain lua nil. Neither
|
|
33
|
+
-- recognises the other, so `wrapsubject` converts every argument on the
|
|
34
|
+
-- way in (tostruct) and the result on the way out (toomni), splicing
|
|
35
|
+
-- argument mutations back where omni's `match` can see them. This is
|
|
36
|
+
-- the port of upstream's compat shim, with ONE deliberate change: a
|
|
37
|
+
-- table that belongs to neither model (a live SDK object - the
|
|
38
|
+
-- provider, a Context, the utility) passes through BY REFERENCE as a
|
|
39
|
+
-- leaf, so subjects keep real object identity through `ctx.client`.
|
|
40
|
+
--
|
|
41
|
+
-- 4. NO-VALUE ARITY (the zero-argument correction six upstream compat
|
|
42
|
+
-- shims carry). An entry with no `in`/`args`/`ctx` must reach the
|
|
43
|
+
-- subject as NO value, not as one null. omni models absence as an
|
|
44
|
+
-- explicit ABSENT sentinel; the vendored struct's own NOVAL sentinel
|
|
45
|
+
-- (upstream struct/lua 0.1.1) is what an absent argument becomes, so
|
|
46
|
+
-- `typify()` answers T_noval where `typify(nil)` answers T_null. A
|
|
47
|
+
-- port without NOVAL gets trailing absent arguments TRIMMED instead,
|
|
48
|
+
-- which `select('#', ...)` reads as a zero-arity call.
|
|
49
|
+
--
|
|
50
|
+
-- THE VENDORED LUA PORT AND THE omni#54 RUNNER FIXES, checked per the
|
|
51
|
+
-- rollout: lua's `match` already reads its base directly (no clone), its
|
|
52
|
+
-- `errmessage` already keeps a message-bearing table's message (the SDK's
|
|
53
|
+
-- error type answers through __tostring), and its walkers recurse only
|
|
54
|
+
-- into omni-marked tables, so live cyclic objects are leaves to them. No
|
|
55
|
+
-- resolver workaround is needed at this tag; decision 3's leaf rule is
|
|
56
|
+
-- what keeps it that way.
|
|
57
|
+
|
|
58
|
+
local u = require("test.vendor.omni.util")
|
|
59
|
+
local Runner = require("test.vendor.omni.runner")
|
|
60
|
+
local vs = require("utility.struct.struct")
|
|
61
|
+
|
|
62
|
+
local _test_dir = debug.getinfo(1, "S").source:match("^@(.+/)") or "./"
|
|
63
|
+
|
|
64
|
+
local M = {}
|
|
65
|
+
|
|
66
|
+
M.NULLMARK = u.NULLMARK
|
|
67
|
+
M.UNDEFMARK = u.UNDEFMARK
|
|
68
|
+
M.EXISTSMARK = u.EXISTSMARK
|
|
69
|
+
M.JSON_NULL = u.NULL
|
|
70
|
+
M.ABSENT = u.ABSENT
|
|
71
|
+
|
|
72
|
+
-- omni's own model constructors and error type, re-exported for the smoke
|
|
73
|
+
-- test (an in-memory spec must be built in omni's value model).
|
|
74
|
+
M.map = u.map
|
|
75
|
+
M.list = u.list
|
|
76
|
+
M.OmniError = Runner.OmniError
|
|
77
|
+
M.isomnierror = Runner.isomnierror
|
|
78
|
+
|
|
79
|
+
--- The two value models, and the translation between them (decision 3).
|
|
80
|
+
|
|
81
|
+
local ARRAYMT = { __jsontype = "array" }
|
|
82
|
+
local OBJECTMT = { __jsontype = "object" }
|
|
83
|
+
|
|
84
|
+
--- omni's model -> struct's/SDK's.
|
|
85
|
+
---
|
|
86
|
+
--- Returns `(value, kind)` where kind is 'value', 'null' or 'absent'.
|
|
87
|
+
--- Three states, not two: omni's NULL and ABSENT both become a lua `nil`,
|
|
88
|
+
--- but they are NOT interchangeable at the call boundary - an absent
|
|
89
|
+
--- argument becomes the port's no-value, a null stays nil.
|
|
90
|
+
local function tostruct(val, seen)
|
|
91
|
+
if u.NULL == val then
|
|
92
|
+
return nil, "null"
|
|
93
|
+
end
|
|
94
|
+
if u.ABSENT == val then
|
|
95
|
+
return nil, "absent"
|
|
96
|
+
end
|
|
97
|
+
if "table" ~= type(val) then
|
|
98
|
+
return val, "value"
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
-- Decision 3's leaf rule: a table that is not omni-marked is a LIVE
|
|
102
|
+
-- object (the provider, a Context, the utility). It crosses by
|
|
103
|
+
-- reference, keeping identity and methods.
|
|
104
|
+
local islist = u.islist(val)
|
|
105
|
+
if not islist and not u.ismap(val) then
|
|
106
|
+
return val, "value"
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
seen = seen or {}
|
|
110
|
+
if nil ~= seen[val] then
|
|
111
|
+
return seen[val], "value"
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
local out = setmetatable({}, islist and ARRAYMT or OBJECTMT)
|
|
115
|
+
seen[val] = out
|
|
116
|
+
|
|
117
|
+
if islist then
|
|
118
|
+
for index = 1, #val do
|
|
119
|
+
local entry, kind = tostruct(val[index], seen)
|
|
120
|
+
-- A null INSIDE a list has to stay a slot, or the list shortens -
|
|
121
|
+
-- and the slot is the STRING "null", which is what struct/lua's own
|
|
122
|
+
-- runner put there and what the port is written against ("Preserve
|
|
123
|
+
-- null in arrays as the string "null" to avoid nil holes").
|
|
124
|
+
if "value" == kind then
|
|
125
|
+
out[index] = entry
|
|
126
|
+
else
|
|
127
|
+
out[index] = "null"
|
|
128
|
+
end
|
|
129
|
+
end
|
|
130
|
+
else
|
|
131
|
+
for key, entry in pairs(val) do
|
|
132
|
+
local converted, kind = tostruct(entry, seen)
|
|
133
|
+
if "value" == kind then
|
|
134
|
+
out[key] = converted
|
|
135
|
+
end
|
|
136
|
+
end
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
return out, "value"
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
--- Convert a value from omni's model into the SDK's (nulls become lua
|
|
143
|
+
--- nil), re-exported for test files that read spec sections directly -
|
|
144
|
+
--- DEF.setup options handed to `sdk.test`, corpus fixtures cloned before
|
|
145
|
+
--- driving a subject by hand.
|
|
146
|
+
function M.tostruct(val)
|
|
147
|
+
local out = tostruct(val)
|
|
148
|
+
return out
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
--- struct's/SDK's model -> omni's.
|
|
152
|
+
local function toomni(val, seen)
|
|
153
|
+
if "table" ~= type(val) then
|
|
154
|
+
return val
|
|
155
|
+
end
|
|
156
|
+
if u.NULL == val or u.ABSENT == val then
|
|
157
|
+
return val
|
|
158
|
+
end
|
|
159
|
+
-- Already omni-marked: a subject handed its input straight back.
|
|
160
|
+
if u.ismap(val) or u.islist(val) then
|
|
161
|
+
return val
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
-- Struct marks with __jsontype; a live object carries some OTHER
|
|
165
|
+
-- metatable and stays a leaf (decision 3). An unmarked plain table is
|
|
166
|
+
-- classified the way struct/lua's own `islist` does it: at least one
|
|
167
|
+
-- key, and the numeric keys are 1..n with nothing else (`count > 0`
|
|
168
|
+
-- matters - an unmarked EMPTY table is a MAP to struct, and calling it
|
|
169
|
+
-- a list turns every `{}` that comes back through merge or clone into
|
|
170
|
+
-- `[]`).
|
|
171
|
+
local mt = getmetatable(val)
|
|
172
|
+
local jsontype = mt and mt.__jsontype
|
|
173
|
+
if nil ~= mt and nil == jsontype then
|
|
174
|
+
return val
|
|
175
|
+
end
|
|
176
|
+
|
|
177
|
+
local islist
|
|
178
|
+
if "array" == jsontype then
|
|
179
|
+
islist = true
|
|
180
|
+
elseif "object" == jsontype then
|
|
181
|
+
islist = false
|
|
182
|
+
else
|
|
183
|
+
local count, max = 0, 0
|
|
184
|
+
islist = true
|
|
185
|
+
for key in pairs(val) do
|
|
186
|
+
if "number" ~= type(key) then
|
|
187
|
+
islist = false
|
|
188
|
+
break
|
|
189
|
+
end
|
|
190
|
+
count = count + 1
|
|
191
|
+
if key > max then
|
|
192
|
+
max = key
|
|
193
|
+
end
|
|
194
|
+
end
|
|
195
|
+
islist = islist and 0 < count and max == count
|
|
196
|
+
end
|
|
197
|
+
|
|
198
|
+
seen = seen or {}
|
|
199
|
+
if nil ~= seen[val] then
|
|
200
|
+
return seen[val]
|
|
201
|
+
end
|
|
202
|
+
|
|
203
|
+
local out = islist and u.list({}) or u.map({})
|
|
204
|
+
seen[val] = out
|
|
205
|
+
|
|
206
|
+
if islist then
|
|
207
|
+
for index = 1, #val do
|
|
208
|
+
out[index] = toomni(val[index], seen)
|
|
209
|
+
end
|
|
210
|
+
else
|
|
211
|
+
for key, entry in pairs(val) do
|
|
212
|
+
out[key] = toomni(entry, seen)
|
|
213
|
+
end
|
|
214
|
+
end
|
|
215
|
+
|
|
216
|
+
return out
|
|
217
|
+
end
|
|
218
|
+
|
|
219
|
+
--- Replace the CONTENTS of an omni table with another's, keeping the
|
|
220
|
+
--- original table's identity and its map/list metatable. Used to write an
|
|
221
|
+
--- argument mutation back where omni's `match` can see it.
|
|
222
|
+
local function splice(into, from)
|
|
223
|
+
local keys = {}
|
|
224
|
+
for key in pairs(into) do
|
|
225
|
+
keys[#keys + 1] = key
|
|
226
|
+
end
|
|
227
|
+
for _, key in ipairs(keys) do
|
|
228
|
+
into[key] = nil
|
|
229
|
+
end
|
|
230
|
+
for key, value in pairs(from) do
|
|
231
|
+
into[key] = value
|
|
232
|
+
end
|
|
233
|
+
end
|
|
234
|
+
|
|
235
|
+
--- A subject that speaks the SDK's value model on the way in and omni's on
|
|
236
|
+
--- the way out. Arity is preserved exactly: `select('#', ...)` is what
|
|
237
|
+
--- tells an entry with no `in` (zero arguments) from one with `in: null`
|
|
238
|
+
--- (one) - decision 4.
|
|
239
|
+
local function wrapsubject(subject, noval)
|
|
240
|
+
if "function" ~= type(subject) then
|
|
241
|
+
return nil
|
|
242
|
+
end
|
|
243
|
+
return function(...)
|
|
244
|
+
local count = select("#", ...)
|
|
245
|
+
local args = table.pack(...)
|
|
246
|
+
local converted, presence = {}, {}
|
|
247
|
+
for index = 1, count do
|
|
248
|
+
local value, kind = tostruct(args[index])
|
|
249
|
+
-- NOT `kind and value or nil`: when `value` is `false` that whole
|
|
250
|
+
-- expression is `nil`, so every `in: false` entry arrived as absent.
|
|
251
|
+
presence[index] = ("absent" ~= kind)
|
|
252
|
+
if "value" == kind then
|
|
253
|
+
converted[index] = value
|
|
254
|
+
end
|
|
255
|
+
end
|
|
256
|
+
|
|
257
|
+
-- An absent argument becomes the port's own no-value, so `typify()`
|
|
258
|
+
-- can answer T_noval where `typify(nil)` answers T_null. Without a
|
|
259
|
+
-- sentinel there is nothing to send, so trailing absents shorten the
|
|
260
|
+
-- call instead and the port sees a zero-arity call.
|
|
261
|
+
if nil ~= noval then
|
|
262
|
+
for index = 1, count do
|
|
263
|
+
if not presence[index] then
|
|
264
|
+
converted[index] = noval
|
|
265
|
+
end
|
|
266
|
+
end
|
|
267
|
+
else
|
|
268
|
+
while 0 < count and not presence[count] do
|
|
269
|
+
count = count - 1
|
|
270
|
+
end
|
|
271
|
+
end
|
|
272
|
+
|
|
273
|
+
local result = subject(table.unpack(converted, 1, count))
|
|
274
|
+
|
|
275
|
+
-- SDK utilities MUTATE the value they are given (result_body rewrites
|
|
276
|
+
-- ctx.result in place), and the corpus checks it via `match`. But
|
|
277
|
+
-- `tostruct` built a copy, so the mutation landed on the copy - splice
|
|
278
|
+
-- the result back into omni's own table, keeping its identity so its
|
|
279
|
+
-- map/list marking survives. Only a converted COPY is written back: a
|
|
280
|
+
-- leaf that crossed by reference (decision 3) mutated in place
|
|
281
|
+
-- already, and self-splicing it would wipe it.
|
|
282
|
+
for index = 1, count do
|
|
283
|
+
local original, mutated = args[index], converted[index]
|
|
284
|
+
if
|
|
285
|
+
"table" == type(original)
|
|
286
|
+
and "table" == type(mutated)
|
|
287
|
+
and original ~= mutated
|
|
288
|
+
and (u.ismap(original) or u.islist(original))
|
|
289
|
+
then
|
|
290
|
+
splice(original, toomni(mutated))
|
|
291
|
+
end
|
|
292
|
+
end
|
|
293
|
+
|
|
294
|
+
-- The port's no-value is omni's absent, explicitly.
|
|
295
|
+
if nil ~= noval and noval == result then
|
|
296
|
+
return u.ABSENT
|
|
297
|
+
end
|
|
298
|
+
-- A plain `nil` back from the SDK is ABSENT, not NULL. The port has
|
|
299
|
+
-- one `nil` for both, and the corpus decides which way: measured
|
|
300
|
+
-- upstream over the struct corpus, reading it as null costs 43
|
|
301
|
+
-- entries, reading it as absent costs 6 (named in the struct suite's
|
|
302
|
+
-- drop guards).
|
|
303
|
+
if nil == result then
|
|
304
|
+
return u.ABSENT
|
|
305
|
+
end
|
|
306
|
+
return toomni(result)
|
|
307
|
+
end
|
|
308
|
+
end
|
|
309
|
+
|
|
310
|
+
--- `makeContext` -> `make_context`: corpus subject names are camelCase,
|
|
311
|
+
--- the SDK utility is snake_case.
|
|
312
|
+
local function snake(name)
|
|
313
|
+
return (name:gsub("%u", function(c)
|
|
314
|
+
return "_" .. c:lower()
|
|
315
|
+
end))
|
|
316
|
+
end
|
|
317
|
+
|
|
318
|
+
--- Read `name` off the SDK's utility the way struct's runner does: the
|
|
319
|
+
--- utility itself (either spelling), then the struct utilities.
|
|
320
|
+
local function lookup(utility, name)
|
|
321
|
+
if nil == utility then
|
|
322
|
+
return nil
|
|
323
|
+
end
|
|
324
|
+
local found = utility[name]
|
|
325
|
+
if nil == found then
|
|
326
|
+
found = utility[snake(name)]
|
|
327
|
+
end
|
|
328
|
+
if nil == found and nil ~= utility.struct then
|
|
329
|
+
found = utility.struct[name]
|
|
330
|
+
end
|
|
331
|
+
return found
|
|
332
|
+
end
|
|
333
|
+
|
|
334
|
+
--- Wrap the live SDK as an omni provider (decision 2): the omni hooks sit
|
|
335
|
+
--- in the table, everything else delegates to the SDK - reads through
|
|
336
|
+
--- `__index`, writes through `__newindex`.
|
|
337
|
+
local function sdkprovider(client)
|
|
338
|
+
-- The LIVE utility, not the copy `get_utility()` hands out - the corpus
|
|
339
|
+
-- suites reach the struct utilities through `client.utility().struct`
|
|
340
|
+
-- (mirrors ts), so they are attached here once.
|
|
341
|
+
local utility = client._utility
|
|
342
|
+
if nil ~= utility and nil == utility.struct then
|
|
343
|
+
utility.struct = vs
|
|
344
|
+
end
|
|
345
|
+
|
|
346
|
+
local noval = nil ~= utility and nil ~= utility.struct
|
|
347
|
+
and utility.struct.NOVAL or nil
|
|
348
|
+
|
|
349
|
+
local provider = {}
|
|
350
|
+
|
|
351
|
+
provider.sdk = client
|
|
352
|
+
|
|
353
|
+
provider.subject = function(name)
|
|
354
|
+
return wrapsubject(lookup(utility, name), noval)
|
|
355
|
+
end
|
|
356
|
+
|
|
357
|
+
-- A DEF.client entry becomes another SDK instance - rewrapped with the
|
|
358
|
+
-- same delegating shape, not a plain hook object.
|
|
359
|
+
provider.client = function(options)
|
|
360
|
+
local opts = tostruct(options)
|
|
361
|
+
return sdkprovider(client.test(nil, opts))
|
|
362
|
+
end
|
|
363
|
+
|
|
364
|
+
-- omni's resolveargs installs `client` on a contextified map argument;
|
|
365
|
+
-- the utility is added here so corpus contexts carry both (struct's
|
|
366
|
+
-- runner handed its contexts the same pair). The ctx STAYS an omni map -
|
|
367
|
+
-- the subject adapters materialise a real Context from it, and
|
|
368
|
+
-- wrapsubject splices their writebacks into it for `match: {ctx: ...}`.
|
|
369
|
+
provider.contextify = function(val)
|
|
370
|
+
if nil ~= utility and nil ~= utility.contextify then
|
|
371
|
+
val = utility.contextify(val)
|
|
372
|
+
end
|
|
373
|
+
if u.ismap(val) then
|
|
374
|
+
rawset(val, "utility", utility)
|
|
375
|
+
end
|
|
376
|
+
return val
|
|
377
|
+
end
|
|
378
|
+
|
|
379
|
+
-- Client options may reference the runner store.
|
|
380
|
+
provider.inject = function(options, store)
|
|
381
|
+
if nil ~= utility and nil ~= utility.struct
|
|
382
|
+
and nil ~= utility.struct.inject then
|
|
383
|
+
utility.struct.inject(options, store)
|
|
384
|
+
end
|
|
385
|
+
return options
|
|
386
|
+
end
|
|
387
|
+
|
|
388
|
+
provider.utility = function()
|
|
389
|
+
return utility
|
|
390
|
+
end
|
|
391
|
+
|
|
392
|
+
return setmetatable(provider, {
|
|
393
|
+
__index = client,
|
|
394
|
+
__newindex = function(_, key, value)
|
|
395
|
+
client[key] = value
|
|
396
|
+
end,
|
|
397
|
+
})
|
|
398
|
+
end
|
|
399
|
+
|
|
400
|
+
|
|
401
|
+
--- struct's makeRunner(testfile, client) signature, backed by vendored
|
|
402
|
+
--- omni. Also accepts an already-parsed spec (omni's own capability, in
|
|
403
|
+
--- omni's value model), which keeps smoke tests free of fixture files.
|
|
404
|
+
function M.makeRunner(testfile, client)
|
|
405
|
+
local specref = testfile
|
|
406
|
+
if "string" == type(testfile) and "/" ~= testfile:sub(1, 1) then
|
|
407
|
+
specref = _test_dir .. testfile
|
|
408
|
+
end
|
|
409
|
+
|
|
410
|
+
local provider = sdkprovider(client)
|
|
411
|
+
local runner = Runner.makeRunner(specref, provider)
|
|
412
|
+
|
|
413
|
+
local utility = client._utility
|
|
414
|
+
local noval = nil ~= utility and nil ~= utility.struct
|
|
415
|
+
and utility.struct.NOVAL or nil
|
|
416
|
+
|
|
417
|
+
return function(name, store)
|
|
418
|
+
local runpack = runner(name, store or u.map({}))
|
|
419
|
+
|
|
420
|
+
-- Explicitly passed subjects speak the SDK's model too - the corpus
|
|
421
|
+
-- tests hand most subjects in per-set rather than by name.
|
|
422
|
+
local runsetflags = function(testspec, flags, testsubject)
|
|
423
|
+
return runpack.runsetflags(testspec, flags, wrapsubject(testsubject, noval))
|
|
424
|
+
end
|
|
425
|
+
|
|
426
|
+
return {
|
|
427
|
+
spec = runpack.spec,
|
|
428
|
+
runset = function(testspec, testsubject)
|
|
429
|
+
return runsetflags(testspec, {}, testsubject)
|
|
430
|
+
end,
|
|
431
|
+
runsetflags = runsetflags,
|
|
432
|
+
subject = runpack.subject,
|
|
433
|
+
-- The read-through provider: tests treat it as the SDK (its members
|
|
434
|
+
-- all resolve), and omni hands it to corpus contexts as ctx.client.
|
|
435
|
+
client = provider,
|
|
436
|
+
}
|
|
437
|
+
end
|
|
438
|
+
end
|
|
439
|
+
|
|
440
|
+
--- Convert NULLMARK sentinels back into real nulls.
|
|
441
|
+
---
|
|
442
|
+
--- NOT a delegation to omni's `nullmodifier`, deliberately: omni's
|
|
443
|
+
--- RETURNS the replacement value, while struct/lua's `inject` passes this
|
|
444
|
+
--- as its `modify` hook and expects it to MUTATE `parent[key]` in place.
|
|
445
|
+
--- It writes a real lua `nil` rather than omni's NULL sentinel, because
|
|
446
|
+
--- that is what struct's own modifier wrote and what the corpus expects
|
|
447
|
+
--- to come back out.
|
|
448
|
+
function M.nullModifier(val, key, parent)
|
|
449
|
+
if M.NULLMARK == val then
|
|
450
|
+
parent[key] = nil
|
|
451
|
+
elseif "string" == type(val) then
|
|
452
|
+
parent[key] = (val:gsub(M.NULLMARK, "null"))
|
|
453
|
+
end
|
|
454
|
+
end
|
|
455
|
+
|
|
456
|
+
return M
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
-- ProjectName SDK omni runner smoke test
|
|
2
|
+
--
|
|
3
|
+
-- Smoke tests for the vendored omni runner itself: a runner that cannot
|
|
4
|
+
-- FAIL a bad entry would turn every corpus suite vacuously green, so pin
|
|
5
|
+
-- the failure paths, not just the happy one. (Lua peer of ts's
|
|
6
|
+
-- test/omni.test.ts and py's test_omni_smoke.py.)
|
|
7
|
+
|
|
8
|
+
local assert = require("luassert")
|
|
9
|
+
|
|
10
|
+
local sdk = require("project-name-_sdk")
|
|
11
|
+
local omni = require("test.omni")
|
|
12
|
+
|
|
13
|
+
local makeRunner, isomnierror = omni.makeRunner, omni.isomnierror
|
|
14
|
+
local map, list = omni.map, omni.list
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
-- A minimal in-memory spec: no fixture file, no OMNI block (lenient v0,
|
|
18
|
+
-- like the shared corpus). Built in omni's own value model - a plain lua
|
|
19
|
+
-- table is invisible to its walkers.
|
|
20
|
+
local function makespec()
|
|
21
|
+
return map({
|
|
22
|
+
primary = map({
|
|
23
|
+
smoke = map({
|
|
24
|
+
basic = map({
|
|
25
|
+
set = list({
|
|
26
|
+
map({ ["in"] = 1, out = 2 }),
|
|
27
|
+
map({ ["in"] = 41, out = 42 }),
|
|
28
|
+
}),
|
|
29
|
+
}),
|
|
30
|
+
bad = map({
|
|
31
|
+
set = list({
|
|
32
|
+
map({ ["in"] = 1, out = 999 }),
|
|
33
|
+
}),
|
|
34
|
+
}),
|
|
35
|
+
err = map({
|
|
36
|
+
set = list({
|
|
37
|
+
map({ ["in"] = 0, err = "zero refused" }),
|
|
38
|
+
}),
|
|
39
|
+
}),
|
|
40
|
+
}),
|
|
41
|
+
}),
|
|
42
|
+
})
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
local function inc(n)
|
|
47
|
+
if 0 == n then
|
|
48
|
+
error("smoke: zero refused")
|
|
49
|
+
end
|
|
50
|
+
return n + 1
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
-- Run `fn`, requiring it to raise an omni failure whose message contains
|
|
55
|
+
-- `want`.
|
|
56
|
+
local function mustfail(fn, want)
|
|
57
|
+
local ok, err = pcall(fn)
|
|
58
|
+
assert.is_false(ok, "expected the runner to FAIL, but it passed")
|
|
59
|
+
assert.is_true(isomnierror(err),
|
|
60
|
+
"expected an omni error, got: " .. tostring(err))
|
|
61
|
+
assert.is_truthy(string.find(tostring(err), want, 1, true),
|
|
62
|
+
"expected failure containing '" .. want .. "', got: " .. tostring(err))
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
describe("omni smoke", function()
|
|
67
|
+
|
|
68
|
+
local function pack()
|
|
69
|
+
local runner = makeRunner(makespec(), sdk.test(nil, nil))
|
|
70
|
+
return runner("smoke")
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
it("runset passes a correct subject", function()
|
|
75
|
+
local R = pack()
|
|
76
|
+
R.runset(R.spec.basic, inc)
|
|
77
|
+
end)
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
it("runset fails a wrong result with an omni error", function()
|
|
81
|
+
local R = pack()
|
|
82
|
+
mustfail(function()
|
|
83
|
+
R.runset(R.spec.bad, inc)
|
|
84
|
+
end, "result mismatch")
|
|
85
|
+
end)
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
it("an expected error is matched, and a missing expected error fails", function()
|
|
89
|
+
local R = pack()
|
|
90
|
+
|
|
91
|
+
-- The expected error occurs: passes.
|
|
92
|
+
R.runset(R.spec.err, inc)
|
|
93
|
+
|
|
94
|
+
-- The expected error does NOT occur: must fail.
|
|
95
|
+
local R2 = pack()
|
|
96
|
+
mustfail(function()
|
|
97
|
+
R2.runset(R2.spec.err, function(n)
|
|
98
|
+
return n
|
|
99
|
+
end)
|
|
100
|
+
end, "expected error did not occur")
|
|
101
|
+
end)
|
|
102
|
+
|
|
103
|
+
end)
|