@voxgig/sdkgen 4.8.2 → 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 +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/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
|
@@ -1,8 +1,14 @@
|
|
|
1
1
|
package JAVAPACKAGE.sdktest;
|
|
2
2
|
|
|
3
|
-
// Shared test-runner
|
|
4
|
-
//
|
|
5
|
-
//
|
|
3
|
+
// Shared test-runner SUPPORT (vendor-tag rollout): env overrides, the
|
|
4
|
+
// sdk-test-control.json skip machinery, live pacing, the
|
|
5
|
+
// ../.sdk/test/test.json spec loader, ctx/entity conversion helpers, and
|
|
6
|
+
// the canon/jsonStr comparison helpers the feature tests use. The corpus
|
|
7
|
+
// ENGINE that used to live beside them (runset/matchDeep/matchString) is
|
|
8
|
+
// retired: both corpora now run on the vendored omni runner through
|
|
9
|
+
// OmniResolver.java. The class name is unchanged so the emitted
|
|
10
|
+
// TestEntity/TestDirect call sites (RunnerSupport.skipReason,
|
|
11
|
+
// RunnerSupport.envOverride, ...) need no churn.
|
|
6
12
|
|
|
7
13
|
import java.nio.file.Files;
|
|
8
14
|
import java.nio.file.Path;
|
|
@@ -13,7 +19,6 @@ import java.util.Map;
|
|
|
13
19
|
import java.util.Objects;
|
|
14
20
|
import java.util.TreeMap;
|
|
15
21
|
import java.util.function.Supplier;
|
|
16
|
-
import java.util.regex.Pattern;
|
|
17
22
|
|
|
18
23
|
import JAVAPACKAGE.core.Context;
|
|
19
24
|
import JAVAPACKAGE.core.Entity;
|
|
@@ -260,123 +265,6 @@ public final class RunnerSupport {
|
|
|
260
265
|
return Helpers.toMapAny(cur);
|
|
261
266
|
}
|
|
262
267
|
|
|
263
|
-
@FunctionalInterface
|
|
264
|
-
public interface RunSubject {
|
|
265
|
-
Object run(Map<String, Object> entry) throws Exception;
|
|
266
|
-
}
|
|
267
|
-
|
|
268
|
-
// runset drives a test.json entry set against a subject, mirroring the
|
|
269
|
-
// matching semantics of the go/js runners. All entry failures are
|
|
270
|
-
// reported together as one AssertionError.
|
|
271
|
-
public static void runset(Map<String, Object> testspec, RunSubject subject) {
|
|
272
|
-
if (testspec == null || !(testspec.get("set") instanceof List)) {
|
|
273
|
-
return;
|
|
274
|
-
}
|
|
275
|
-
List<Object> set = (List<Object>) testspec.get("set");
|
|
276
|
-
|
|
277
|
-
List<String> failures = new ArrayList<>();
|
|
278
|
-
|
|
279
|
-
for (int i = 0; i < set.size(); i++) {
|
|
280
|
-
Map<String, Object> entry = Helpers.toMapAny(set.get(i));
|
|
281
|
-
if (entry == null) {
|
|
282
|
-
continue;
|
|
283
|
-
}
|
|
284
|
-
|
|
285
|
-
String mark = entry.get("mark") == null ? "" : " (mark=" + entry.get("mark") + ")";
|
|
286
|
-
|
|
287
|
-
Object result = null;
|
|
288
|
-
Exception err = null;
|
|
289
|
-
try {
|
|
290
|
-
result = subject.run(entry);
|
|
291
|
-
}
|
|
292
|
-
catch (Exception e) {
|
|
293
|
-
err = e;
|
|
294
|
-
}
|
|
295
|
-
|
|
296
|
-
Object expectedErr = entry.get("err");
|
|
297
|
-
|
|
298
|
-
if (err != null) {
|
|
299
|
-
if (expectedErr != null) {
|
|
300
|
-
String errMsg = err.getMessage() == null ? String.valueOf(err) : err.getMessage();
|
|
301
|
-
if (expectedErr instanceof String
|
|
302
|
-
&& !matchString((String) expectedErr, errMsg)) {
|
|
303
|
-
failures.add("entry " + i + mark + ": error mismatch: got \"" + errMsg
|
|
304
|
-
+ "\", want contains \"" + expectedErr + "\"");
|
|
305
|
-
}
|
|
306
|
-
Map<String, Object> matchSpec = Helpers.toMapAny(entry.get("match"));
|
|
307
|
-
if (matchSpec != null) {
|
|
308
|
-
Map<String, Object> resultMap = new LinkedHashMap<>();
|
|
309
|
-
resultMap.put("in", entry.get("in"));
|
|
310
|
-
resultMap.put("out", jsonNormalize(result));
|
|
311
|
-
Map<String, Object> errRec = new LinkedHashMap<>();
|
|
312
|
-
errRec.put("message", errMsg);
|
|
313
|
-
resultMap.put("err", errRec);
|
|
314
|
-
matchDeep(failures, i, mark, matchSpec, resultMap, "");
|
|
315
|
-
}
|
|
316
|
-
continue;
|
|
317
|
-
}
|
|
318
|
-
failures.add("entry " + i + mark + ": unexpected error: " + err);
|
|
319
|
-
continue;
|
|
320
|
-
}
|
|
321
|
-
|
|
322
|
-
if (expectedErr != null) {
|
|
323
|
-
failures.add("entry " + i + mark + ": expected error containing \""
|
|
324
|
-
+ expectedErr + "\" but got result: " + jsonStr(result));
|
|
325
|
-
continue;
|
|
326
|
-
}
|
|
327
|
-
|
|
328
|
-
boolean matched = false;
|
|
329
|
-
Map<String, Object> matchSpec = Helpers.toMapAny(entry.get("match"));
|
|
330
|
-
if (matchSpec != null) {
|
|
331
|
-
Map<String, Object> resultMap = new LinkedHashMap<>();
|
|
332
|
-
resultMap.put("in", entry.get("in"));
|
|
333
|
-
resultMap.put("out", jsonNormalize(result));
|
|
334
|
-
if (entry.get("args") != null) {
|
|
335
|
-
resultMap.put("args", entry.get("args"));
|
|
336
|
-
}
|
|
337
|
-
else if (entry.get("in") != null) {
|
|
338
|
-
List<Object> args = new ArrayList<>();
|
|
339
|
-
args.add(entry.get("in"));
|
|
340
|
-
resultMap.put("args", args);
|
|
341
|
-
}
|
|
342
|
-
if (entry.get("ctx") != null) {
|
|
343
|
-
resultMap.put("ctx", entry.get("ctx"));
|
|
344
|
-
}
|
|
345
|
-
matchDeep(failures, i, mark, matchSpec, resultMap, "");
|
|
346
|
-
matched = true;
|
|
347
|
-
}
|
|
348
|
-
|
|
349
|
-
Object expectedOut = entry.get("out");
|
|
350
|
-
if (expectedOut == null && matched) {
|
|
351
|
-
continue;
|
|
352
|
-
}
|
|
353
|
-
if (expectedOut != null) {
|
|
354
|
-
Object normResult = jsonNormalize(result);
|
|
355
|
-
Object normExpected = jsonNormalize(expectedOut);
|
|
356
|
-
if (!Objects.equals(canon(normResult), canon(normExpected))) {
|
|
357
|
-
failures.add("entry " + i + mark + ": output mismatch:\n got: "
|
|
358
|
-
+ jsonStr(normResult) + "\n want: " + jsonStr(normExpected));
|
|
359
|
-
}
|
|
360
|
-
}
|
|
361
|
-
}
|
|
362
|
-
|
|
363
|
-
if (!failures.isEmpty()) {
|
|
364
|
-
throw new AssertionError(String.join("\n", failures));
|
|
365
|
-
}
|
|
366
|
-
}
|
|
367
|
-
|
|
368
|
-
public static Object jsonNormalize(Object val) {
|
|
369
|
-
if (val == null) {
|
|
370
|
-
return null;
|
|
371
|
-
}
|
|
372
|
-
try {
|
|
373
|
-
return Json.parse(Struct.jsonify(val));
|
|
374
|
-
}
|
|
375
|
-
catch (RuntimeException e) {
|
|
376
|
-
return val;
|
|
377
|
-
}
|
|
378
|
-
}
|
|
379
|
-
|
|
380
268
|
public static String jsonStr(Object val) {
|
|
381
269
|
try {
|
|
382
270
|
return Struct.jsonify(val);
|
|
@@ -419,79 +307,6 @@ public final class RunnerSupport {
|
|
|
419
307
|
return String.valueOf(v);
|
|
420
308
|
}
|
|
421
309
|
|
|
422
|
-
static void matchDeep(List<String> failures, int entryIdx, String mark,
|
|
423
|
-
Object check, Object base, String path) {
|
|
424
|
-
|
|
425
|
-
if (check == null) {
|
|
426
|
-
return;
|
|
427
|
-
}
|
|
428
|
-
|
|
429
|
-
if (check instanceof Map) {
|
|
430
|
-
for (Map.Entry<String, Object> e : ((Map<String, Object>) check).entrySet()) {
|
|
431
|
-
String childPath = path + "." + e.getKey();
|
|
432
|
-
Object baseVal = base instanceof Map
|
|
433
|
-
? ((Map<String, Object>) base).get(e.getKey()) : null;
|
|
434
|
-
matchDeep(failures, entryIdx, mark, e.getValue(), baseVal, childPath);
|
|
435
|
-
}
|
|
436
|
-
}
|
|
437
|
-
else if (check instanceof List) {
|
|
438
|
-
List<Object> checkList = (List<Object>) check;
|
|
439
|
-
for (int i = 0; i < checkList.size(); i++) {
|
|
440
|
-
String childPath = path + "[" + i + "]";
|
|
441
|
-
Object baseVal = null;
|
|
442
|
-
if (base instanceof List && i < ((List<Object>) base).size()) {
|
|
443
|
-
baseVal = ((List<Object>) base).get(i);
|
|
444
|
-
}
|
|
445
|
-
matchDeep(failures, entryIdx, mark, checkList.get(i), baseVal, childPath);
|
|
446
|
-
}
|
|
447
|
-
}
|
|
448
|
-
else {
|
|
449
|
-
if ("__EXISTS__".equals(check)) {
|
|
450
|
-
if (base == null) {
|
|
451
|
-
failures.add("entry " + entryIdx + mark + ": match " + path
|
|
452
|
-
+ ": expected value to exist but got null");
|
|
453
|
-
}
|
|
454
|
-
return;
|
|
455
|
-
}
|
|
456
|
-
if ("__UNDEF__".equals(check)) {
|
|
457
|
-
if (base != null) {
|
|
458
|
-
failures.add("entry " + entryIdx + mark + ": match " + path
|
|
459
|
-
+ ": expected null but got " + base);
|
|
460
|
-
}
|
|
461
|
-
return;
|
|
462
|
-
}
|
|
463
|
-
|
|
464
|
-
Object normCheck = jsonNormalize(check);
|
|
465
|
-
Object normBase = jsonNormalize(base);
|
|
466
|
-
|
|
467
|
-
if (!Objects.equals(canon(normCheck), canon(normBase))) {
|
|
468
|
-
if (check instanceof String && !"".equals(check)) {
|
|
469
|
-
String baseStr = Struct.stringify(base);
|
|
470
|
-
if (matchString((String) check, baseStr)) {
|
|
471
|
-
return;
|
|
472
|
-
}
|
|
473
|
-
}
|
|
474
|
-
failures.add("entry " + entryIdx + mark + ": match " + path + ": got "
|
|
475
|
-
+ jsonStr(normBase) + ", want " + jsonStr(normCheck));
|
|
476
|
-
}
|
|
477
|
-
}
|
|
478
|
-
}
|
|
479
|
-
|
|
480
|
-
// matchString checks if val matches pattern. If pattern is /regex/, use
|
|
481
|
-
// regex; otherwise do case-insensitive contains.
|
|
482
|
-
public static boolean matchString(String pattern, String val) {
|
|
483
|
-
if (pattern.length() >= 2 && pattern.startsWith("/") && pattern.endsWith("/")) {
|
|
484
|
-
try {
|
|
485
|
-
return Pattern.compile(pattern.substring(1, pattern.length() - 1))
|
|
486
|
-
.matcher(val).find();
|
|
487
|
-
}
|
|
488
|
-
catch (RuntimeException e) {
|
|
489
|
-
return false;
|
|
490
|
-
}
|
|
491
|
-
}
|
|
492
|
-
return val.toLowerCase().contains(pattern.toLowerCase());
|
|
493
|
-
}
|
|
494
|
-
|
|
495
310
|
// makeCtxFromMap creates a Context from a JSON test entry's ctx or args map.
|
|
496
311
|
public static Context makeCtxFromMap(Map<String, Object> ctxmap,
|
|
497
312
|
ProjectNameSDK client, Utility utility) {
|
|
@@ -1,14 +1,19 @@
|
|
|
1
1
|
package JAVAPACKAGE.sdktest;
|
|
2
2
|
|
|
3
|
-
// Drives the shared struct corpus (../.sdk/test/test.json, root key
|
|
4
|
-
// against the vendored struct utility
|
|
5
|
-
//
|
|
6
|
-
//
|
|
7
|
-
//
|
|
8
|
-
//
|
|
3
|
+
// Drives the shared struct corpus (../.sdk/test/test.json, root key
|
|
4
|
+
// "struct") against the vendored struct utility THROUGH the vendored omni
|
|
5
|
+
// runner (OmniResolver over test/vendor/omni) - the engine half of the
|
|
6
|
+
// retired StructRunner. Mirrors the go target's struct_utility_test.go
|
|
7
|
+
// coverage. A missing category or section FAILS (the old runner skipped it
|
|
8
|
+
// silently - a renamed fixture reported PASS while running zero
|
|
9
|
+
// assertions); a failing entry throws OmniError with the entry named.
|
|
9
10
|
|
|
10
|
-
import org.junit.jupiter.api.
|
|
11
|
+
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
|
12
|
+
import static org.junit.jupiter.api.Assertions.assertTrue;
|
|
13
|
+
|
|
14
|
+
import org.junit.jupiter.api.Assumptions;
|
|
11
15
|
import org.junit.jupiter.api.DynamicTest;
|
|
16
|
+
import org.junit.jupiter.api.Test;
|
|
12
17
|
import org.junit.jupiter.api.TestFactory;
|
|
13
18
|
|
|
14
19
|
import java.util.ArrayList;
|
|
@@ -17,15 +22,34 @@ import java.util.List;
|
|
|
17
22
|
import java.util.Locale;
|
|
18
23
|
import java.util.Map;
|
|
19
24
|
import java.util.Objects;
|
|
20
|
-
import java.util.TreeMap;
|
|
21
25
|
import java.util.function.Function;
|
|
22
26
|
|
|
27
|
+
import JAVAPACKAGE.core.Helpers;
|
|
28
|
+
import JAVAPACKAGE.core.ProjectNameSDK;
|
|
23
29
|
import JAVAPACKAGE.utility.struct.Struct;
|
|
24
30
|
|
|
25
31
|
@SuppressWarnings({"unchecked", "rawtypes"})
|
|
26
32
|
public class StructCorpusTest {
|
|
27
33
|
|
|
28
|
-
|
|
34
|
+
static final String TEST_JSON_FILE = "../.sdk/test/test.json";
|
|
35
|
+
|
|
36
|
+
private static OmniResolver.Run RUN;
|
|
37
|
+
|
|
38
|
+
static synchronized OmniResolver.Run structRun() {
|
|
39
|
+
if (RUN == null) {
|
|
40
|
+
RUN = OmniResolver
|
|
41
|
+
.makeRunner(TEST_JSON_FILE, ProjectNameSDK.testSDK())
|
|
42
|
+
.runner("struct", new LinkedHashMap<String, Object>());
|
|
43
|
+
assertNotNull(RUN.spec, "struct section not found in test.json");
|
|
44
|
+
}
|
|
45
|
+
return RUN;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/** A subject in the struct-corpus shape: one argument in, one value out. */
|
|
49
|
+
@FunctionalInterface
|
|
50
|
+
interface StructSubject {
|
|
51
|
+
Object apply(Object in) throws Exception;
|
|
52
|
+
}
|
|
29
53
|
|
|
30
54
|
private static Object getp(Object in, String key) {
|
|
31
55
|
if (in instanceof Map<?, ?> m) {
|
|
@@ -41,6 +65,33 @@ public class StructCorpusTest {
|
|
|
41
65
|
return def;
|
|
42
66
|
}
|
|
43
67
|
|
|
68
|
+
// The struct-corpus nullModifier (was StructRunner.NULL_MODIFIER): a bare
|
|
69
|
+
// "__NULL__" becomes a real null, and an embedded "__NULL__" inside a
|
|
70
|
+
// larger string is rewritten to the literal text "null". Mirrors omni's
|
|
71
|
+
// nullmodifier for struct's own Modify callback shape.
|
|
72
|
+
static final Struct.Modify NULL_MODIFIER =
|
|
73
|
+
(val, key, parent, inj, store) -> {
|
|
74
|
+
if (!(val instanceof String s)) {
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
Object repl;
|
|
78
|
+
if (OmniResolver.NULLMARK.equals(s)) {
|
|
79
|
+
repl = null;
|
|
80
|
+
}
|
|
81
|
+
else if (s.contains(OmniResolver.NULLMARK)) {
|
|
82
|
+
repl = s.replace(OmniResolver.NULLMARK, "null");
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
if (parent instanceof Map<?, ?> m) {
|
|
88
|
+
((Map<String, Object>) m).put(Objects.toString(key), repl);
|
|
89
|
+
}
|
|
90
|
+
else if (parent instanceof List<?> l && key instanceof Number n) {
|
|
91
|
+
((List<Object>) l).set(n.intValue(), repl);
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
|
|
44
95
|
@TestFactory
|
|
45
96
|
Iterable<DynamicTest> corpus() {
|
|
46
97
|
List<DynamicTest> tests = new ArrayList<>();
|
|
@@ -242,10 +293,10 @@ public class StructCorpusTest {
|
|
|
242
293
|
|
|
243
294
|
// ===== inject =====
|
|
244
295
|
// inject.string passes the nullModifier so a resolved JSON null (encoded by
|
|
245
|
-
// the runner
|
|
296
|
+
// the runner as "__NULL__") renders as the literal text "null".
|
|
246
297
|
add(tests, "inject", "string", true, in -> {
|
|
247
298
|
Map<String, Object> opts = new LinkedHashMap<>();
|
|
248
|
-
opts.put("modify",
|
|
299
|
+
opts.put("modify", NULL_MODIFIER);
|
|
249
300
|
return Struct.inject(getp(in, "val"), getp(in, "store"), opts);
|
|
250
301
|
});
|
|
251
302
|
add(tests, "inject", "deep", true, in -> Struct.inject(getp(in, "val"), getp(in, "store")));
|
|
@@ -306,46 +357,72 @@ public class StructCorpusTest {
|
|
|
306
357
|
return tests;
|
|
307
358
|
}
|
|
308
359
|
|
|
360
|
+
// The struct.nullsem section: does a PRESENT key holding a JSON null
|
|
361
|
+
// read as "no value"? Opt-in per target (create-sdkgen ships it; an
|
|
362
|
+
// older project corpus may predate it - the abort below says so OUT
|
|
363
|
+
// LOUD, as a skipped test, rather than passing vacuously). All lanes
|
|
364
|
+
// run {null: false}: without the flag the runner rewrites every null to
|
|
365
|
+
// '__NULL__' and the section asserts nothing about null at all.
|
|
366
|
+
@Test
|
|
367
|
+
public void nullsem() {
|
|
368
|
+
OmniResolver.Run run = structRun();
|
|
369
|
+
Map<String, Object> nullsem = Helpers.toMapAny(run.spec.get("nullsem"));
|
|
370
|
+
if (nullsem == null) {
|
|
371
|
+
Assumptions.abort(
|
|
372
|
+
"corpus predates struct.nullsem - refresh .sdk/test/struct from create-sdkgen");
|
|
373
|
+
}
|
|
374
|
+
Map<String, Object> flags = OmniResolver.flags("null", false);
|
|
375
|
+
|
|
376
|
+
run.runsetflags(nullsem.get("getprop"), flags, (args) -> {
|
|
377
|
+
Object in = args[0];
|
|
378
|
+
Object alt = getpDef(in, "alt", Struct.UNDEF);
|
|
379
|
+
return alt == Struct.UNDEF
|
|
380
|
+
? Struct.getprop(getp(in, "val"), getp(in, "key"))
|
|
381
|
+
: Struct.getprop(getp(in, "val"), getp(in, "key"), alt);
|
|
382
|
+
});
|
|
383
|
+
|
|
384
|
+
run.runsetflags(nullsem.get("getelem"), flags, (args) -> {
|
|
385
|
+
Object in = args[0];
|
|
386
|
+
Object alt = getpDef(in, "alt", Struct.UNDEF);
|
|
387
|
+
return alt == Struct.UNDEF
|
|
388
|
+
? Struct.getelem(getp(in, "val"), getp(in, "key"))
|
|
389
|
+
: Struct.getelem(getp(in, "val"), getp(in, "key"), alt);
|
|
390
|
+
});
|
|
391
|
+
|
|
392
|
+
run.runsetflags(nullsem.get("getpath"), flags, (args) ->
|
|
393
|
+
Struct.getpath(getp(args[0], "store"), getp(args[0], "path")));
|
|
394
|
+
|
|
395
|
+
run.runsetflags(nullsem.get("haskey"), flags, (args) ->
|
|
396
|
+
Struct.haskey(getp(args[0], "src"), getp(args[0], "key")));
|
|
397
|
+
|
|
398
|
+
run.runsetflags(nullsem.get("keysof"), flags, (args) ->
|
|
399
|
+
Struct.keysof(args[0]));
|
|
400
|
+
}
|
|
401
|
+
|
|
309
402
|
private void add(
|
|
310
403
|
List<DynamicTest> tests,
|
|
311
404
|
String category,
|
|
312
405
|
String name,
|
|
313
406
|
boolean nullFlag,
|
|
314
|
-
|
|
407
|
+
StructSubject subject) {
|
|
315
408
|
tests.add(
|
|
316
409
|
DynamicTest.dynamicTest(
|
|
317
410
|
category + "-" + name,
|
|
318
411
|
() -> {
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
412
|
+
OmniResolver.Run run = structRun();
|
|
413
|
+
Map<String, Object> cat = Helpers.toMapAny(run.spec.get(category));
|
|
414
|
+
assertNotNull(cat, "struct corpus category missing: " + category
|
|
415
|
+
+ " - check .sdk/test/struct/");
|
|
416
|
+
Map<String, Object> spec = Helpers.toMapAny(cat.get(name));
|
|
417
|
+
assertNotNull(spec, "struct corpus section missing: "
|
|
418
|
+
+ category + "." + name + " - check .sdk/test/struct/");
|
|
419
|
+
Object set = spec.get("set");
|
|
420
|
+
assertTrue(set instanceof List && !((List<Object>) set).isEmpty(),
|
|
421
|
+
"struct corpus section is EMPTY: " + category + "." + name
|
|
422
|
+
+ " - zero cases would run");
|
|
423
|
+
run.runsetflags(spec, OmniResolver.flags("null", nullFlag),
|
|
424
|
+
(args) -> subject.apply(
|
|
425
|
+
0 < args.length ? args[0] : Struct.UNDEF));
|
|
332
426
|
}));
|
|
333
427
|
}
|
|
334
|
-
|
|
335
|
-
@AfterAll
|
|
336
|
-
static void printScoreboard() {
|
|
337
|
-
int totalP = 0;
|
|
338
|
-
int totalT = 0;
|
|
339
|
-
StringBuilder banner = new StringBuilder();
|
|
340
|
-
banner.append("\n========= STRUCT CORPUS SCOREBOARD =========\n");
|
|
341
|
-
for (Map.Entry<String, StructRunner.Result> e : SCOREBOARD.entrySet()) {
|
|
342
|
-
StructRunner.Result r = e.getValue();
|
|
343
|
-
banner.append(String.format(" %-30s %4d / %4d%n", e.getKey(), r.passed, r.total));
|
|
344
|
-
totalP += r.passed;
|
|
345
|
-
totalT += r.total;
|
|
346
|
-
}
|
|
347
|
-
banner.append(String.format(" %-30s %4d / %4d%n", "TOTAL", totalP, totalT));
|
|
348
|
-
banner.append("============================================\n");
|
|
349
|
-
System.out.println(banner);
|
|
350
|
-
}
|
|
351
428
|
}
|