@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.
Files changed (376) hide show
  1. package/bin/voxgig-sdkgen +1 -1
  2. package/dist/action/doctor.d.ts +1 -0
  3. package/dist/action/doctor.js +50 -2
  4. package/dist/action/doctor.js.map +1 -1
  5. package/dist/helpers/naming.js +4 -2
  6. package/dist/helpers/naming.js.map +1 -1
  7. package/dist/tsconfig.tsbuildinfo +1 -1
  8. package/model/sdkgen.aon +21 -0
  9. package/package.json +1 -1
  10. package/project/.sdk/model/feature/secrets.aon +120 -18
  11. package/project/.sdk/model/target/c.aon +10 -0
  12. package/project/.sdk/model/target/clojure.aon +13 -0
  13. package/project/.sdk/model/target/cpp.aon +10 -0
  14. package/project/.sdk/model/target/csharp.aon +9 -0
  15. package/project/.sdk/model/target/dart.aon +10 -0
  16. package/project/.sdk/model/target/elixir.aon +9 -0
  17. package/project/.sdk/model/target/go.aon +13 -0
  18. package/project/.sdk/model/target/java.aon +9 -0
  19. package/project/.sdk/model/target/js.aon +7 -0
  20. package/project/.sdk/model/target/kotlin.aon +9 -0
  21. package/project/.sdk/model/target/lean.aon +17 -0
  22. package/project/.sdk/model/target/lua.aon +8 -0
  23. package/project/.sdk/model/target/ocaml.aon +9 -0
  24. package/project/.sdk/model/target/perl.aon +8 -0
  25. package/project/.sdk/model/target/php.aon +8 -0
  26. package/project/.sdk/model/target/py.aon +13 -0
  27. package/project/.sdk/model/target/rb.aon +8 -0
  28. package/project/.sdk/model/target/rust.aon +10 -0
  29. package/project/.sdk/model/target/scala.aon +21 -2
  30. package/project/.sdk/model/target/swift.aon +18 -0
  31. package/project/.sdk/model/target/ts.aon +13 -0
  32. package/project/.sdk/src/cmp/clojure/Package_clojure.ts +9 -2
  33. package/project/.sdk/src/cmp/cpp/Gitignore_cpp.ts +3 -0
  34. package/project/.sdk/src/cmp/dart/Test_dart.ts +2 -0
  35. package/project/.sdk/src/cmp/elixir/Package_elixir.ts +4 -1
  36. package/project/.sdk/src/cmp/go/Config_go.ts +59 -2
  37. package/project/.sdk/src/cmp/go/Main_go.ts +8 -2
  38. package/project/.sdk/src/cmp/java/Test_java.ts +6 -5
  39. package/project/.sdk/src/cmp/kotlin/Test_kotlin.ts +6 -5
  40. package/project/.sdk/src/cmp/lean/Package_lean.ts +23 -0
  41. package/project/.sdk/src/cmp/lean/ReadmeInstall_lean.ts +1 -0
  42. package/project/.sdk/src/cmp/lean/ReadmeTopTest_lean.ts +1 -0
  43. package/project/.sdk/src/cmp/ocaml/Gitignore_ocaml.ts +1 -0
  44. package/project/.sdk/src/cmp/ocaml/Main_ocaml.ts +7 -3
  45. package/project/.sdk/src/cmp/py/Config_py.ts +82 -1
  46. package/project/.sdk/src/cmp/py/Main_py.ts +44 -0
  47. package/project/.sdk/src/cmp/py/fragment/Main.fragment.py +2 -0
  48. package/project/.sdk/src/cmp/swift/Main_swift.ts +10 -0
  49. package/project/.sdk/src/cmp/swift/Package_swift.ts +13 -1
  50. package/project/.sdk/src/cmp/ts/Config_ts.ts +42 -17
  51. package/project/.sdk/src/cmp/ts/fragment/Config.data.fragment.ts +13 -1
  52. package/project/.sdk/src/cmp/ts/fragment/Config.fragment.ts +13 -1
  53. package/project/.sdk/tm/c/Makefile +38 -3
  54. package/project/.sdk/tm/c/tests/omni_resolver.h +361 -0
  55. package/project/.sdk/tm/c/tests/omni_smoke_test.c +237 -0
  56. package/project/.sdk/tm/c/tests/primary_corpus_test.c +205 -284
  57. package/project/.sdk/tm/c/tests/struct_corpus_test.c +292 -212
  58. package/project/.sdk/tm/c/tests/vendor/omni/json.c +811 -0
  59. package/project/.sdk/tm/c/tests/vendor/omni/omni.h +240 -0
  60. package/project/.sdk/tm/c/tests/vendor/omni/runner.c +940 -0
  61. package/project/.sdk/tm/c/tests/vendor/omni/util.c +351 -0
  62. package/project/.sdk/tm/c/utility/struct/utility.c +7 -2
  63. package/project/.sdk/tm/clojure/test/sdk/test/omni.clj +401 -0
  64. package/project/.sdk/tm/clojure/test/sdk/test/omni_smoke.clj +81 -0
  65. package/project/.sdk/tm/clojure/test/sdk/test/primary.clj +92 -58
  66. package/project/.sdk/tm/clojure/test/sdk/test/struct_corpus.clj +122 -149
  67. package/project/.sdk/tm/clojure/test/sdk/test_runner.clj +8 -3
  68. package/project/.sdk/tm/clojure/test/vendor/omni/voxgig/omni/json.clj +145 -0
  69. package/project/.sdk/tm/clojure/test/vendor/omni/voxgig/omni/runner.clj +445 -0
  70. package/project/.sdk/tm/clojure/test/vendor/omni/voxgig/omni/util.clj +145 -0
  71. package/project/.sdk/tm/cpp/Makefile +5 -1
  72. package/project/.sdk/tm/cpp/test/omni_resolver.hpp +473 -0
  73. package/project/.sdk/tm/cpp/test/omni_smoke_test.cpp +209 -0
  74. package/project/.sdk/tm/cpp/test/primary_utility_test.cpp +243 -184
  75. package/project/.sdk/tm/cpp/test/runner_support.hpp +68 -181
  76. package/project/.sdk/tm/cpp/test/struct_corpus_test.cpp +183 -56
  77. package/project/.sdk/tm/cpp/test/vendor/omni/json.hpp +406 -0
  78. package/project/.sdk/tm/cpp/test/vendor/omni/omni.hpp +751 -0
  79. package/project/.sdk/tm/cpp/test/vendor/omni/util.hpp +256 -0
  80. package/project/.sdk/tm/cpp/utility/pipeline.hpp +7 -1
  81. package/project/.sdk/tm/csharp/test/OmniResolver.cs +491 -0
  82. package/project/.sdk/tm/csharp/test/OmniSmokeTest.cs +106 -0
  83. package/project/.sdk/tm/csharp/test/PrimaryUtilityTest.cs +299 -316
  84. package/project/.sdk/tm/csharp/test/Runner.cs +104 -269
  85. package/project/.sdk/tm/csharp/test/StructUtilityTest.cs +535 -724
  86. package/project/.sdk/tm/csharp/test/vendor/omni/Runner.cs +864 -0
  87. package/project/.sdk/tm/csharp/test/vendor/omni/Util.cs +347 -0
  88. package/project/.sdk/tm/csharp/utility/MakeSpec.cs +3 -1
  89. package/project/.sdk/tm/csharp/utility/PrepareMethod.cs +6 -1
  90. package/project/.sdk/tm/csharp/utility/struct/Struct.cs +21 -5
  91. package/project/.sdk/tm/dart/test/omni.dart +520 -0
  92. package/project/.sdk/tm/dart/test/omni_smoke_test.dart +143 -0
  93. package/project/.sdk/tm/dart/test/primary_test.dart +86 -28
  94. package/project/.sdk/tm/dart/test/struct_test.dart +438 -11
  95. package/project/.sdk/tm/dart/test/vendor/omni/omni.dart +7 -0
  96. package/project/.sdk/tm/dart/test/vendor/omni/runner.dart +653 -0
  97. package/project/.sdk/tm/dart/test/vendor/omni/util.dart +232 -0
  98. package/project/.sdk/tm/elixir/Makefile +11 -3
  99. package/project/.sdk/tm/elixir/test/omni_smoke_test.exs +117 -0
  100. package/project/.sdk/tm/elixir/test/primary_utility_test.exs +341 -16
  101. package/project/.sdk/tm/elixir/test/struct_corpus_test.exs +554 -9
  102. package/project/.sdk/tm/elixir/test/support/omni.ex +377 -0
  103. package/project/.sdk/tm/elixir/test/vendor/omni/json.ex +122 -0
  104. package/project/.sdk/tm/elixir/test/vendor/omni/runner.ex +623 -0
  105. package/project/.sdk/tm/elixir/test/vendor/omni/util.ex +187 -0
  106. package/project/.sdk/tm/go/core/context.go +32 -16
  107. package/project/.sdk/tm/go/feature/secrets/plugin/capability.go +261 -0
  108. package/project/.sdk/tm/go/feature/secrets/plugin/catalog.go +78 -0
  109. package/project/.sdk/tm/go/feature/secrets/plugin/config.go +652 -0
  110. package/project/.sdk/tm/go/feature/secrets/plugin/depend.go +250 -0
  111. package/project/.sdk/tm/go/feature/secrets/plugin/env.go +194 -0
  112. package/project/.sdk/tm/go/feature/secrets/plugin/export.go +80 -0
  113. package/project/.sdk/tm/go/feature/secrets/plugin/graph.go +238 -0
  114. package/project/.sdk/tm/go/feature/secrets/plugin/host.go +1575 -0
  115. package/project/.sdk/tm/go/feature/secrets/plugin/order.go +248 -0
  116. package/project/.sdk/tm/go/feature/secrets/plugin/point.go +184 -0
  117. package/project/.sdk/tm/go/feature/secrets/plugin/ref.go +123 -0
  118. package/project/.sdk/tm/go/feature/secrets/plugin/resolve.go +79 -0
  119. package/project/.sdk/tm/go/feature/secrets/plugin/types.go +296 -0
  120. package/project/.sdk/tm/go/feature/secrets/plugin/util.go +87 -0
  121. package/project/.sdk/tm/go/feature/secrets/plugin/version.go +161 -0
  122. package/project/.sdk/tm/go/feature/secrets/plugins/aws/aws.go +292 -0
  123. package/project/.sdk/tm/go/feature/secrets/plugins/aws/sigv4.go +201 -0
  124. package/project/.sdk/tm/go/feature/secrets/plugins/azuresecrets/azuresecrets.go +187 -0
  125. package/project/.sdk/tm/go/feature/secrets/plugins/boru/boru.go +184 -0
  126. package/project/.sdk/tm/go/feature/secrets/plugins/doppler/doppler.go +114 -0
  127. package/project/.sdk/tm/go/feature/secrets/plugins/gcpsecrets/gcpsecrets.go +156 -0
  128. package/project/.sdk/tm/go/feature/secrets/plugins/hashicorp/hashicorp.go +209 -0
  129. package/project/.sdk/tm/go/feature/secrets/plugins/httpjson/httpjson.go +241 -0
  130. package/project/.sdk/tm/go/feature/secrets/plugins/infisical/infisical.go +151 -0
  131. package/project/.sdk/tm/go/feature/secrets/plugins/onepassword/onepassword.go +152 -0
  132. package/project/.sdk/tm/go/feature/secrets/plugins/secretspec/secretspec.go +143 -0
  133. package/project/.sdk/tm/go/feature/secrets/sekreto/addr.go +120 -0
  134. package/project/.sdk/tm/go/feature/secrets/sekreto/providers.go +439 -0
  135. package/project/.sdk/tm/go/feature/secrets/sekreto/sekreto.go +685 -0
  136. package/project/.sdk/tm/go/feature/secrets_feature.go +675 -0
  137. package/project/.sdk/tm/go/src/feature/secrets/.gitkeep +0 -0
  138. package/project/.sdk/tm/go/test/feature/secrets/secrets_feature_test.go +799 -0
  139. package/project/.sdk/tm/go/test/omni/omni.go +897 -0
  140. package/project/.sdk/tm/go/test/omni/util.go +360 -0
  141. package/project/.sdk/tm/go/test/omniresolver_test.go +748 -0
  142. package/project/.sdk/tm/go/test/omnismoke_test.go +112 -0
  143. package/project/.sdk/tm/go/test/primary_utility_test.go +123 -191
  144. package/project/.sdk/tm/go/test/struct_utility_test.go +323 -16
  145. package/project/.sdk/tm/go/test/testsupport_test.go +294 -0
  146. package/project/.sdk/tm/go/utility/make_options.go +8 -1
  147. package/project/.sdk/tm/go/utility/prepare_method.go +5 -1
  148. package/project/.sdk/tm/go/utility/struct/voxgigstruct.go +2 -2
  149. package/project/.sdk/tm/java/test/OmniResolver.java +355 -0
  150. package/project/.sdk/tm/java/test/OmniSmokeTest.java +99 -0
  151. package/project/.sdk/tm/java/test/PrimaryUtilityTest.java +254 -280
  152. package/project/.sdk/tm/java/test/RunnerSupport.java +9 -194
  153. package/project/.sdk/tm/java/test/StructCorpusTest.java +119 -42
  154. package/project/.sdk/tm/java/test/vendor/omni/Json.java +287 -0
  155. package/project/.sdk/tm/java/test/vendor/omni/Runner.java +851 -0
  156. package/project/.sdk/tm/java/test/vendor/omni/Util.java +322 -0
  157. package/project/.sdk/tm/java/utility/MakeSpec.java +3 -1
  158. package/project/.sdk/tm/java/utility/PrepareMethod.java +5 -5
  159. package/project/.sdk/tm/java/utility/struct/Struct.java +17 -4
  160. package/project/.sdk/tm/js/src/utility/StructUtility.js +3 -3
  161. package/project/.sdk/tm/js/test/omni.js +251 -0
  162. package/project/.sdk/tm/js/test/omni.test.js +105 -0
  163. package/project/.sdk/tm/js/test/utility/PrimaryUtility.test.js +6 -2
  164. package/project/.sdk/tm/js/test/utility/StructUtility.test.js +27 -2
  165. package/project/.sdk/tm/js/test/vendor/omni/index.js +77 -0
  166. package/project/.sdk/tm/js/test/vendor/omni/runner.js +613 -0
  167. package/project/.sdk/tm/js/test/vendor/omni/util.js +212 -0
  168. package/project/.sdk/tm/kotlin/core/Utility.kt +1 -1
  169. package/project/.sdk/tm/kotlin/test/OmniResolver.kt +343 -0
  170. package/project/.sdk/tm/kotlin/test/OmniSmokeTest.kt +100 -0
  171. package/project/.sdk/tm/kotlin/test/PrimaryUtilityTest.kt +244 -262
  172. package/project/.sdk/tm/kotlin/test/RunnerSupport.kt +9 -178
  173. package/project/.sdk/tm/kotlin/test/StructCorpusTest.kt +121 -32
  174. package/project/.sdk/tm/kotlin/test/vendor/omni/Json.kt +264 -0
  175. package/project/.sdk/tm/kotlin/test/vendor/omni/Runner.kt +615 -0
  176. package/project/.sdk/tm/kotlin/test/vendor/omni/Util.kt +139 -0
  177. package/project/.sdk/tm/kotlin/utility/MakeSpecUrl.kt +6 -3
  178. package/project/.sdk/tm/kotlin/utility/Prepare.kt +6 -6
  179. package/project/.sdk/tm/kotlin/utility/struct/Struct.kt +18 -2
  180. package/project/.sdk/tm/lean/Makefile +12 -5
  181. package/project/.sdk/tm/lean/src/SdkUtility.lean +14 -1
  182. package/project/.sdk/tm/lean/test/OmniResolver.lean +358 -0
  183. package/project/.sdk/tm/lean/test/OmniSmoke.lean +174 -0
  184. package/project/.sdk/tm/lean/test/StructCorpus.lean +245 -574
  185. package/project/.sdk/tm/lean/test/TPrimaryUtility.lean +155 -291
  186. package/project/.sdk/tm/lean/test/vendor/omni/Omni.lean +997 -0
  187. package/project/.sdk/tm/lua/test/omni.lua +456 -0
  188. package/project/.sdk/tm/lua/test/omni_smoke_test.lua +103 -0
  189. package/project/.sdk/tm/lua/test/primary_utility_test.lua +250 -509
  190. package/project/.sdk/tm/lua/test/struct_utility_test.lua +161 -70
  191. package/project/.sdk/tm/lua/test/vendor/omni/json.lua +268 -0
  192. package/project/.sdk/tm/lua/test/vendor/omni/regex.lua +385 -0
  193. package/project/.sdk/tm/lua/test/vendor/omni/runner.lua +641 -0
  194. package/project/.sdk/tm/lua/test/vendor/omni/util.lua +282 -0
  195. package/project/.sdk/tm/lua/utility/prepare_method.lua +5 -1
  196. package/project/.sdk/tm/lua/utility/struct/regex.lua +663 -0
  197. package/project/.sdk/tm/lua/utility/struct/struct.lua +660 -420
  198. package/project/.sdk/tm/ocaml/Makefile +37 -12
  199. package/project/.sdk/tm/ocaml/test/omni_resolver.ml +284 -0
  200. package/project/.sdk/tm/ocaml/test/omni_smoke_test.ml +169 -0
  201. package/project/.sdk/tm/ocaml/test/primary_utility_test.ml +84 -100
  202. package/project/.sdk/tm/ocaml/test/struct_corpus.ml +225 -201
  203. package/project/.sdk/tm/ocaml/test/vendor/omni/omni.ml +1157 -0
  204. package/project/.sdk/tm/perl/lib/Voxgig/Struct.pm +88 -12
  205. package/project/.sdk/tm/perl/t/omni.pm +647 -0
  206. package/project/.sdk/tm/perl/t/omni_smoke.t +87 -0
  207. package/project/.sdk/tm/perl/t/primary_utility.t +189 -487
  208. package/project/.sdk/tm/perl/t/struct_utility.t +455 -389
  209. package/project/.sdk/tm/perl/t/vendor/omni/Voxgig/Omni/Runner.pm +649 -0
  210. package/project/.sdk/tm/perl/t/vendor/omni/Voxgig/Omni/Util.pm +253 -0
  211. package/project/.sdk/tm/perl/t/vendor/omni/Voxgig/Omni.pm +24 -0
  212. package/project/.sdk/tm/perl/utility/prepare_method.pm +7 -2
  213. package/project/.sdk/tm/php/test/Omni.php +691 -0
  214. package/project/.sdk/tm/php/test/OmniSmokeTest.php +93 -0
  215. package/project/.sdk/tm/php/test/PrimaryUtilityTest.php +210 -571
  216. package/project/.sdk/tm/php/test/StructUtilityTest.php +320 -342
  217. package/project/.sdk/tm/php/test/vendor/omni/Runner.php +644 -0
  218. package/project/.sdk/tm/php/test/vendor/omni/Util.php +283 -0
  219. package/project/.sdk/tm/php/utility/MakeSpec.php +10 -3
  220. package/project/.sdk/tm/php/utility/PrepareBody.php +7 -1
  221. package/project/.sdk/tm/php/utility/PrepareMethod.php +6 -2
  222. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/__init__.py +36 -0
  223. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/capability.py +141 -0
  224. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/catalog.py +50 -0
  225. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/config.py +333 -0
  226. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/depend.py +198 -0
  227. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/env.py +147 -0
  228. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/export.py +52 -0
  229. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/graph.py +139 -0
  230. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/host.py +1053 -0
  231. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/order.py +171 -0
  232. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/point.py +95 -0
  233. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/ref.py +116 -0
  234. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/resolve.py +59 -0
  235. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/types.py +87 -0
  236. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/version.py +112 -0
  237. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/__init__.py +74 -0
  238. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/addr.py +116 -0
  239. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/aws.py +192 -0
  240. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/azuresecrets.py +120 -0
  241. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/boru.py +140 -0
  242. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/doppler.py +62 -0
  243. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/gcpsecrets.py +101 -0
  244. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/hashicorp.py +152 -0
  245. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/httpjson.py +115 -0
  246. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/infisical.py +92 -0
  247. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/onepassword.py +101 -0
  248. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/secretspec.py +119 -0
  249. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/sigv4.py +125 -0
  250. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/providers.py +211 -0
  251. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/sekreto.py +455 -0
  252. package/project/.sdk/tm/py/pkg/feature/secrets_feature.py +467 -0
  253. package/project/.sdk/tm/py/pkg/utility/prepare_method.py +5 -1
  254. package/project/.sdk/tm/py/pkg/utility/voxgig_struct/__init__.py +0 -2
  255. package/project/.sdk/tm/py/pkg/utility/voxgig_struct/voxgig_struct.py +780 -529
  256. package/project/.sdk/tm/py/src/feature/secrets/.gitkeep +0 -0
  257. package/project/.sdk/tm/py/test/feature/__init__.py +0 -0
  258. package/project/.sdk/tm/py/test/feature/secrets/__init__.py +0 -0
  259. package/project/.sdk/tm/py/test/feature/secrets/test_secrets.py +337 -0
  260. package/project/.sdk/tm/py/test/omni.py +415 -0
  261. package/project/.sdk/tm/py/test/test_omni_smoke.py +74 -0
  262. package/project/.sdk/tm/py/test/test_primary_utility.py +144 -668
  263. package/project/.sdk/tm/py/test/test_struct_utility.py +74 -27
  264. package/project/.sdk/tm/py/test/voxgig_omni/__init__.py +62 -0
  265. package/project/.sdk/tm/py/test/voxgig_omni/runner.py +566 -0
  266. package/project/.sdk/tm/py/test/voxgig_omni/util.py +237 -0
  267. package/project/.sdk/tm/rb/test/omni.rb +505 -0
  268. package/project/.sdk/tm/rb/test/omni_smoke_test.rb +72 -0
  269. package/project/.sdk/tm/rb/test/primary_utility_test.rb +174 -560
  270. package/project/.sdk/tm/rb/test/struct_utility_test.rb +13 -7
  271. package/project/.sdk/tm/rb/test/vendor/omni/runner.rb +493 -0
  272. package/project/.sdk/tm/rb/test/vendor/omni/util.rb +199 -0
  273. package/project/.sdk/tm/rb/test/vendor/omni/voxgig_omni.rb +15 -0
  274. package/project/.sdk/tm/rb/utility/prepare_method.rb +5 -1
  275. package/project/.sdk/tm/rust/tests/common/mod.rs +19 -242
  276. package/project/.sdk/tm/rust/tests/omni_resolver/mod.rs +888 -0
  277. package/project/.sdk/tm/rust/tests/omni_smoke_test.rs +286 -0
  278. package/project/.sdk/tm/rust/tests/primary_utility_test.rs +318 -312
  279. package/project/.sdk/tm/rust/tests/struct_utility_test.rs +66 -28
  280. package/project/.sdk/tm/rust/tests/vendor/omni/json.rs +412 -0
  281. package/project/.sdk/tm/rust/tests/vendor/omni/mod.rs +38 -0
  282. package/project/.sdk/tm/rust/tests/vendor/omni/regex.rs +392 -0
  283. package/project/.sdk/tm/rust/tests/vendor/omni/runner.rs +1001 -0
  284. package/project/.sdk/tm/rust/tests/vendor/omni/util.rs +161 -0
  285. package/project/.sdk/tm/rust/utility/prepare_method.rs +5 -1
  286. package/project/.sdk/tm/scala/Makefile +16 -6
  287. package/project/.sdk/tm/scala/sdktest/OmniResolver.scala +497 -0
  288. package/project/.sdk/tm/scala/sdktest/OmniSmoke.scala +192 -0
  289. package/project/.sdk/tm/scala/sdktest/PrimaryCorpus.scala +47 -19
  290. package/project/.sdk/tm/scala/sdktest/StructCorpus.scala +0 -0
  291. package/project/.sdk/tm/scala/sdktest/vendor/omni/Json.scala +229 -0
  292. package/project/.sdk/tm/scala/sdktest/vendor/omni/Runner.scala +552 -0
  293. package/project/.sdk/tm/scala/sdktest/vendor/omni/Util.scala +104 -0
  294. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/Struct/Constants.swift +10 -0
  295. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/Struct/Inject.swift +28 -5
  296. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/Struct/Injection.swift +5 -1
  297. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/Struct/Minor.swift +4 -1
  298. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/Struct/Validate.swift +15 -5
  299. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/utility/Prepare.swift +6 -1
  300. package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/OmniResolver.swift +474 -0
  301. package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/OmniSmokeTest.swift +107 -0
  302. package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/PrimaryUtilityTest.swift +141 -178
  303. package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/Runner.swift +17 -113
  304. package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/StructUtilityTest.swift +295 -446
  305. package/project/.sdk/tm/swift/Tests/vendor/omni/Json.swift +364 -0
  306. package/project/.sdk/tm/swift/Tests/vendor/omni/Runner.swift +730 -0
  307. package/project/.sdk/tm/swift/Tests/vendor/omni/Util.swift +162 -0
  308. package/project/.sdk/tm/ts/src/feature/secrets/SecretsFeature.ts +7 -0
  309. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Capability.ts +148 -0
  310. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Catalog.ts +55 -0
  311. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Config.ts +344 -0
  312. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Depend.ts +205 -0
  313. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Env.ts +138 -0
  314. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Export.ts +46 -0
  315. package/project/.sdk/tm/ts/src/feature/secrets/plugin/FeatureHost.ts +349 -0
  316. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Graph.ts +181 -0
  317. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Host.ts +1132 -0
  318. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Order.ts +177 -0
  319. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Point.ts +119 -0
  320. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Ref.ts +102 -0
  321. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Resolve.ts +61 -0
  322. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Types.ts +112 -0
  323. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Version.ts +100 -0
  324. package/project/.sdk/tm/ts/src/feature/secrets/plugin/index.ts +37 -0
  325. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/Sekreto.ts +163 -30
  326. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/index.ts +27 -22
  327. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/aws.ts +26 -36
  328. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/azuresecrets.ts +19 -21
  329. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/boru.ts +36 -17
  330. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/doppler.ts +14 -21
  331. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/gcpsecrets.ts +27 -27
  332. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/hashicorp.ts +25 -39
  333. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/httpjson.ts +99 -0
  334. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/infisical.ts +14 -16
  335. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/onepassword.ts +15 -22
  336. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/secretspec.ts +98 -0
  337. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{Sigv4.ts → plugins/sigv4.ts} +7 -6
  338. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/addr.ts +97 -23
  339. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/builtin.ts +37 -0
  340. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/dotenv.ts +4 -17
  341. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/env.ts +4 -16
  342. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/file.ts +11 -25
  343. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/memory.ts +6 -23
  344. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/support.ts +106 -39
  345. package/project/.sdk/tm/ts/src/utility/StructUtility.ts +3 -3
  346. package/project/.sdk/tm/ts/test/omni.ts +104 -32
  347. package/project/.sdk/tm/ts/test/utility/StructUtility.test.ts +27 -0
  348. package/project/.sdk/tm/ts/test/vendor/omni/Runner.ts +32 -5
  349. package/project/.sdk/tm/ts/test/vendor/omni/Util.ts +2 -2
  350. package/project/.sdk/tm/ts/test/vendor/omni/index.ts +2 -2
  351. package/project/.sdk/tm/zig/test/primary_utility_test.zig +1 -1
  352. package/project/.sdk/tm/zig/test/struct_runner.zig +5 -4
  353. package/project/sdkgen-package.json +1 -1
  354. package/src/action/doctor.ts +66 -2
  355. package/src/helpers/naming.ts +4 -2
  356. package/project/.sdk/tm/c/tests/runner.h +0 -274
  357. package/project/.sdk/tm/cpp/test/struct_runner.hpp +0 -314
  358. package/project/.sdk/tm/csharp/test/StructRunner.cs +0 -276
  359. package/project/.sdk/tm/dart/test/runner.dart +0 -406
  360. package/project/.sdk/tm/dart/test/struct_corpus.dart +0 -531
  361. package/project/.sdk/tm/elixir/test/support/struct_corpus.ex +0 -1088
  362. package/project/.sdk/tm/go/test/runner_test.go +0 -629
  363. package/project/.sdk/tm/go/test/struct_runner_test.go +0 -1094
  364. package/project/.sdk/tm/java/test/StructRunner.java +0 -281
  365. package/project/.sdk/tm/js/test/runner.js +0 -387
  366. package/project/.sdk/tm/kotlin/test/StructRunner.kt +0 -177
  367. package/project/.sdk/tm/lua/test/struct_runner.lua +0 -602
  368. package/project/.sdk/tm/ocaml/test/corpus_runner.ml +0 -185
  369. package/project/.sdk/tm/perl/t/struct_runner.pm +0 -275
  370. package/project/.sdk/tm/php/test/StructRunner.php +0 -275
  371. package/project/.sdk/tm/py/test/struct_runner.py +0 -411
  372. package/project/.sdk/tm/rb/test/struct_runner.rb +0 -309
  373. package/project/.sdk/tm/rust/tests/struct_runner/mod.rs +0 -424
  374. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/Registry.ts +0 -90
  375. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/http.ts +0 -66
  376. package/project/.sdk/tm/ts/test/vendor/omni/compat.ts +0 -188
@@ -1,17 +1,35 @@
1
- /* Primary-utility corpus driver — C port.
1
+ /* Primary-utility corpus driver — C port, on the VENDORED @voxgig/omni
2
+ * runner (tests/vendor/omni, driven through tests/omni_resolver.h).
2
3
  *
3
- * Drives every `primary` section of the shared corpus (.sdk/test/test.json)
4
- * through this SDK's utilities, the way the ts reference harness does. The
5
- * hand-written primary_utility_test.c beside this file covers the same
6
- * utilities with directly-constructed contexts; that suite can drift from the
7
- * contract, this one cannot — the cases ARE the contract.
4
+ * Drives the `primary` sections of the shared corpus (.sdk/test/test.json)
5
+ * through this SDK's utilities. The hand-written primary_utility_test.c
6
+ * beside this file covers the same utilities with directly-constructed
7
+ * contexts; that suite can drift from the contract, this one cannot — the
8
+ * cases ARE the contract.
8
9
  *
9
- * The corpus entry shapes are ctx+out, ctx+match, ctx+mark+out, args+mark+out,
10
- * args+err and in+match. `mark` is a case label, not an assertion.
10
+ * The corpus entry shapes are ctx+out, ctx+match, ctx+mark+out,
11
+ * args+mark+out, args+err and in+match. `mark` is a case label, not an
12
+ * assertion. omni resolves the arguments, calls the subject, and checks
13
+ * `out` / `match` / `err`; the second inline copy of the match engine this
14
+ * file used to carry (matchval + do_match) is retired along with
15
+ * tests/runner.h.
16
+ *
17
+ * CONTEXTS STAY MAPS ACROSS THE RUNNER (java's decision 1, omni#56). omni
18
+ * sets `entry.ctx` to the args[0] map and a `match: {ctx: ...}` assertion
19
+ * reads THROUGH it with omni's own getpath, which walks JSON values only.
20
+ * A typed Context there would make every ctx assertion read "absent". So
21
+ * the subject receives the MAP, builds the typed Context with corpus_ctx()
22
+ * at the call site, runs the utility, and writes the observable ctx state
23
+ * back into the very same omni map with publish_ctx() — which is what
24
+ * makes `match: {ctx: {spec: {step: "reqform"}}}` resolve.
25
+ *
26
+ * NOT YET DRIVEN (the corpus carries them; no subject here yet): check,
27
+ * clean, featureAdd, featureHook, featureInit, fetcher, makeFetchDef,
28
+ * makePoint, makeResult.
11
29
  */
12
30
 
13
31
  #include "feature_harness.h" /* test_sdk + Fetcher helpers + ctest.h */
14
- #include "runner.h" /* normalize + deep_equal, shared with the struct corpus */
32
+ #include "omni_resolver.h" /* vendored omni + the voxgig<->omni bridge */
15
33
  #include "voxgig_struct.h"
16
34
 
17
35
  #include <ctype.h>
@@ -19,9 +37,36 @@
19
37
  #include <stdlib.h>
20
38
  #include <string.h>
21
39
 
22
- static voxgig_value* CORPUS = NULL;
23
- static int NPASS = 0;
24
- static int NFAIL = 0;
40
+ /* The shared corpus, compiled by the project build. Relative to the target
41
+ * root, which is where the Makefile runs each test binary from. */
42
+ #define TEST_JSON_FILE "../.sdk/test/test.json"
43
+
44
+ static omni_pool* POOL = NULL;
45
+ static omni_runner* RUNNER = NULL;
46
+
47
+ /* Section scoreboard. omni stops a set at its FIRST failing entry, so a
48
+ * row is pass/fail plus the number of cases the section HOLDS — the count
49
+ * that proves the corpus still runs. */
50
+ typedef struct prow {
51
+ char* name;
52
+ size_t cases;
53
+ int failed;
54
+ char* err;
55
+ } prow;
56
+
57
+ static prow ROWS[64];
58
+ static size_t NROWS = 0;
59
+
60
+ static void row_add(const char* name, size_t cases, int failed, const char* err) {
61
+ if (NROWS >= sizeof(ROWS) / sizeof(ROWS[0])) {
62
+ return;
63
+ }
64
+ ROWS[NROWS].name = strdup(name);
65
+ ROWS[NROWS].cases = cases;
66
+ ROWS[NROWS].failed = failed;
67
+ ROWS[NROWS].err = err ? strdup(err) : NULL;
68
+ NROWS++;
69
+ }
25
70
 
26
71
  /* ---- corpus access ------------------------------------------------------ */
27
72
 
@@ -30,122 +75,16 @@ static voxgig_value* mget(voxgig_value* m, const char* k) {
30
75
  return voxgig_map_get(voxgig_as_map(m), k);
31
76
  }
32
77
 
33
- static voxgig_value* primary_root(void) {
34
- if (!CORPUS) CORPUS = voxgig_parse_json_file("../.sdk/test/test.json");
35
- voxgig_value* p = mget(CORPUS, "primary");
36
- return p ? p : v_map();
37
- }
38
-
39
- /* section(name) -> the `basic` node, which carries `set`. */
40
- static voxgig_value* section_basic(const char* name) {
41
- voxgig_value* sec = mget(primary_root(), name);
42
- voxgig_value* basic = mget(sec, "basic");
43
- return basic ? basic : v_map();
44
- }
45
-
46
- /* A section may carry its own client setup at DEF.setup.a — makeSpec and
47
- * prepareAuth read defaults off the CLIENT, not off ctx.options, so those two
48
- * cannot be driven with the shared client. */
49
- static voxgig_value* section_setup(const char* name) {
50
- voxgig_value* sec = mget(primary_root(), name);
51
- voxgig_value* def = mget(sec, "DEF");
52
- voxgig_value* setup = mget(def, "setup");
53
- voxgig_value* a = mget(setup, "a");
54
- return a;
55
- }
56
-
57
- /* ---- match machinery ---------------------------------------------------- */
58
-
59
- static char* vstr(voxgig_value* v) {
60
- if (!v) return strdup("");
61
- char* s = voxgig_stringify(v, -1);
62
- return s ? s : strdup("");
63
- }
64
-
65
78
  static char* lower_dup(const char* s) {
66
79
  char* o = strdup(s ? s : "");
67
80
  for (char* p = o; *p; p++) *p = (char)tolower((unsigned char)*p);
68
81
  return o;
69
82
  }
70
83
 
71
- static bool is_nullish(voxgig_value* v) {
72
- return v == NULL || voxgig_is_undef(v) || voxgig_is_null(v);
73
- }
74
-
75
- static bool matchval(voxgig_value* check, voxgig_value* base) {
76
- voxgig_value* nc = normalize(check);
77
- voxgig_value* nb = normalize(base);
78
- bool eq = deep_equal(nc, nb);
79
- voxgig_release(nc);
80
- voxgig_release(nb);
81
- if (eq) return true;
82
-
83
- if (!check || !v_is_str(check)) return false;
84
- const char* c = voxgig_as_string(check);
85
- if (strcmp(c, "__UNDEF__") == 0) return is_nullish(base);
86
- if (strcmp(c, "__EXISTS__") == 0) return !is_nullish(base);
87
-
88
- char* bs = vstr(base);
89
- size_t cl = strlen(c);
90
-
91
- /* A /pattern/ is a regex over the stringified base. */
92
- if (2 <= cl && c[0] == '/' && c[cl - 1] == '/') {
93
- char* pat = (char*)malloc(cl - 1);
94
- memcpy(pat, c + 1, cl - 2);
95
- pat[cl - 2] = '\0';
96
- bool ok = voxgig_re_test(pat, bs);
97
- free(pat);
98
- free(bs);
99
- return ok;
100
- }
101
-
102
- /* Otherwise a case-insensitive substring, as the reference does. */
103
- char* lb = lower_dup(bs);
104
- char* lc = lower_dup(c);
105
- bool ok = strstr(lb, lc) != NULL;
106
- free(lb);
107
- free(lc);
108
- free(bs);
109
- return ok;
110
- }
111
-
112
- /* Walk the CHECK structure; every leaf must matchval at the same path in
113
- * base. A missing path in base reads as null, which only __UNDEF__ matches. */
114
- static bool do_match(voxgig_value* check, voxgig_value* base,
115
- const char* path, char** fail) {
116
- if (voxgig_is_map(check)) {
117
- voxgig_map* m = voxgig_as_map(check);
118
- for (size_t i = 0; i < m->len; i++) {
119
- const char* k = m->entries[i].key;
120
- char sub[512];
121
- snprintf(sub, sizeof(sub), "%s%s%s", path, path[0] ? "." : "", k);
122
- if (!do_match(m->entries[i].value, mget(base, k), sub, fail)) return false;
123
- }
124
- return true;
125
- }
126
- if (voxgig_is_list(check)) {
127
- voxgig_list* l = voxgig_as_list(check);
128
- for (size_t i = 0; i < l->len; i++) {
129
- char sub[512];
130
- snprintf(sub, sizeof(sub), "%s.%zu", path, i);
131
- voxgig_value* be = NULL;
132
- if (voxgig_is_list(base) && i < voxgig_as_list(base)->len) {
133
- be = voxgig_as_list(base)->items[i];
134
- }
135
- if (!do_match(l->items[i], be, sub, fail)) return false;
136
- }
137
- return true;
138
- }
139
- if (matchval(check, base)) return true;
140
-
141
- char* cs = vstr(check);
142
- char* bs = vstr(base);
143
- char buf[1024];
144
- snprintf(buf, sizeof(buf), "MATCH: %s: [%s] <=> [%s]", path, cs, bs);
145
- free(cs);
146
- free(bs);
147
- *fail = strdup(buf);
148
- return false;
84
+ static voxgig_value* arg_at(voxgig_value* args, size_t i) {
85
+ if (!voxgig_is_list(args)) return NULL;
86
+ voxgig_list* l = voxgig_as_list(args);
87
+ return i < l->len ? l->items[i] : NULL;
149
88
  }
150
89
 
151
90
  /* ---- live context from a corpus map ------------------------------------- */
@@ -223,13 +162,15 @@ static Context* corpus_ctx(ProjectNameSDK* cl, voxgig_value* ctxmap) {
223
162
  return ctx;
224
163
  }
225
164
 
226
- /* The match reads the corpus map while the utilities mutate the live objects
227
- * hanging off the context, so without this every ctx.* assertion reads null. */
228
- static void publish_ctx(voxgig_value* ctxmap, Context* ctx) {
229
- if (!voxgig_is_map(ctxmap)) return;
230
- if (ctx->spec) setp(ctxmap, "spec", spec_to_value(ctx->spec));
231
- if (ctx->result) setp(ctxmap, "result", result_to_value(ctx->result));
232
- if (ctx->response) setp(ctxmap, "response", v_str("__EXISTS__"));
165
+ /* Write the OBSERVABLE state of the typed context back into the omni ctx
166
+ * map the entry holds, which is where a `match: {ctx: ...}` assertion
167
+ * reads. The subject mutated the typed context; the map is what the runner
168
+ * can walk. */
169
+ static void publish_ctx(omni_pool* pool, omni_json* ctxmap, Context* ctx) {
170
+ if (NULL == ctx || !omni_ismap(ctxmap)) return;
171
+ if (ctx->spec) omni_map_set(ctxmap, "spec", omnivx_tomni(pool, spec_to_value(ctx->spec)));
172
+ if (ctx->result) omni_map_set(ctxmap, "result", omnivx_tomni(pool, result_to_value(ctx->result)));
173
+ if (ctx->response) omni_map_set(ctxmap, "response", omni_str(pool, OMNI_EXISTSMARK));
233
174
  }
234
175
 
235
176
  /* ---- the section runner ------------------------------------------------- */
@@ -237,138 +178,97 @@ static void publish_ctx(voxgig_value* ctxmap, Context* ctx) {
237
178
  typedef voxgig_value* (*ctxfn)(Context* ctx, voxgig_value* args, char** err);
238
179
  typedef voxgig_value* (*argfn)(voxgig_value* args, char** err);
239
180
 
240
- static void record(const char* section, bool ok, const char* msg) {
241
- if (ok) {
242
- NPASS++;
181
+ typedef struct psubj {
182
+ ctxfn cf;
183
+ argfn af;
184
+ ProjectNameSDK* cl;
185
+ } psubj;
186
+
187
+ /* The omni subject: omni values in, omni value (or error message) out. */
188
+ static omni_result primary_call(omni_pool* pool, omni_json** args, size_t nargs, void* ud) {
189
+ psubj* p = (psubj*)ud;
190
+ omni_result out;
191
+ voxgig_value* vargs = v_list();
192
+ voxgig_value* got = NULL;
193
+ char* err = NULL;
194
+ size_t i;
195
+
196
+ out.val = NULL;
197
+ out.err = NULL;
198
+
199
+ for (i = 0; i < nargs; i++) {
200
+ voxgig_list_push(voxgig_as_list(vargs), omnivx_tovx(args[i]));
201
+ }
202
+
203
+ if (p->cf) {
204
+ voxgig_value* first = arg_at(vargs, 0);
205
+ Context* ctx = corpus_ctx(p->cl, first);
206
+ got = p->cf(ctx, vargs, &err);
207
+ if (0 < nargs) publish_ctx(pool, args[0], ctx);
243
208
  } else {
244
- NFAIL++;
245
- printf("PRIMARY-FAIL %s - %s\n", section, msg ? msg : "?");
209
+ got = p->af(vargs, &err);
246
210
  }
247
- }
248
211
 
249
- static voxgig_value* arg_at(voxgig_value* args, size_t i) {
250
- if (!voxgig_is_list(args)) return NULL;
251
- voxgig_list* l = voxgig_as_list(args);
252
- return i < l->len ? l->items[i] : NULL;
253
- }
212
+ if (NULL != err) {
213
+ out.err = omni_pool_strdup(pool, err);
214
+ free(err);
215
+ return out;
216
+ }
254
217
 
255
- static void runset(const char* name, ProjectNameSDK* cl,
256
- ctxfn cf, argfn af) {
257
- voxgig_value* basic = section_basic(name);
258
- voxgig_value* set = mget(basic, "set");
259
- if (!voxgig_is_list(set)) return;
260
- voxgig_list* sl = voxgig_as_list(set);
261
-
262
- for (size_t i = 0; i < sl->len; i++) {
263
- voxgig_value* entry = sl->items[i];
264
- if (!voxgig_is_map(entry)) continue;
265
-
266
- /* resolve_args, mirroring the ts runner. */
267
- voxgig_value* args = v_list();
268
- voxgig_value* ectx = mget(entry, "ctx");
269
- voxgig_value* eargs = mget(entry, "args");
270
- voxgig_value* ein = mget(entry, "in");
271
- if (ectx) {
272
- voxgig_list_push(voxgig_as_list(args), voxgig_clone(ectx));
273
- } else if (voxgig_is_list(eargs)) {
274
- voxgig_list* al = voxgig_as_list(eargs);
275
- for (size_t k = 0; k < al->len; k++) {
276
- voxgig_list_push(voxgig_as_list(args), voxgig_retain(al->items[k]));
277
- }
278
- } else if (ein) {
279
- voxgig_list_push(voxgig_as_list(args), voxgig_clone(ein));
280
- }
218
+ out.val = omnivx_tomni(pool, got);
219
+ return out;
220
+ }
281
221
 
282
- /* ts's resolveArgs writes the live first arg back as entry.ctx so a
283
- * `match: {ctx: ...}` resolves for args-style entries too. */
284
- voxgig_value* first = arg_at(args, 0);
285
- if (voxgig_is_map(first)) setp(entry, "ctx", voxgig_retain(first));
286
-
287
- char* err = NULL;
288
- voxgig_value* got = NULL;
289
- if (cf) {
290
- Context* ctx = corpus_ctx(cl, first);
291
- got = cf(ctx, args, &err);
292
- publish_ctx(first, ctx);
293
- } else {
294
- got = af(args, &err);
295
- }
222
+ /* A section may carry its own client setup at DEF.setup.a makeSpec and
223
+ * prepareAuth read defaults off the CLIENT, not off ctx.options, so those
224
+ * two cannot be driven with the shared client. */
225
+ static ProjectNameSDK* SHARED = NULL;
296
226
 
297
- voxgig_value* eerr = mget(entry, "err");
298
- if (eerr && !v_is_noval(eerr)) {
299
- /* The case expects a failure. */
300
- if (!err) {
301
- record(name, false, "expected an error, got none");
302
- continue;
303
- }
304
- voxgig_value* errv = v_str(err);
305
- bool ok = (voxgig_is_bool(eerr) && voxgig_as_bool(eerr)) || matchval(eerr, errv);
306
- if (!ok) {
307
- char* es = vstr(eerr);
308
- char buf[1024];
309
- snprintf(buf, sizeof(buf), "ERROR MATCH: [%s] <=> [%s]", es, err);
310
- free(es);
311
- record(name, false, buf);
312
- continue;
313
- }
314
- voxgig_value* emat = mget(entry, "match");
315
- if (voxgig_is_map(emat)) {
316
- /* ts hands do_match the ERROR OBJECT, so `match: {err: {message}}`
317
- * resolves; a bare string leaves err.message reading null. */
318
- voxgig_value* base = cmap(4, "in", ein ? voxgig_retain(ein) : v_undef(),
319
- "out", got ? voxgig_retain(got) : v_undef(),
320
- "ctx", voxgig_retain(mget(entry, "ctx")),
321
- "err", cmap(1, "message", v_str(err)));
322
- char* fail = NULL;
323
- if (!do_match(emat, base, "", &fail)) {
324
- record(name, false, fail);
325
- continue;
326
- }
327
- }
328
- record(name, true, NULL);
329
- continue;
330
- }
227
+ static ProjectNameSDK* client_for(omni_json* spec) {
228
+ omni_json* setup = omni_map_get(omni_map_get(omni_map_get(spec, "DEF"), "setup"), "a");
229
+ if (omni_ismap(setup)) {
230
+ return test_sdk(v_undef(), omnivx_tovx(setup));
231
+ }
232
+ return SHARED;
233
+ }
331
234
 
332
- if (err) {
333
- record(name, false, err);
334
- continue;
335
- }
235
+ /* Resolve `primary.<name>.basic` and run it. An ABSENT section, or one
236
+ * with no entries, is a FAILURE: a section that runs no case proves
237
+ * nothing. */
238
+ static void runset(const char* name, ctxfn cf, argfn af) {
239
+ omni_runpack* pack;
240
+ omni_json* basic;
241
+ size_t cases;
242
+ char* err = NULL;
243
+ int failed;
244
+ psubj* p;
245
+
246
+ pack = omni_runner_run(RUNNER, name, NULL, &err);
247
+ if (NULL == pack || !omni_ismap(omni_spec(pack))) {
248
+ row_add(name, 0, 1, "corpus section missing - check .sdk/test/primary/");
249
+ return;
250
+ }
336
251
 
337
- /* check_result: `match` first, then `out`. */
338
- bool matched = false;
339
- voxgig_value* emat = mget(entry, "match");
340
- if (voxgig_is_map(emat)) {
341
- voxgig_value* base = cmap(4, "in", ein ? voxgig_retain(ein) : v_undef(),
342
- "args", voxgig_retain(args),
343
- "out", got ? voxgig_retain(got) : v_undef(),
344
- "ctx", voxgig_retain(mget(entry, "ctx")));
345
- char* fail = NULL;
346
- if (!do_match(emat, base, "", &fail)) {
347
- record(name, false, fail);
348
- continue;
349
- }
350
- matched = true;
351
- }
252
+ basic = omni_set(pack, "basic");
253
+ if (!omni_ismap(basic)) {
254
+ row_add(name, 0, 1, "corpus section has no `basic` group");
255
+ return;
256
+ }
352
257
 
353
- voxgig_value* eout = mget(entry, "out");
354
- voxgig_value* expected = eout ? eout : v_null();
355
- voxgig_value* ne = normalize(expected);
356
- voxgig_value* ng = normalize(got);
357
- bool eq = deep_equal(ne, ng);
358
- voxgig_release(ne);
359
- voxgig_release(ng);
360
- if (!eq && !(matched && !eout)) {
361
- char* es = vstr(expected);
362
- char* gs = vstr(got);
363
- char buf[1024];
364
- snprintf(buf, sizeof(buf), "Expected: %s, got: %s", es, gs);
365
- free(es);
366
- free(gs);
367
- record(name, false, buf);
368
- continue;
369
- }
370
- record(name, true, NULL);
258
+ cases = omnivx_setsize(basic);
259
+ if (0 == cases) {
260
+ row_add(name, 0, 1, "corpus section is EMPTY - zero cases would run");
261
+ return;
371
262
  }
263
+
264
+ p = (psubj*)omni_pool_alloc(POOL, sizeof(psubj));
265
+ p->cf = cf;
266
+ p->af = af;
267
+ p->cl = client_for(omni_spec(pack));
268
+
269
+ failed = omni_runsetflags(pack, basic, omnivx_flags(1, name),
270
+ omnivx_rawsubject(POOL, primary_call, p), &err);
271
+ row_add(name, cases, failed, err);
372
272
  }
373
273
 
374
274
  /* ---- per-section subjects ----------------------------------------------- */
@@ -488,7 +388,6 @@ static voxgig_value* s_make_error(Context* c, voxgig_value* a, char** e) {
488
388
  }
489
389
 
490
390
  /* Sections that take a bare map rather than a ctx. */
491
- static ProjectNameSDK* SHARED = NULL;
492
391
 
493
392
  static voxgig_value* s_make_context(voxgig_value* a, char** e) {
494
393
  (void)e;
@@ -525,41 +424,63 @@ static voxgig_value* s_operator(voxgig_value* a, char** e) {
525
424
  "name", nm ? voxgig_retain(nm) : v_str("_"),
526
425
  "points", voxgig_is_list(pts) ? voxgig_retain(pts) : v_list());
527
426
  }
528
-
529
427
  /* ---- main --------------------------------------------------------------- */
530
428
 
531
- static ProjectNameSDK* client_for(const char* section) {
532
- voxgig_value* setup = section_setup(section);
533
- if (voxgig_is_map(setup)) return test_sdk(v_undef(), voxgig_clone(setup));
534
- return SHARED;
535
- }
536
-
537
429
  int main(void) {
430
+ char* err = NULL;
431
+ size_t cases = 0;
432
+ int failed = 0;
433
+ size_t i;
434
+
435
+ POOL = omni_pool_new();
436
+
437
+ RUNNER = omni_make_runner(POOL, TEST_JSON_FILE, NULL, NULL, &err);
438
+ if (NULL == RUNNER) {
439
+ fprintf(stderr, "primary corpus: %s\n", NULL == err ? "cannot make runner" : err);
440
+ return 1;
441
+ }
442
+
538
443
  SHARED = test_sdk(v_undef(), v_undef());
539
444
 
540
- runset("done", SHARED, s_done, NULL);
541
- runset("makeUrl", SHARED, s_make_url, NULL);
542
- runset("makeRequest", SHARED, s_make_request, NULL);
543
- runset("makeResponse", SHARED, s_make_response, NULL);
544
- runset("makeSpec", client_for("makeSpec"), s_make_spec, NULL);
545
- runset("prepareAuth", client_for("prepareAuth"), s_prepare_auth, NULL);
546
- runset("prepareBody", SHARED, s_prepare_body, NULL);
547
- runset("prepareHeaders", SHARED, s_prepare_headers, NULL);
548
- runset("prepareMethod", SHARED, s_prepare_method, NULL);
549
- runset("prepareParams", SHARED, s_prepare_params, NULL);
550
- runset("preparePath", SHARED, s_prepare_path, NULL);
551
- runset("prepareQuery", SHARED, s_prepare_query, NULL);
552
- runset("resultBasic", SHARED, s_result_basic, NULL);
553
- runset("resultBody", SHARED, s_result_body, NULL);
554
- runset("resultHeaders", SHARED, s_result_headers, NULL);
555
- runset("transformRequest", SHARED, s_transform_request, NULL);
556
- runset("transformResponse", SHARED, s_transform_response, NULL);
557
- runset("param", SHARED, s_param, NULL);
558
- runset("makeError", SHARED, s_make_error, NULL);
559
- runset("makeContext", SHARED, NULL, s_make_context);
560
- runset("makeOptions", SHARED, NULL, s_make_options);
561
- runset("operator", SHARED, NULL, s_operator);
562
-
563
- printf("\nPRIMARY CORPUS: PASS %d FAIL %d\n", NPASS, NFAIL);
564
- return NFAIL == 0 ? 0 : 1;
445
+ runset("done", s_done, NULL);
446
+ runset("makeUrl", s_make_url, NULL);
447
+ runset("makeRequest", s_make_request, NULL);
448
+ runset("makeResponse", s_make_response, NULL);
449
+ runset("makeSpec", s_make_spec, NULL);
450
+ runset("prepareAuth", s_prepare_auth, NULL);
451
+ runset("prepareBody", s_prepare_body, NULL);
452
+ runset("prepareHeaders", s_prepare_headers, NULL);
453
+ runset("prepareMethod", s_prepare_method, NULL);
454
+ runset("prepareParams", s_prepare_params, NULL);
455
+ runset("preparePath", s_prepare_path, NULL);
456
+ runset("prepareQuery", s_prepare_query, NULL);
457
+ runset("resultBasic", s_result_basic, NULL);
458
+ runset("resultBody", s_result_body, NULL);
459
+ runset("resultHeaders", s_result_headers, NULL);
460
+ runset("transformRequest", s_transform_request, NULL);
461
+ runset("transformResponse", s_transform_response, NULL);
462
+ runset("param", s_param, NULL);
463
+ runset("makeError", s_make_error, NULL);
464
+ runset("makeContext", NULL, s_make_context);
465
+ runset("makeOptions", NULL, s_make_options);
466
+ runset("operator", NULL, s_operator);
467
+
468
+ for (i = 0; i < NROWS; i++) {
469
+ cases += ROWS[i].cases;
470
+ failed += ROWS[i].failed ? 1 : 0;
471
+ if (ROWS[i].failed) {
472
+ printf("PRIMARY-FAIL %s - %s\n", ROWS[i].name,
473
+ NULL == ROWS[i].err ? "(no message)" : ROWS[i].err);
474
+ }
475
+ }
476
+
477
+ printf("\nPRIMARY CORPUS: %zu cases in %zu sections, %d section(s) FAILED\n", cases, NROWS,
478
+ failed);
479
+
480
+ for (i = 0; i < NROWS; i++) {
481
+ free(ROWS[i].name);
482
+ free(ROWS[i].err);
483
+ }
484
+
485
+ return 0 == failed ? 0 : 1;
565
486
  }