@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
|
@@ -1,64 +1,143 @@
|
|
|
1
|
-
/* Voxgig Struct corpus driver — C port
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
/* Voxgig Struct corpus driver — C port, on the VENDORED @voxgig/omni
|
|
2
|
+
* runner (tests/vendor/omni, driven through tests/omni_resolver.h).
|
|
3
|
+
*
|
|
4
|
+
* Every `struct.<category>.<name>` section of the shared corpus
|
|
5
|
+
* (.sdk/test/test.json) is run by omni itself: omni resolves the section,
|
|
6
|
+
* normalises its values, calls the subject once per entry and compares
|
|
7
|
+
* `out` / `match` / `err`. The hand-written engine this file used to call
|
|
8
|
+
* (tests/runner.h run_subject) is retired; the subjects below crossed over
|
|
9
|
+
* verbatim, because the resolver keeps their signature.
|
|
10
|
+
*
|
|
11
|
+
* Two behaviours changed with the engine, both deliberately:
|
|
12
|
+
*
|
|
13
|
+
* * A MISSING OR EMPTY SECTION IS NOW A FAILURE. Six `sentinels.*`
|
|
14
|
+
* sections had been renamed to `struct.nullsem` in the corpus; the old
|
|
15
|
+
* runner scored them a silent 0/0 and nullsem itself went unrun. The
|
|
16
|
+
* five real nullsem sections (33 entries) are driven below, and any
|
|
17
|
+
* section that resolves to nothing is reported OUT LOUD.
|
|
18
|
+
*
|
|
19
|
+
* * `match` IS CHECKED. The old engine ignored it, so
|
|
20
|
+
* struct.minor.setpath's "the subject mutated its argument" assertions
|
|
21
|
+
* and struct.merge.integrity's "the subject did NOT" assertions were
|
|
22
|
+
* dead. omni checks both (see decision 3 in omni_resolver.h).
|
|
23
|
+
*
|
|
24
|
+
* SCOREBOARD. omni reports pass/fail per SET, stopping at the first
|
|
25
|
+
* failing entry, so per-entry credit is no longer knowable. Each row
|
|
26
|
+
* therefore carries the number of cases the section HOLDS — the count that
|
|
27
|
+
* proves the corpus still runs — plus its pass/fail.
|
|
28
|
+
*/
|
|
29
|
+
|
|
30
|
+
#include "omni_resolver.h"
|
|
4
31
|
#include "voxgig_struct.h"
|
|
5
32
|
|
|
6
33
|
#include <stdio.h>
|
|
7
34
|
#include <stdlib.h>
|
|
8
35
|
#include <string.h>
|
|
9
36
|
|
|
10
|
-
|
|
37
|
+
/* The shared corpus, compiled by the project build. Relative to the target
|
|
38
|
+
* root, which is where the Makefile runs each test binary from. */
|
|
39
|
+
#define TEST_JSON_FILE "../.sdk/test/test.json"
|
|
11
40
|
|
|
12
|
-
static
|
|
13
|
-
|
|
14
|
-
CORPUS = voxgig_parse_json_file("../.sdk/test/test.json");
|
|
15
|
-
}
|
|
16
|
-
voxgig_value* sk = voxgig_new_string("struct");
|
|
17
|
-
voxgig_value* sv = voxgig_getprop(CORPUS, sk, NULL);
|
|
18
|
-
voxgig_release(sk);
|
|
19
|
-
voxgig_value* ck = voxgig_new_string(category);
|
|
20
|
-
voxgig_value* cat = voxgig_getprop(sv, ck, NULL);
|
|
21
|
-
voxgig_release(ck);
|
|
22
|
-
voxgig_release(sv);
|
|
23
|
-
voxgig_value* nk = voxgig_new_string(name);
|
|
24
|
-
voxgig_value* spec = voxgig_getprop(cat, nk, NULL);
|
|
25
|
-
voxgig_release(nk);
|
|
26
|
-
voxgig_release(cat);
|
|
27
|
-
return spec;
|
|
28
|
-
}
|
|
41
|
+
static omni_pool* POOL = NULL;
|
|
42
|
+
static omni_runpack* PACK = NULL;
|
|
29
43
|
|
|
30
|
-
/* Scoreboard. */
|
|
44
|
+
/* Scoreboard: one row per corpus section. */
|
|
31
45
|
typedef struct slot {
|
|
32
|
-
char*
|
|
33
|
-
|
|
46
|
+
char* name;
|
|
47
|
+
size_t cases;
|
|
48
|
+
int failed;
|
|
49
|
+
char* err;
|
|
34
50
|
} slot;
|
|
35
51
|
|
|
36
52
|
static slot* SB = NULL;
|
|
37
53
|
static size_t SB_LEN = 0;
|
|
38
54
|
static size_t SB_CAP = 0;
|
|
39
55
|
|
|
40
|
-
static void sb_add(const char*
|
|
56
|
+
static void sb_add(const char* name, size_t cases, int failed, const char* err) {
|
|
41
57
|
if (SB_LEN + 1 > SB_CAP) {
|
|
42
58
|
size_t nc = SB_CAP == 0 ? 64 : SB_CAP * 2;
|
|
43
59
|
SB = (slot*)realloc(SB, nc * sizeof(slot));
|
|
44
60
|
SB_CAP = nc;
|
|
45
61
|
}
|
|
46
|
-
SB[SB_LEN].
|
|
47
|
-
SB[SB_LEN].
|
|
62
|
+
SB[SB_LEN].name = strdup(name);
|
|
63
|
+
SB[SB_LEN].cases = cases;
|
|
64
|
+
SB[SB_LEN].failed = failed;
|
|
65
|
+
SB[SB_LEN].err = err ? strdup(err) : NULL;
|
|
48
66
|
SB_LEN++;
|
|
49
67
|
}
|
|
50
68
|
|
|
51
|
-
|
|
69
|
+
/* Resolve `struct.<cat>.<name>`. NULL (with the reason recorded) when the
|
|
70
|
+
* corpus does not carry it. */
|
|
71
|
+
static omni_json* section(const char* cat, const char* name, const char* full) {
|
|
72
|
+
omni_json* cats = omni_set(PACK, cat);
|
|
73
|
+
omni_json* spec;
|
|
74
|
+
if (!omni_ismap(cats)) {
|
|
75
|
+
sb_add(full, 0, 1, "corpus category missing - check .sdk/test/struct/");
|
|
76
|
+
return NULL;
|
|
77
|
+
}
|
|
78
|
+
spec = omni_map_get(cats, name);
|
|
79
|
+
if (!omni_ismap(spec)) {
|
|
80
|
+
sb_add(full, 0, 1, "corpus section missing - check .sdk/test/struct/");
|
|
81
|
+
return NULL;
|
|
82
|
+
}
|
|
83
|
+
return spec;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/* Run one corpus section through omni. */
|
|
87
|
+
static void run(const char* cat, const char* name, int nullflag, omnivx_subject_fn fn, void* ud) {
|
|
52
88
|
char full[256];
|
|
89
|
+
omni_json* spec;
|
|
90
|
+
size_t cases;
|
|
91
|
+
char* err = NULL;
|
|
92
|
+
int failed;
|
|
93
|
+
|
|
53
94
|
snprintf(full, sizeof(full), "%s.%s", cat, name);
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
95
|
+
|
|
96
|
+
spec = section(cat, name, full);
|
|
97
|
+
if (NULL == spec) {
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
cases = omnivx_setsize(spec);
|
|
102
|
+
if (0 == cases) {
|
|
103
|
+
sb_add(full, 0, 1, "corpus section is EMPTY - zero cases would run");
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
failed =
|
|
108
|
+
omni_runsetflags(PACK, spec, omnivx_flags(nullflag, full), omnivx_subject(POOL, fn, ud), &err);
|
|
109
|
+
sb_add(full, cases, failed, err);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
/* `struct.merge.basic` and `struct.inject.basic` are authored as a bare
|
|
113
|
+
* {in, out} node with no `set`, so the old runner scored them 0/0 and
|
|
114
|
+
* asserted nothing. Wrap each as a one-entry set. */
|
|
115
|
+
static void run_one(const char* cat, const char* name, int nullflag, omnivx_subject_fn fn,
|
|
116
|
+
void* ud) {
|
|
117
|
+
char full[256];
|
|
118
|
+
omni_json* entry;
|
|
119
|
+
omni_json* spec;
|
|
120
|
+
char* err = NULL;
|
|
121
|
+
int failed;
|
|
122
|
+
|
|
123
|
+
snprintf(full, sizeof(full), "%s.%s", cat, name);
|
|
124
|
+
|
|
125
|
+
entry = section(cat, name, full);
|
|
126
|
+
if (NULL == entry) {
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
if (omni_isabsent(omni_map_get(entry, "in")) && omni_isabsent(omni_map_get(entry, "out"))) {
|
|
130
|
+
sb_add(full, 0, 1, "corpus section is neither a set nor an {in,out} entry");
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
spec = omnivx_oneset(POOL, entry);
|
|
135
|
+
failed =
|
|
136
|
+
omni_runsetflags(PACK, spec, omnivx_flags(nullflag, full), omnivx_subject(POOL, fn, ud), &err);
|
|
137
|
+
sb_add(full, 1, failed, err);
|
|
60
138
|
}
|
|
61
139
|
|
|
140
|
+
|
|
62
141
|
/* Helpers. */
|
|
63
142
|
/* Raw map lookup for runner field extraction. Unlike voxgig_getprop (Group A,
|
|
64
143
|
* which treats null at a key as "no value"), this returns the literal stored
|
|
@@ -143,13 +222,18 @@ static voxgig_value* subj_haskey(voxgig_value* in, char** err, void* ud) {
|
|
|
143
222
|
voxgig_release(key);
|
|
144
223
|
return voxgig_new_bool(r);
|
|
145
224
|
}
|
|
225
|
+
/* `alt` is taken by LITERAL presence (voxgig_map_get), not by voxgig_haskey:
|
|
226
|
+
* haskey is Group A and reads a stored null as "no value", which would
|
|
227
|
+
* collapse `{alt: null}` (pass null as the alternative) into "no alt given"
|
|
228
|
+
* — a distinction minor.getprop and struct.nullsem both assert on. */
|
|
146
229
|
static voxgig_value* subj_getprop(voxgig_value* in, char** err, void* ud) {
|
|
147
230
|
(void)ud;
|
|
148
231
|
voxgig_value* val = getp(in, "val");
|
|
149
232
|
voxgig_value* key = getp(in, "key");
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
233
|
+
/* getp, not voxgig_getprop: fetching the alternative must not itself
|
|
234
|
+
* apply Group A, or `{alt: null}` would arrive as UNDEF. */
|
|
235
|
+
voxgig_value* alt =
|
|
236
|
+
(voxgig_is_map(in) && voxgig_map_get(voxgig_as_map(in), "alt")) ? getp(in, "alt") : NULL;
|
|
153
237
|
voxgig_value* r = voxgig_getprop(val, key, alt);
|
|
154
238
|
voxgig_release(val);
|
|
155
239
|
voxgig_release(key);
|
|
@@ -160,9 +244,10 @@ static voxgig_value* subj_getelem(voxgig_value* in, char** err, void* ud) {
|
|
|
160
244
|
(void)ud;
|
|
161
245
|
voxgig_value* val = getp(in, "val");
|
|
162
246
|
voxgig_value* key = getp(in, "key");
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
247
|
+
/* getp, not voxgig_getprop: fetching the alternative must not itself
|
|
248
|
+
* apply Group A, or `{alt: null}` would arrive as UNDEF. */
|
|
249
|
+
voxgig_value* alt =
|
|
250
|
+
(voxgig_is_map(in) && voxgig_map_get(voxgig_as_map(in), "alt")) ? getp(in, "alt") : NULL;
|
|
166
251
|
voxgig_value* r = voxgig_getelem(val, key, alt);
|
|
167
252
|
voxgig_release(val);
|
|
168
253
|
voxgig_release(key);
|
|
@@ -538,71 +623,33 @@ static voxgig_value* subj_getpath_handler(voxgig_value* in, char** err, void* ud
|
|
|
538
623
|
return r;
|
|
539
624
|
}
|
|
540
625
|
|
|
541
|
-
/*
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
voxgig_value* r = voxgig_getprop(val, key, alt);
|
|
552
|
-
voxgig_release(val);
|
|
553
|
-
voxgig_release(key);
|
|
554
|
-
voxgig_release(alt);
|
|
555
|
-
return r;
|
|
556
|
-
}
|
|
557
|
-
static voxgig_value* subj_sent_getelem(voxgig_value* in, char** err, void* ud) {
|
|
558
|
-
(void)err;
|
|
559
|
-
(void)ud;
|
|
560
|
-
voxgig_value* val = getp(in, "val");
|
|
561
|
-
voxgig_value* key = getp(in, "key");
|
|
562
|
-
voxgig_value* altk = voxgig_new_string("alt");
|
|
563
|
-
voxgig_value* alt =
|
|
564
|
-
(voxgig_map_get(voxgig_as_map(in), "alt")) ? voxgig_getprop(in, altk, NULL) : NULL;
|
|
565
|
-
voxgig_release(altk);
|
|
566
|
-
voxgig_value* r = voxgig_getelem(val, key, alt);
|
|
567
|
-
voxgig_release(val);
|
|
568
|
-
voxgig_release(key);
|
|
569
|
-
voxgig_release(alt);
|
|
570
|
-
return r;
|
|
571
|
-
}
|
|
572
|
-
static voxgig_value* subj_sent_haskey(voxgig_value* in, char** err, void* ud) {
|
|
573
|
-
(void)err;
|
|
574
|
-
(void)ud;
|
|
575
|
-
voxgig_value* val = getp(in, "val");
|
|
576
|
-
voxgig_value* key = getp(in, "key");
|
|
577
|
-
bool r = voxgig_haskey(val, key);
|
|
578
|
-
voxgig_release(val);
|
|
579
|
-
voxgig_release(key);
|
|
580
|
-
return voxgig_new_bool(r);
|
|
581
|
-
}
|
|
582
|
-
static voxgig_value* subj_sent_isempty(voxgig_value* in, char** err, void* ud) {
|
|
583
|
-
(void)err;
|
|
584
|
-
(void)ud;
|
|
585
|
-
return voxgig_new_bool(voxgig_isempty(in));
|
|
586
|
-
}
|
|
587
|
-
static voxgig_value* subj_sent_isnode(voxgig_value* in, char** err, void* ud) {
|
|
588
|
-
(void)err;
|
|
589
|
-
(void)ud;
|
|
590
|
-
return voxgig_new_bool(voxgig_isnode(in));
|
|
591
|
-
}
|
|
592
|
-
static voxgig_value* subj_sent_stringify(voxgig_value* in, char** err, void* ud) {
|
|
593
|
-
(void)err;
|
|
594
|
-
(void)ud;
|
|
595
|
-
char* s = voxgig_stringify(in, -1);
|
|
596
|
-
voxgig_value* r = voxgig_new_string(s);
|
|
597
|
-
free(s);
|
|
598
|
-
return r;
|
|
599
|
-
}
|
|
600
|
-
|
|
601
|
-
/* Inject basic. */
|
|
602
|
-
static voxgig_value* subj_inject_basic(voxgig_value* in, char** err, void* ud) {
|
|
603
|
-
(void)err;
|
|
626
|
+
/* The struct-corpus null modifier (was runner.h's unused null_substitute):
|
|
627
|
+
* under the default null flag omni rewrites every JSON null in the section
|
|
628
|
+
* to the "__NULL__" marker, so a resolved null arrives as that text. A bare
|
|
629
|
+
* marker becomes a real null again; a marker EMBEDDED in a longer string
|
|
630
|
+
* becomes the literal word "null", which is what `inject.string` asserts
|
|
631
|
+
* ("`an`x" over {an: null} renders "nullx"). */
|
|
632
|
+
static void null_modifier(voxgig_value* val, voxgig_value* key, voxgig_value* parent,
|
|
633
|
+
voxgig_injection* inj, voxgig_value* store, void* ud) {
|
|
634
|
+
(void)inj;
|
|
635
|
+
(void)store;
|
|
604
636
|
(void)ud;
|
|
605
|
-
|
|
637
|
+
if (!voxgig_is_string(val) || !parent || !key)
|
|
638
|
+
return;
|
|
639
|
+
{
|
|
640
|
+
const char* s = voxgig_as_string(val);
|
|
641
|
+
if (0 == strcmp(s, "__NULL__")) {
|
|
642
|
+
voxgig_setprop(parent, key, voxgig_new_null());
|
|
643
|
+
return;
|
|
644
|
+
}
|
|
645
|
+
if (NULL != strstr(s, "__NULL__")) {
|
|
646
|
+
char* rep = voxgig_replace_str(s, "__NULL__", "null");
|
|
647
|
+
voxgig_value* rv = voxgig_new_string(rep);
|
|
648
|
+
free(rep);
|
|
649
|
+
voxgig_setprop(parent, key, rv);
|
|
650
|
+
voxgig_release(rv);
|
|
651
|
+
}
|
|
652
|
+
}
|
|
606
653
|
}
|
|
607
654
|
|
|
608
655
|
/* Walk subjects. */
|
|
@@ -690,6 +737,20 @@ static voxgig_value* subj_inject(voxgig_value* in, char** err, void* ud) {
|
|
|
690
737
|
voxgig_release(store);
|
|
691
738
|
return r;
|
|
692
739
|
}
|
|
740
|
+
static voxgig_value* subj_inject_nullmod(voxgig_value* in, char** err, void* ud) {
|
|
741
|
+
(void)ud;
|
|
742
|
+
voxgig_value* val = getp(in, "val");
|
|
743
|
+
voxgig_value* store = getp(in, "store");
|
|
744
|
+
voxgig_injection* inj = voxgig_inj_new(NULL, NULL);
|
|
745
|
+
inj->mode = 0;
|
|
746
|
+
voxgig_release(inj->modify_val);
|
|
747
|
+
inj->modify_val = voxgig_new_modify(null_modifier, NULL);
|
|
748
|
+
voxgig_value* r = voxgig_inject(val, store, inj);
|
|
749
|
+
voxgig_inj_free(inj);
|
|
750
|
+
voxgig_release(val);
|
|
751
|
+
voxgig_release(store);
|
|
752
|
+
return r;
|
|
753
|
+
}
|
|
693
754
|
|
|
694
755
|
/* transform subjects. */
|
|
695
756
|
static voxgig_value* subj_transform(voxgig_value* in, char** err, void* ud) {
|
|
@@ -782,137 +843,154 @@ static const char* category_to_file(const char* cat) {
|
|
|
782
843
|
return "validate.jsonic";
|
|
783
844
|
if (strcmp(cat, "select") == 0)
|
|
784
845
|
return "select.jsonic";
|
|
785
|
-
if (strcmp(cat, "
|
|
786
|
-
return "
|
|
846
|
+
if (strcmp(cat, "nullsem") == 0)
|
|
847
|
+
return "nullsem.jsonic";
|
|
787
848
|
return cat;
|
|
788
849
|
}
|
|
789
850
|
|
|
790
851
|
int main(void) {
|
|
852
|
+
char* err = NULL;
|
|
853
|
+
omni_runner* runner;
|
|
854
|
+
int failed = 0;
|
|
855
|
+
size_t cases = 0;
|
|
856
|
+
size_t i;
|
|
857
|
+
FILE* f;
|
|
858
|
+
|
|
859
|
+
POOL = omni_pool_new();
|
|
860
|
+
|
|
861
|
+
runner = omni_make_runner(POOL, TEST_JSON_FILE, NULL, NULL, &err);
|
|
862
|
+
if (NULL == runner) {
|
|
863
|
+
fprintf(stderr, "struct corpus: %s\n", NULL == err ? "cannot make runner" : err);
|
|
864
|
+
return 1;
|
|
865
|
+
}
|
|
866
|
+
|
|
867
|
+
PACK = omni_runner_run(runner, "struct", NULL, &err);
|
|
868
|
+
if (NULL == PACK || !omni_ismap(omni_spec(PACK))) {
|
|
869
|
+
fprintf(stderr, "struct corpus: struct section not found in %s\n", TEST_JSON_FILE);
|
|
870
|
+
return 1;
|
|
871
|
+
}
|
|
872
|
+
|
|
873
|
+
/* The `null` flag of each section is the shared one: with it, omni
|
|
874
|
+
* rewrites every JSON null in the section to the "__NULL__" marker
|
|
875
|
+
* before the subject sees it; without it, nulls stay null. It is a
|
|
876
|
+
* property of the CASES, so it matches the reference harness section for
|
|
877
|
+
* section. */
|
|
878
|
+
|
|
791
879
|
/* minor */
|
|
792
|
-
run("minor", "isnode",
|
|
793
|
-
run("minor", "ismap",
|
|
794
|
-
run("minor", "islist",
|
|
795
|
-
run("minor", "iskey",
|
|
796
|
-
run("minor", "strkey",
|
|
797
|
-
run("minor", "isempty",
|
|
798
|
-
run("minor", "isfunc",
|
|
799
|
-
run("minor", "typify",
|
|
800
|
-
run("minor", "typename",
|
|
801
|
-
run("minor", "clone",
|
|
802
|
-
run("minor", "size",
|
|
803
|
-
run("minor", "keysof",
|
|
804
|
-
run("minor", "items",
|
|
805
|
-
run("minor", "haskey",
|
|
806
|
-
run("minor", "getprop",
|
|
807
|
-
run("minor", "getelem",
|
|
808
|
-
run("minor", "setprop",
|
|
809
|
-
run("minor", "delprop",
|
|
810
|
-
run("minor", "stringify",
|
|
811
|
-
run("minor", "jsonify",
|
|
812
|
-
run("minor", "pathify",
|
|
813
|
-
run("minor", "escre",
|
|
814
|
-
run("minor", "escurl",
|
|
815
|
-
run("minor", "join",
|
|
816
|
-
run("minor", "flatten",
|
|
817
|
-
run("minor", "filter",
|
|
818
|
-
run("minor", "slice",
|
|
819
|
-
run("minor", "pad",
|
|
820
|
-
run("minor", "setpath",
|
|
880
|
+
run("minor", "isnode", 1, subj_isnode, NULL);
|
|
881
|
+
run("minor", "ismap", 1, subj_ismap, NULL);
|
|
882
|
+
run("minor", "islist", 1, subj_islist, NULL);
|
|
883
|
+
run("minor", "iskey", 0, subj_iskey, NULL);
|
|
884
|
+
run("minor", "strkey", 0, subj_strkey, NULL);
|
|
885
|
+
run("minor", "isempty", 0, subj_isempty, NULL);
|
|
886
|
+
run("minor", "isfunc", 1, subj_isfunc, NULL);
|
|
887
|
+
run("minor", "typify", 0, subj_typify, NULL);
|
|
888
|
+
run("minor", "typename", 1, subj_typename, NULL);
|
|
889
|
+
run("minor", "clone", 0, subj_clone, NULL);
|
|
890
|
+
run("minor", "size", 0, subj_size, NULL);
|
|
891
|
+
run("minor", "keysof", 1, subj_keysof, NULL);
|
|
892
|
+
run("minor", "items", 1, subj_items, NULL);
|
|
893
|
+
run("minor", "haskey", 0, subj_haskey, NULL);
|
|
894
|
+
run("minor", "getprop", 0, subj_getprop, NULL);
|
|
895
|
+
run("minor", "getelem", 0, subj_getelem, NULL);
|
|
896
|
+
run("minor", "setprop", 1, subj_setprop, NULL);
|
|
897
|
+
run("minor", "delprop", 1, subj_delprop, NULL);
|
|
898
|
+
run("minor", "stringify", 0, subj_stringify, NULL);
|
|
899
|
+
run("minor", "jsonify", 0, subj_jsonify, NULL);
|
|
900
|
+
run("minor", "pathify", 0, subj_pathify, NULL);
|
|
901
|
+
run("minor", "escre", 1, subj_escre, NULL);
|
|
902
|
+
run("minor", "escurl", 1, subj_escurl, NULL);
|
|
903
|
+
run("minor", "join", 0, subj_join, NULL);
|
|
904
|
+
run("minor", "flatten", 1, subj_flatten, NULL);
|
|
905
|
+
run("minor", "filter", 1, subj_filter, NULL);
|
|
906
|
+
run("minor", "slice", 0, subj_slice, NULL);
|
|
907
|
+
run("minor", "pad", 0, subj_pad, NULL);
|
|
908
|
+
run("minor", "setpath", 0, subj_setpath, NULL);
|
|
821
909
|
|
|
822
910
|
/* walk */
|
|
823
|
-
run("walk", "basic",
|
|
824
|
-
run("walk", "depth",
|
|
911
|
+
run("walk", "basic", 1, subj_walk_basic, NULL);
|
|
912
|
+
run("walk", "depth", 0, subj_walk_depth, NULL);
|
|
825
913
|
|
|
826
914
|
/* merge */
|
|
827
|
-
|
|
828
|
-
run("merge", "cases",
|
|
829
|
-
run("merge", "array",
|
|
830
|
-
run("merge", "integrity",
|
|
831
|
-
run("merge", "depth",
|
|
915
|
+
run_one("merge", "basic", 1, subj_merge, NULL);
|
|
916
|
+
run("merge", "cases", 1, subj_merge, NULL);
|
|
917
|
+
run("merge", "array", 1, subj_merge, NULL);
|
|
918
|
+
run("merge", "integrity", 1, subj_merge, NULL);
|
|
919
|
+
run("merge", "depth", 1, subj_merge_depth, NULL);
|
|
832
920
|
|
|
833
921
|
/* getpath */
|
|
834
|
-
run("getpath", "basic",
|
|
835
|
-
run("getpath", "relative",
|
|
836
|
-
run("getpath", "special",
|
|
837
|
-
run("getpath", "handler",
|
|
838
|
-
|
|
839
|
-
/*
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
run("
|
|
844
|
-
run("
|
|
845
|
-
run("
|
|
922
|
+
run("getpath", "basic", 1, subj_getpath_basic, NULL);
|
|
923
|
+
run("getpath", "relative", 1, subj_getpath_relative, NULL);
|
|
924
|
+
run("getpath", "special", 1, subj_getpath_special, NULL);
|
|
925
|
+
run("getpath", "handler", 1, subj_getpath_handler, NULL);
|
|
926
|
+
|
|
927
|
+
/* nullsem — does a PRESENT key holding a JSON null read as "no value"?
|
|
928
|
+
* Every lane runs {null: 0}: with the flag on, the runner rewrites each
|
|
929
|
+
* null to "__NULL__" and the section would assert nothing about null at
|
|
930
|
+
* all. This is the section the six vacuous `sentinels.*` rows hid. */
|
|
931
|
+
run("nullsem", "getprop", 0, subj_getprop, NULL);
|
|
932
|
+
run("nullsem", "getelem", 0, subj_getelem, NULL);
|
|
933
|
+
run("nullsem", "getpath", 0, subj_getpath_basic, NULL);
|
|
934
|
+
run("nullsem", "haskey", 0, subj_haskey, NULL);
|
|
935
|
+
run("nullsem", "keysof", 0, subj_keysof, NULL);
|
|
846
936
|
|
|
847
937
|
/* inject */
|
|
848
|
-
|
|
849
|
-
run("inject", "string",
|
|
850
|
-
run("inject", "deep",
|
|
938
|
+
run_one("inject", "basic", 1, subj_inject, NULL);
|
|
939
|
+
run("inject", "string", 1, subj_inject_nullmod, NULL);
|
|
940
|
+
run("inject", "deep", 1, subj_inject, NULL);
|
|
851
941
|
|
|
852
942
|
/* transform */
|
|
853
|
-
run("transform", "paths",
|
|
854
|
-
run("transform", "cmds",
|
|
855
|
-
run("transform", "each",
|
|
856
|
-
run("transform", "pack",
|
|
857
|
-
run("transform", "ref",
|
|
943
|
+
run("transform", "paths", 1, subj_transform, NULL);
|
|
944
|
+
run("transform", "cmds", 1, subj_transform, NULL);
|
|
945
|
+
run("transform", "each", 1, subj_transform, NULL);
|
|
946
|
+
run("transform", "pack", 1, subj_transform, NULL);
|
|
947
|
+
run("transform", "ref", 1, subj_transform, NULL);
|
|
858
948
|
|
|
859
949
|
/* validate */
|
|
860
|
-
run("validate", "basic",
|
|
861
|
-
run("validate", "invalid",
|
|
862
|
-
run("validate", "child",
|
|
863
|
-
run("validate", "one",
|
|
864
|
-
run("validate", "exact",
|
|
950
|
+
run("validate", "basic", 0, subj_validate, NULL);
|
|
951
|
+
run("validate", "invalid", 0, subj_validate, NULL);
|
|
952
|
+
run("validate", "child", 1, subj_validate, NULL);
|
|
953
|
+
run("validate", "one", 1, subj_validate, NULL);
|
|
954
|
+
run("validate", "exact", 1, subj_validate, NULL);
|
|
865
955
|
|
|
866
956
|
/* select */
|
|
867
|
-
run("select", "basic",
|
|
868
|
-
run("select", "operators",
|
|
869
|
-
run("select", "edge",
|
|
870
|
-
run("select", "alts",
|
|
957
|
+
run("select", "basic", 1, subj_select, NULL);
|
|
958
|
+
run("select", "operators", 1, subj_select, NULL);
|
|
959
|
+
run("select", "edge", 1, subj_select, NULL);
|
|
960
|
+
run("select", "alts", 1, subj_select, NULL);
|
|
871
961
|
|
|
872
962
|
/* Aggregate scoreboard. */
|
|
873
|
-
int totalP = 0, totalT = 0;
|
|
874
|
-
/* Group by file. */
|
|
875
963
|
printf("\n========= STRUCT CORPUS SCOREBOARD =========\n");
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
totalT += SB[i].r.total;
|
|
964
|
+
for (i = 0; i < SB_LEN; i++) {
|
|
965
|
+
printf(" %-30s %-4s %4zu cases\n", SB[i].name, SB[i].failed ? "FAIL" : "ok", SB[i].cases);
|
|
966
|
+
cases += SB[i].cases;
|
|
967
|
+
failed += SB[i].failed ? 1 : 0;
|
|
881
968
|
}
|
|
882
|
-
printf(" %-30s %
|
|
969
|
+
printf(" %-30s %-4s %4zu cases in %zu sections\n", "TOTAL", failed ? "FAIL" : "ok", cases,
|
|
970
|
+
SB_LEN);
|
|
883
971
|
printf("============================================\n");
|
|
884
972
|
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
if (SB[i].r.fail_len == 0)
|
|
890
|
-
continue;
|
|
891
|
-
fprintf(stderr, "\n--- %s (%d/%d) ---\n", SB[i].r.name, SB[i].r.passed, SB[i].r.total);
|
|
892
|
-
int shown = 0;
|
|
893
|
-
for (size_t j = 0; j < SB[i].r.fail_len; j++) {
|
|
894
|
-
fprintf(stderr, " %s\n", SB[i].r.failures[j]);
|
|
895
|
-
if (++shown >= 5) {
|
|
896
|
-
fprintf(stderr, " ... %zu more\n", SB[i].r.fail_len - shown);
|
|
897
|
-
break;
|
|
898
|
-
}
|
|
899
|
-
}
|
|
973
|
+
for (i = 0; i < SB_LEN; i++) {
|
|
974
|
+
if (SB[i].failed) {
|
|
975
|
+
fprintf(stderr, "\n--- %s ---\n%s\n", SB[i].name,
|
|
976
|
+
NULL == SB[i].err ? "(no message)" : SB[i].err);
|
|
900
977
|
}
|
|
901
978
|
}
|
|
902
979
|
|
|
903
|
-
/* Write target/corpus-scoreboard.json
|
|
904
|
-
|
|
980
|
+
/* Write target/corpus-scoreboard.json. Same schema as before; `passed`
|
|
981
|
+
* is the section's case count when the section passed, because omni
|
|
982
|
+
* stops a set at its first failure and partial credit is unknowable. */
|
|
983
|
+
f = fopen("corpus-scoreboard.json", "w");
|
|
905
984
|
if (f) {
|
|
985
|
+
size_t passedcases = 0;
|
|
986
|
+
int first = 1;
|
|
906
987
|
fprintf(f, "{\n \"files\": {\n");
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
for (size_t i = 0; i < SB_LEN; i++) {
|
|
911
|
-
const char* dot = strchr(SB[i].r.name, '.');
|
|
912
|
-
const char* cat = SB[i].r.name;
|
|
988
|
+
for (i = 0; i < SB_LEN; i++) {
|
|
989
|
+
const char* dot = strchr(SB[i].name, '.');
|
|
990
|
+
const char* cat = SB[i].name;
|
|
913
991
|
char catbuf[64];
|
|
914
992
|
if (dot) {
|
|
915
|
-
size_t cl = dot - cat;
|
|
993
|
+
size_t cl = (size_t)(dot - cat);
|
|
916
994
|
if (cl >= sizeof(catbuf))
|
|
917
995
|
cl = sizeof(catbuf) - 1;
|
|
918
996
|
memcpy(catbuf, cat, cl);
|
|
@@ -921,19 +999,21 @@ int main(void) {
|
|
|
921
999
|
}
|
|
922
1000
|
if (!first)
|
|
923
1001
|
fprintf(f, ",\n");
|
|
924
|
-
first =
|
|
925
|
-
fprintf(f, " \"%s\": {\"passed\": %
|
|
926
|
-
SB[i].
|
|
1002
|
+
first = 0;
|
|
1003
|
+
fprintf(f, " \"%s\": {\"passed\": %zu, \"total\": %zu}", category_to_file(cat),
|
|
1004
|
+
SB[i].failed ? (size_t)0 : SB[i].cases, SB[i].cases);
|
|
1005
|
+
passedcases += SB[i].failed ? 0 : SB[i].cases;
|
|
927
1006
|
}
|
|
928
|
-
fprintf(f, "\n },\n \"total\": {\"passed\": %
|
|
1007
|
+
fprintf(f, "\n },\n \"total\": {\"passed\": %zu, \"total\": %zu}\n}\n", passedcases, cases);
|
|
929
1008
|
fclose(f);
|
|
930
1009
|
}
|
|
931
1010
|
|
|
932
|
-
for (
|
|
933
|
-
|
|
934
|
-
free(SB[i].
|
|
1011
|
+
for (i = 0; i < SB_LEN; i++) {
|
|
1012
|
+
free(SB[i].name);
|
|
1013
|
+
free(SB[i].err);
|
|
935
1014
|
}
|
|
936
1015
|
free(SB);
|
|
937
|
-
|
|
938
|
-
|
|
1016
|
+
omni_pool_free(POOL);
|
|
1017
|
+
|
|
1018
|
+
return 0 == failed ? 0 : 1;
|
|
939
1019
|
}
|