@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,281 +0,0 @@
|
|
|
1
|
-
package JAVAPACKAGE.sdktest;
|
|
2
|
-
|
|
3
|
-
// Vendored from the voxgig struct java port's test Runner (src/test/Runner.java),
|
|
4
|
-
// adapted for this SDK: the corpus comes from ../.sdk/test/test.json (root key
|
|
5
|
-
// "struct"), and JSON handling uses the SDK's zero-dep Json/Struct utilities
|
|
6
|
-
// instead of Gson.
|
|
7
|
-
|
|
8
|
-
import java.nio.file.Files;
|
|
9
|
-
import java.nio.file.Path;
|
|
10
|
-
import java.util.ArrayList;
|
|
11
|
-
import java.util.LinkedHashMap;
|
|
12
|
-
import java.util.List;
|
|
13
|
-
import java.util.Map;
|
|
14
|
-
import java.util.Objects;
|
|
15
|
-
import java.util.TreeMap;
|
|
16
|
-
|
|
17
|
-
import JAVAPACKAGE.utility.Json;
|
|
18
|
-
import JAVAPACKAGE.utility.struct.Struct;
|
|
19
|
-
|
|
20
|
-
@SuppressWarnings({"unchecked", "rawtypes"})
|
|
21
|
-
public class StructRunner {
|
|
22
|
-
public static final String NULLMARK = "__NULL__";
|
|
23
|
-
public static final String UNDEFMARK = "__UNDEF__";
|
|
24
|
-
public static final String EXISTSMARK = "__EXISTS__";
|
|
25
|
-
|
|
26
|
-
private static volatile Map<String, Object> CORPUS;
|
|
27
|
-
|
|
28
|
-
private StructRunner() {}
|
|
29
|
-
|
|
30
|
-
public static synchronized Map<String, Object> loadCorpus() {
|
|
31
|
-
if (CORPUS == null) {
|
|
32
|
-
try {
|
|
33
|
-
Path p = Path.of("..", ".sdk", "test", "test.json");
|
|
34
|
-
String json = Files.readString(p);
|
|
35
|
-
CORPUS = (Map<String, Object>) Json.parse(json);
|
|
36
|
-
}
|
|
37
|
-
catch (Exception e) {
|
|
38
|
-
throw new AssertionError("Failed to load struct corpus: " + e.getMessage(), e);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
return CORPUS;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
public static Map<String, Object> getSpec(String category, String name) {
|
|
45
|
-
Map<String, Object> all = loadCorpus();
|
|
46
|
-
Map<String, Object> struct = (Map<String, Object>) all.get("struct");
|
|
47
|
-
if (struct == null) {
|
|
48
|
-
return null;
|
|
49
|
-
}
|
|
50
|
-
Map<String, Object> cat = (Map<String, Object>) struct.get(category);
|
|
51
|
-
if (cat == null) {
|
|
52
|
-
return null;
|
|
53
|
-
}
|
|
54
|
-
return (Map<String, Object>) cat.get(name);
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
/** Drives a {@code subject} against a test set; collects per-entry pass/fail. */
|
|
58
|
-
@FunctionalInterface
|
|
59
|
-
public interface Subject {
|
|
60
|
-
Object apply(Object in) throws Exception;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
public static class Result {
|
|
64
|
-
public final String name;
|
|
65
|
-
public int passed;
|
|
66
|
-
public int total;
|
|
67
|
-
public final List<String> failures = new ArrayList<>();
|
|
68
|
-
|
|
69
|
-
public Result(String name) {
|
|
70
|
-
this.name = name;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
@Override
|
|
74
|
-
public String toString() {
|
|
75
|
-
return name + ": " + passed + "/" + total;
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
public static Result runset(String fullName, Map<String, Object> testspec, Subject subject) {
|
|
80
|
-
return runsetflags(fullName, testspec, true, subject);
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
public static Result runsetflags(
|
|
84
|
-
String fullName, Map<String, Object> testspec, boolean nullFlag, Subject subject) {
|
|
85
|
-
Result res = new Result(fullName);
|
|
86
|
-
Object setObj = testspec == null ? null : testspec.get("set");
|
|
87
|
-
if (!(setObj instanceof List<?> set)) {
|
|
88
|
-
return res;
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
for (int i = 0; i < set.size(); i++) {
|
|
92
|
-
Object eo = set.get(i);
|
|
93
|
-
if (!(eo instanceof Map<?, ?> em)) {
|
|
94
|
-
continue;
|
|
95
|
-
}
|
|
96
|
-
Map<String, Object> entry = (Map<String, Object>) em;
|
|
97
|
-
|
|
98
|
-
Object in =
|
|
99
|
-
entry.containsKey("in")
|
|
100
|
-
? Struct.clone(entry.get("in"))
|
|
101
|
-
: Struct.UNDEF;
|
|
102
|
-
Object expected =
|
|
103
|
-
entry.containsKey("out")
|
|
104
|
-
? entry.get("out")
|
|
105
|
-
: (nullFlag ? null : Struct.UNDEF);
|
|
106
|
-
|
|
107
|
-
// NULLMARK convention (mirrors js runner fixJSON): when nullFlag is set,
|
|
108
|
-
// every JSON null in the input and expected output is encoded as the
|
|
109
|
-
// sentinel string "__NULL__", and the function result is encoded the same
|
|
110
|
-
// way before comparison. This preserves the null-vs-absent distinction
|
|
111
|
-
// across the round-trip exactly as the canonical cross-port runner does.
|
|
112
|
-
if (nullFlag) {
|
|
113
|
-
// Only encode a *present* input; an absent `in` stays UNDEF so the
|
|
114
|
-
// subject sees "undefined" (matches the canonical runner, which clones
|
|
115
|
-
// the absent value rather than a null marker).
|
|
116
|
-
if (entry.containsKey("in")) {
|
|
117
|
-
in = fixJSON(in);
|
|
118
|
-
}
|
|
119
|
-
expected = fixJSON(expected);
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
res.total++;
|
|
123
|
-
try {
|
|
124
|
-
Object got = subject.apply(in);
|
|
125
|
-
if (nullFlag) {
|
|
126
|
-
got = fixJSON(got);
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
if (entry.containsKey("err")) {
|
|
130
|
-
res.failures.add(
|
|
131
|
-
String.format(
|
|
132
|
-
"[%d] expected err='%s' but call returned %s",
|
|
133
|
-
i, brief(entry.get("err")), brief(got)));
|
|
134
|
-
continue;
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
if (deepEqual(got, expected)) {
|
|
138
|
-
res.passed++;
|
|
139
|
-
}
|
|
140
|
-
else {
|
|
141
|
-
res.failures.add(
|
|
142
|
-
String.format(
|
|
143
|
-
"[%d] in=%s expected=%s got=%s",
|
|
144
|
-
i, brief(entry.get("in")), brief(expected), brief(got)));
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
catch (Exception ex) {
|
|
148
|
-
if (entry.containsKey("err")) {
|
|
149
|
-
// Accept any thrown error when err is true, or substring match otherwise.
|
|
150
|
-
Object expErr = entry.get("err");
|
|
151
|
-
String msg = ex.getMessage() == null ? "" : ex.getMessage();
|
|
152
|
-
if (Boolean.TRUE.equals(expErr)
|
|
153
|
-
|| (expErr instanceof String es
|
|
154
|
-
&& (es.isEmpty() || msg.contains(es)
|
|
155
|
-
|| msg.toLowerCase().contains(es.toLowerCase())))) {
|
|
156
|
-
res.passed++;
|
|
157
|
-
}
|
|
158
|
-
else {
|
|
159
|
-
res.failures.add(
|
|
160
|
-
String.format(
|
|
161
|
-
"[%d] err mismatch: expected '%s' got '%s'", i, brief(expErr), msg));
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
else {
|
|
165
|
-
res.failures.add(
|
|
166
|
-
String.format(
|
|
167
|
-
"[%d] in=%s threw=%s", i, brief(entry.get("in")), ex.getMessage()));
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
return res;
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
/** Normalize then deep-equal. Treats {@link Struct#UNDEF} as {@code null}. */
|
|
175
|
-
public static boolean deepEqual(Object a, Object b) {
|
|
176
|
-
return Objects.equals(normalize(a), normalize(b));
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
/**
|
|
180
|
-
* Encode JSON null (and the {@link Struct#UNDEF} "no value" sentinel) as the
|
|
181
|
-
* {@link #NULLMARK} string throughout a cloned structure. Mirrors
|
|
182
|
-
* {@code fixJSON} in js/test/runner.js when {@code flags.null} is true.
|
|
183
|
-
*/
|
|
184
|
-
public static Object fixJSON(Object v) {
|
|
185
|
-
if (v == null || v == Struct.UNDEF) {
|
|
186
|
-
return NULLMARK;
|
|
187
|
-
}
|
|
188
|
-
if (v instanceof Map<?, ?> m) {
|
|
189
|
-
Map<String, Object> out = new LinkedHashMap<>();
|
|
190
|
-
for (Map.Entry<?, ?> e : m.entrySet()) {
|
|
191
|
-
out.put(Objects.toString(e.getKey()), fixJSON(e.getValue()));
|
|
192
|
-
}
|
|
193
|
-
return out;
|
|
194
|
-
}
|
|
195
|
-
if (v instanceof List<?> l) {
|
|
196
|
-
List<Object> out = new ArrayList<>(l.size());
|
|
197
|
-
for (Object x : l) {
|
|
198
|
-
out.add(fixJSON(x));
|
|
199
|
-
}
|
|
200
|
-
return out;
|
|
201
|
-
}
|
|
202
|
-
return v;
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
/**
|
|
206
|
-
* Modify callback mirroring {@code nullModifier} in js/test/runner.js: a bare
|
|
207
|
-
* {@link #NULLMARK} becomes a real null, and an embedded {@link #NULLMARK}
|
|
208
|
-
* inside a larger string is rewritten to the literal text {@code "null"}.
|
|
209
|
-
*/
|
|
210
|
-
public static final Struct.Modify NULL_MODIFIER =
|
|
211
|
-
(val, key, parent, inj, store) -> {
|
|
212
|
-
if (!(val instanceof String s)) {
|
|
213
|
-
return;
|
|
214
|
-
}
|
|
215
|
-
Object repl;
|
|
216
|
-
if (NULLMARK.equals(s)) {
|
|
217
|
-
repl = null;
|
|
218
|
-
}
|
|
219
|
-
else if (s.contains(NULLMARK)) {
|
|
220
|
-
repl = s.replace(NULLMARK, "null");
|
|
221
|
-
}
|
|
222
|
-
else {
|
|
223
|
-
return;
|
|
224
|
-
}
|
|
225
|
-
if (parent instanceof Map<?, ?> m) {
|
|
226
|
-
((Map<String, Object>) m).put(Objects.toString(key), repl);
|
|
227
|
-
}
|
|
228
|
-
else if (parent instanceof List<?> l && key instanceof Number n) {
|
|
229
|
-
((List<Object>) l).set(n.intValue(), repl);
|
|
230
|
-
}
|
|
231
|
-
};
|
|
232
|
-
|
|
233
|
-
/**
|
|
234
|
-
* Canonicalize a value for comparison:
|
|
235
|
-
* numbers to Long/Double, maps to sorted TreeMap, lists recurse,
|
|
236
|
-
* {@link Struct#UNDEF} treated as {@code null}.
|
|
237
|
-
*/
|
|
238
|
-
public static Object normalize(Object v) {
|
|
239
|
-
if (v == Struct.UNDEF || v == null) {
|
|
240
|
-
return null;
|
|
241
|
-
}
|
|
242
|
-
if (v instanceof Number n) {
|
|
243
|
-
double d = n.doubleValue();
|
|
244
|
-
if (Double.isFinite(d) && Math.floor(d) == d) {
|
|
245
|
-
return (long) d;
|
|
246
|
-
}
|
|
247
|
-
return d;
|
|
248
|
-
}
|
|
249
|
-
if (v instanceof Boolean || v instanceof String) {
|
|
250
|
-
return v;
|
|
251
|
-
}
|
|
252
|
-
if (v instanceof Map<?, ?> m) {
|
|
253
|
-
Map<String, Object> out = new TreeMap<>();
|
|
254
|
-
for (Map.Entry<?, ?> e : m.entrySet()) {
|
|
255
|
-
out.put(Objects.toString(e.getKey(), ""), normalize(e.getValue()));
|
|
256
|
-
}
|
|
257
|
-
return out;
|
|
258
|
-
}
|
|
259
|
-
if (v instanceof List<?> l) {
|
|
260
|
-
List<Object> out = new ArrayList<>(l.size());
|
|
261
|
-
for (Object x : l) {
|
|
262
|
-
out.add(normalize(x));
|
|
263
|
-
}
|
|
264
|
-
return out;
|
|
265
|
-
}
|
|
266
|
-
return v.toString();
|
|
267
|
-
}
|
|
268
|
-
|
|
269
|
-
private static String brief(Object v) {
|
|
270
|
-
if (v == Struct.UNDEF) {
|
|
271
|
-
return UNDEFMARK;
|
|
272
|
-
}
|
|
273
|
-
try {
|
|
274
|
-
String s = Struct.jsonify(v);
|
|
275
|
-
return s.length() > 200 ? s.substring(0, 197) + "..." : s;
|
|
276
|
-
}
|
|
277
|
-
catch (Exception e) {
|
|
278
|
-
return Objects.toString(v);
|
|
279
|
-
}
|
|
280
|
-
}
|
|
281
|
-
}
|
|
@@ -1,387 +0,0 @@
|
|
|
1
|
-
// VERSION: @voxgig/struct 0.0.10
|
|
2
|
-
// This test utility runs the JSON-specified tests in build/test/test.json.
|
|
3
|
-
// (or .sdk/test/test.json if used in a @voxgig/sdkgen project)
|
|
4
|
-
|
|
5
|
-
const { readFileSync } = require('node:fs')
|
|
6
|
-
const { join } = require('node:path')
|
|
7
|
-
const { deepStrictEqual, fail, AssertionError } = require('node:assert')
|
|
8
|
-
|
|
9
|
-
const NULLMARK = '__NULL__' // Value is JSON null
|
|
10
|
-
const UNDEFMARK = '__UNDEF__' // Value is not present (thus, undefined).
|
|
11
|
-
const EXISTSMARK = '__EXISTS__' // Value exists (not undefined).
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
async function makeRunner(testfile, client) {
|
|
15
|
-
|
|
16
|
-
return async function runner(
|
|
17
|
-
name,
|
|
18
|
-
store,
|
|
19
|
-
) {
|
|
20
|
-
store = store || {}
|
|
21
|
-
|
|
22
|
-
const utility = client.utility()
|
|
23
|
-
const structUtils = utility.struct
|
|
24
|
-
|
|
25
|
-
let spec = resolveSpec(name, testfile)
|
|
26
|
-
let clients = await resolveClients(client, spec, store, structUtils)
|
|
27
|
-
let subject = resolveSubject(name, utility)
|
|
28
|
-
|
|
29
|
-
let runsetflags = async (
|
|
30
|
-
testspec,
|
|
31
|
-
flags,
|
|
32
|
-
testsubject
|
|
33
|
-
) => {
|
|
34
|
-
subject = testsubject || subject
|
|
35
|
-
flags = resolveFlags(flags)
|
|
36
|
-
const testspecmap = fixJSON(testspec, flags)
|
|
37
|
-
|
|
38
|
-
const testset = testspecmap.set
|
|
39
|
-
for (let entry of testset) {
|
|
40
|
-
try {
|
|
41
|
-
entry = resolveEntry(entry, flags)
|
|
42
|
-
|
|
43
|
-
let testpack = resolveTestPack(name, entry, subject, client, clients)
|
|
44
|
-
let args = resolveArgs(entry, testpack, utility, structUtils)
|
|
45
|
-
|
|
46
|
-
let res = await testpack.subject(...args)
|
|
47
|
-
res = fixJSON(res, flags)
|
|
48
|
-
entry.res = res
|
|
49
|
-
|
|
50
|
-
checkResult(entry, args, res, structUtils)
|
|
51
|
-
}
|
|
52
|
-
catch (err) {
|
|
53
|
-
if (err instanceof AssertionError) {
|
|
54
|
-
throw err
|
|
55
|
-
}
|
|
56
|
-
handleError(entry, err, structUtils)
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
let runset = async (
|
|
62
|
-
testspec,
|
|
63
|
-
testsubject
|
|
64
|
-
) => runsetflags(testspec, {}, testsubject)
|
|
65
|
-
|
|
66
|
-
const runpack = {
|
|
67
|
-
spec,
|
|
68
|
-
runset,
|
|
69
|
-
runsetflags,
|
|
70
|
-
subject,
|
|
71
|
-
client,
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
return runpack
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
function resolveSpec(name, testfile) {
|
|
79
|
-
const alltests =
|
|
80
|
-
JSON.parse(readFileSync(join(__dirname, testfile), 'utf8'))
|
|
81
|
-
|
|
82
|
-
let spec = alltests.primary?.[name] || alltests[name] || alltests
|
|
83
|
-
return spec
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
async function resolveClients(
|
|
88
|
-
client,
|
|
89
|
-
spec,
|
|
90
|
-
store,
|
|
91
|
-
structUtils
|
|
92
|
-
) {
|
|
93
|
-
|
|
94
|
-
const clients = {}
|
|
95
|
-
if (spec.DEF && spec.DEF.client) {
|
|
96
|
-
for (let cn in spec.DEF.client) {
|
|
97
|
-
const cdef = spec.DEF.client[cn]
|
|
98
|
-
const copts = cdef.test.options || {}
|
|
99
|
-
if ('object' === typeof store && structUtils?.inject) {
|
|
100
|
-
structUtils.inject(copts, store)
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
clients[cn] = await client.tester(copts)
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
return clients
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
function resolveSubject(name, container) {
|
|
111
|
-
const subject = container[name] || container.struct[name]
|
|
112
|
-
return subject
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
function resolveFlags(flags) {
|
|
117
|
-
if (null == flags) {
|
|
118
|
-
flags = {}
|
|
119
|
-
}
|
|
120
|
-
flags.null = null == flags.null ? true : !!flags.null
|
|
121
|
-
return flags
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
function resolveEntry(entry, flags) {
|
|
126
|
-
entry.out = null == entry.out && flags.null ? NULLMARK : entry.out
|
|
127
|
-
return entry
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
function checkResult(entry, args, res, structUtils) {
|
|
132
|
-
let matched = false
|
|
133
|
-
|
|
134
|
-
if (entry.err) {
|
|
135
|
-
return fail('Expected error did not occur: ' + entry.err +
|
|
136
|
-
'\n\nENTRY: ' + safeStringify(entry))
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
if (entry.match) {
|
|
140
|
-
const result = { in: entry.in, args, out: entry.res, ctx: entry.ctx }
|
|
141
|
-
match(
|
|
142
|
-
entry.match,
|
|
143
|
-
result,
|
|
144
|
-
structUtils
|
|
145
|
-
)
|
|
146
|
-
|
|
147
|
-
matched = true
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
const out = entry.out
|
|
151
|
-
|
|
152
|
-
if (out === res) {
|
|
153
|
-
return
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
// NOTE: allow match with no out.
|
|
157
|
-
if (matched && (NULLMARK === out || null == out)) {
|
|
158
|
-
return
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
deepStrictEqual(null != res ? JSON.parse(safeStringify(res)) : res, entry.out)
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
// Handle errors from test execution
|
|
166
|
-
function handleError(entry, err, structUtils) {
|
|
167
|
-
entry.thrown = err
|
|
168
|
-
|
|
169
|
-
const entry_err = entry.err
|
|
170
|
-
|
|
171
|
-
if (null != entry_err) {
|
|
172
|
-
if (true === entry_err || matchval(entry_err, err.message, structUtils)) {
|
|
173
|
-
if (entry.match) {
|
|
174
|
-
match(
|
|
175
|
-
entry.match,
|
|
176
|
-
{ in: entry.in, out: entry.res, ctx: entry.ctx, err: fixJSON(err, { null: true }) },
|
|
177
|
-
structUtils
|
|
178
|
-
)
|
|
179
|
-
}
|
|
180
|
-
return
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
fail('ERROR MATCH: [' + structUtils.stringify(entry_err) +
|
|
184
|
-
'] <=> [' + err.message + ']')
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
// Unexpected error (test didn't specify an error expectation)
|
|
188
|
-
else if (err instanceof AssertionError) {
|
|
189
|
-
fail(err.message + '\n\nENTRY: ' + safeStringify(entry))
|
|
190
|
-
}
|
|
191
|
-
else {
|
|
192
|
-
fail(err.stack + '\n\nENTRY: ' + safeStringify(entry))
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
function resolveArgs(
|
|
198
|
-
entry,
|
|
199
|
-
testpack,
|
|
200
|
-
utility,
|
|
201
|
-
structUtils
|
|
202
|
-
) {
|
|
203
|
-
let args = []
|
|
204
|
-
|
|
205
|
-
if (entry.ctx) {
|
|
206
|
-
args = [entry.ctx]
|
|
207
|
-
}
|
|
208
|
-
else if (entry.args) {
|
|
209
|
-
args = entry.args
|
|
210
|
-
}
|
|
211
|
-
else {
|
|
212
|
-
args = [structUtils.clone(entry.in)]
|
|
213
|
-
}
|
|
214
|
-
|
|
215
|
-
if (entry.ctx || entry.args) {
|
|
216
|
-
let first = args[0]
|
|
217
|
-
if (structUtils.ismap(first)) {
|
|
218
|
-
first = structUtils.clone(first)
|
|
219
|
-
first = utility.makeContext(first)
|
|
220
|
-
args[0] = first
|
|
221
|
-
entry.ctx = first
|
|
222
|
-
|
|
223
|
-
first.client = testpack.client
|
|
224
|
-
first.utility = testpack.utility
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
return args
|
|
229
|
-
}
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
function resolveTestPack(
|
|
233
|
-
name,
|
|
234
|
-
entry,
|
|
235
|
-
subject,
|
|
236
|
-
client,
|
|
237
|
-
clients
|
|
238
|
-
) {
|
|
239
|
-
const testpack = {
|
|
240
|
-
name,
|
|
241
|
-
client,
|
|
242
|
-
subject,
|
|
243
|
-
utility: client.utility(),
|
|
244
|
-
}
|
|
245
|
-
|
|
246
|
-
if (entry.client) {
|
|
247
|
-
testpack.client = clients[entry.client]
|
|
248
|
-
testpack.utility = testpack.client.utility()
|
|
249
|
-
testpack.subject = resolveSubject(name, testpack.utility)
|
|
250
|
-
}
|
|
251
|
-
|
|
252
|
-
return testpack
|
|
253
|
-
}
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
function match(
|
|
257
|
-
check,
|
|
258
|
-
basex,
|
|
259
|
-
structUtils
|
|
260
|
-
) {
|
|
261
|
-
const cbase = structUtils.clone(basex)
|
|
262
|
-
|
|
263
|
-
structUtils.walk(check, (_key, val, _parent, path) => {
|
|
264
|
-
if (!structUtils.isnode(val)) {
|
|
265
|
-
let baseval = structUtils.getpath(cbase, path)
|
|
266
|
-
|
|
267
|
-
if (baseval === val) {
|
|
268
|
-
return val
|
|
269
|
-
}
|
|
270
|
-
|
|
271
|
-
// Explicit undefined expected
|
|
272
|
-
if (UNDEFMARK === val && undefined === baseval) {
|
|
273
|
-
return val
|
|
274
|
-
}
|
|
275
|
-
|
|
276
|
-
// Explicit defined expected
|
|
277
|
-
if (EXISTSMARK === val && null != baseval) {
|
|
278
|
-
return val
|
|
279
|
-
}
|
|
280
|
-
|
|
281
|
-
if (!matchval(val, baseval, structUtils)) {
|
|
282
|
-
fail('MATCH: ' + path.join('.') +
|
|
283
|
-
': [' + structUtils.stringify(val) +
|
|
284
|
-
'] <=> [' + structUtils.stringify(baseval) + ']')
|
|
285
|
-
}
|
|
286
|
-
}
|
|
287
|
-
|
|
288
|
-
return val
|
|
289
|
-
})
|
|
290
|
-
}
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
function matchval(
|
|
294
|
-
check,
|
|
295
|
-
base,
|
|
296
|
-
structUtils
|
|
297
|
-
) {
|
|
298
|
-
let pass = check === base
|
|
299
|
-
|
|
300
|
-
if (!pass) {
|
|
301
|
-
|
|
302
|
-
if ('string' === typeof check) {
|
|
303
|
-
let basestr = structUtils.stringify(base)
|
|
304
|
-
|
|
305
|
-
let rem = check.match(/^\/(.+)\/$/)
|
|
306
|
-
if (rem) {
|
|
307
|
-
pass = new RegExp(rem[1]).test(basestr)
|
|
308
|
-
}
|
|
309
|
-
else {
|
|
310
|
-
pass = basestr.toLowerCase().includes(structUtils.stringify(check).toLowerCase())
|
|
311
|
-
}
|
|
312
|
-
}
|
|
313
|
-
else if ('function' === typeof check) {
|
|
314
|
-
pass = true
|
|
315
|
-
}
|
|
316
|
-
}
|
|
317
|
-
|
|
318
|
-
return pass
|
|
319
|
-
}
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
function safeStringify(val) {
|
|
323
|
-
const seen = new WeakSet()
|
|
324
|
-
return JSON.stringify(val, (_k, v) => {
|
|
325
|
-
if ('object' === typeof v && null !== v) {
|
|
326
|
-
if (seen.has(v)) return '[Circular]'
|
|
327
|
-
seen.add(v)
|
|
328
|
-
}
|
|
329
|
-
if (v instanceof Error) {
|
|
330
|
-
return { name: v.name, message: v.message }
|
|
331
|
-
}
|
|
332
|
-
return v
|
|
333
|
-
}, 2)
|
|
334
|
-
}
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
function fixJSON(val, flags) {
|
|
338
|
-
if (null == val) {
|
|
339
|
-
return flags?.null ? NULLMARK : val
|
|
340
|
-
}
|
|
341
|
-
|
|
342
|
-
const seen = new WeakSet()
|
|
343
|
-
const replacer = (_k, v) => {
|
|
344
|
-
if (null == v && flags?.null) {
|
|
345
|
-
return NULLMARK
|
|
346
|
-
}
|
|
347
|
-
|
|
348
|
-
if (v instanceof Error) {
|
|
349
|
-
return {
|
|
350
|
-
...v,
|
|
351
|
-
name: v.name,
|
|
352
|
-
message: v.message,
|
|
353
|
-
}
|
|
354
|
-
}
|
|
355
|
-
|
|
356
|
-
if ('object' === typeof v && null !== v) {
|
|
357
|
-
if (seen.has(v)) return '[Circular]'
|
|
358
|
-
seen.add(v)
|
|
359
|
-
}
|
|
360
|
-
|
|
361
|
-
return v
|
|
362
|
-
}
|
|
363
|
-
|
|
364
|
-
return JSON.parse(JSON.stringify(val, replacer))
|
|
365
|
-
}
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
function nullModifier(
|
|
369
|
-
val,
|
|
370
|
-
key,
|
|
371
|
-
parent
|
|
372
|
-
) {
|
|
373
|
-
if ("__NULL__" === val) {
|
|
374
|
-
parent[key] = null
|
|
375
|
-
}
|
|
376
|
-
else if ('string' === typeof val) {
|
|
377
|
-
parent[key] = val.replaceAll('__NULL__', 'null')
|
|
378
|
-
}
|
|
379
|
-
}
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
module.exports = {
|
|
383
|
-
NULLMARK,
|
|
384
|
-
EXISTSMARK,
|
|
385
|
-
nullModifier,
|
|
386
|
-
makeRunner,
|
|
387
|
-
}
|