@voxgig/sdkgen 4.8.2 → 4.9.0

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 (407) 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/model/target/zig.aon +9 -0
  33. package/project/.sdk/src/cmp/clojure/Package_clojure.ts +9 -2
  34. package/project/.sdk/src/cmp/cpp/Gitignore_cpp.ts +3 -0
  35. package/project/.sdk/src/cmp/dart/Test_dart.ts +2 -0
  36. package/project/.sdk/src/cmp/elixir/Package_elixir.ts +4 -1
  37. package/project/.sdk/src/cmp/go/Config_go.ts +59 -2
  38. package/project/.sdk/src/cmp/go/Main_go.ts +8 -2
  39. package/project/.sdk/src/cmp/java/Test_java.ts +6 -5
  40. package/project/.sdk/src/cmp/kotlin/Test_kotlin.ts +6 -5
  41. package/project/.sdk/src/cmp/lean/Package_lean.ts +23 -0
  42. package/project/.sdk/src/cmp/lean/ReadmeInstall_lean.ts +1 -0
  43. package/project/.sdk/src/cmp/lean/ReadmeTopTest_lean.ts +1 -0
  44. package/project/.sdk/src/cmp/ocaml/Gitignore_ocaml.ts +1 -0
  45. package/project/.sdk/src/cmp/ocaml/Main_ocaml.ts +7 -3
  46. package/project/.sdk/src/cmp/py/Config_py.ts +82 -1
  47. package/project/.sdk/src/cmp/py/Main_py.ts +44 -0
  48. package/project/.sdk/src/cmp/py/fragment/Main.fragment.py +2 -0
  49. package/project/.sdk/src/cmp/swift/Main_swift.ts +10 -0
  50. package/project/.sdk/src/cmp/swift/Package_swift.ts +13 -1
  51. package/project/.sdk/src/cmp/ts/Config_ts.ts +42 -17
  52. package/project/.sdk/src/cmp/ts/fragment/Config.data.fragment.ts +13 -1
  53. package/project/.sdk/src/cmp/ts/fragment/Config.fragment.ts +13 -1
  54. package/project/.sdk/src/cmp/zig/Package_zig.ts +15 -11
  55. package/project/.sdk/src/cmp/zig/fragment/Entity.fragment.zig +3 -3
  56. package/project/.sdk/src/cmp/zig/fragment/EntityListOp.fragment.zig +3 -3
  57. package/project/.sdk/src/cmp/zig/fragment/Main.fragment.zig +3 -3
  58. package/project/.sdk/src/cmp/zig/utility_zig.ts +50 -1
  59. package/project/.sdk/tm/c/Makefile +38 -3
  60. package/project/.sdk/tm/c/tests/omni_resolver.h +361 -0
  61. package/project/.sdk/tm/c/tests/omni_smoke_test.c +237 -0
  62. package/project/.sdk/tm/c/tests/primary_corpus_test.c +205 -284
  63. package/project/.sdk/tm/c/tests/struct_corpus_test.c +292 -212
  64. package/project/.sdk/tm/c/tests/vendor/omni/json.c +811 -0
  65. package/project/.sdk/tm/c/tests/vendor/omni/omni.h +240 -0
  66. package/project/.sdk/tm/c/tests/vendor/omni/runner.c +940 -0
  67. package/project/.sdk/tm/c/tests/vendor/omni/util.c +351 -0
  68. package/project/.sdk/tm/c/utility/struct/utility.c +7 -2
  69. package/project/.sdk/tm/clojure/test/sdk/test/omni.clj +401 -0
  70. package/project/.sdk/tm/clojure/test/sdk/test/omni_smoke.clj +81 -0
  71. package/project/.sdk/tm/clojure/test/sdk/test/primary.clj +92 -58
  72. package/project/.sdk/tm/clojure/test/sdk/test/struct_corpus.clj +122 -149
  73. package/project/.sdk/tm/clojure/test/sdk/test_runner.clj +8 -3
  74. package/project/.sdk/tm/clojure/test/vendor/omni/voxgig/omni/json.clj +145 -0
  75. package/project/.sdk/tm/clojure/test/vendor/omni/voxgig/omni/runner.clj +445 -0
  76. package/project/.sdk/tm/clojure/test/vendor/omni/voxgig/omni/util.clj +145 -0
  77. package/project/.sdk/tm/cpp/Makefile +5 -1
  78. package/project/.sdk/tm/cpp/test/omni_resolver.hpp +473 -0
  79. package/project/.sdk/tm/cpp/test/omni_smoke_test.cpp +209 -0
  80. package/project/.sdk/tm/cpp/test/primary_utility_test.cpp +243 -184
  81. package/project/.sdk/tm/cpp/test/runner_support.hpp +68 -181
  82. package/project/.sdk/tm/cpp/test/struct_corpus_test.cpp +183 -56
  83. package/project/.sdk/tm/cpp/test/vendor/omni/json.hpp +406 -0
  84. package/project/.sdk/tm/cpp/test/vendor/omni/omni.hpp +751 -0
  85. package/project/.sdk/tm/cpp/test/vendor/omni/util.hpp +256 -0
  86. package/project/.sdk/tm/cpp/utility/pipeline.hpp +7 -1
  87. package/project/.sdk/tm/csharp/test/OmniResolver.cs +491 -0
  88. package/project/.sdk/tm/csharp/test/OmniSmokeTest.cs +106 -0
  89. package/project/.sdk/tm/csharp/test/PrimaryUtilityTest.cs +299 -316
  90. package/project/.sdk/tm/csharp/test/Runner.cs +104 -269
  91. package/project/.sdk/tm/csharp/test/StructUtilityTest.cs +535 -724
  92. package/project/.sdk/tm/csharp/test/vendor/omni/Runner.cs +864 -0
  93. package/project/.sdk/tm/csharp/test/vendor/omni/Util.cs +347 -0
  94. package/project/.sdk/tm/csharp/utility/MakeSpec.cs +3 -1
  95. package/project/.sdk/tm/csharp/utility/PrepareMethod.cs +6 -1
  96. package/project/.sdk/tm/csharp/utility/struct/Struct.cs +21 -5
  97. package/project/.sdk/tm/dart/test/omni.dart +520 -0
  98. package/project/.sdk/tm/dart/test/omni_smoke_test.dart +143 -0
  99. package/project/.sdk/tm/dart/test/primary_test.dart +86 -28
  100. package/project/.sdk/tm/dart/test/struct_test.dart +438 -11
  101. package/project/.sdk/tm/dart/test/vendor/omni/omni.dart +7 -0
  102. package/project/.sdk/tm/dart/test/vendor/omni/runner.dart +653 -0
  103. package/project/.sdk/tm/dart/test/vendor/omni/util.dart +232 -0
  104. package/project/.sdk/tm/elixir/Makefile +11 -3
  105. package/project/.sdk/tm/elixir/test/omni_smoke_test.exs +117 -0
  106. package/project/.sdk/tm/elixir/test/primary_utility_test.exs +341 -16
  107. package/project/.sdk/tm/elixir/test/struct_corpus_test.exs +554 -9
  108. package/project/.sdk/tm/elixir/test/support/omni.ex +377 -0
  109. package/project/.sdk/tm/elixir/test/vendor/omni/json.ex +122 -0
  110. package/project/.sdk/tm/elixir/test/vendor/omni/runner.ex +623 -0
  111. package/project/.sdk/tm/elixir/test/vendor/omni/util.ex +187 -0
  112. package/project/.sdk/tm/go/core/context.go +32 -16
  113. package/project/.sdk/tm/go/feature/secrets/plugin/capability.go +261 -0
  114. package/project/.sdk/tm/go/feature/secrets/plugin/catalog.go +78 -0
  115. package/project/.sdk/tm/go/feature/secrets/plugin/config.go +652 -0
  116. package/project/.sdk/tm/go/feature/secrets/plugin/depend.go +250 -0
  117. package/project/.sdk/tm/go/feature/secrets/plugin/env.go +194 -0
  118. package/project/.sdk/tm/go/feature/secrets/plugin/export.go +80 -0
  119. package/project/.sdk/tm/go/feature/secrets/plugin/graph.go +238 -0
  120. package/project/.sdk/tm/go/feature/secrets/plugin/host.go +1575 -0
  121. package/project/.sdk/tm/go/feature/secrets/plugin/order.go +248 -0
  122. package/project/.sdk/tm/go/feature/secrets/plugin/point.go +184 -0
  123. package/project/.sdk/tm/go/feature/secrets/plugin/ref.go +123 -0
  124. package/project/.sdk/tm/go/feature/secrets/plugin/resolve.go +79 -0
  125. package/project/.sdk/tm/go/feature/secrets/plugin/types.go +296 -0
  126. package/project/.sdk/tm/go/feature/secrets/plugin/util.go +87 -0
  127. package/project/.sdk/tm/go/feature/secrets/plugin/version.go +161 -0
  128. package/project/.sdk/tm/go/feature/secrets/plugins/aws/aws.go +292 -0
  129. package/project/.sdk/tm/go/feature/secrets/plugins/aws/sigv4.go +201 -0
  130. package/project/.sdk/tm/go/feature/secrets/plugins/azuresecrets/azuresecrets.go +187 -0
  131. package/project/.sdk/tm/go/feature/secrets/plugins/boru/boru.go +184 -0
  132. package/project/.sdk/tm/go/feature/secrets/plugins/doppler/doppler.go +114 -0
  133. package/project/.sdk/tm/go/feature/secrets/plugins/gcpsecrets/gcpsecrets.go +156 -0
  134. package/project/.sdk/tm/go/feature/secrets/plugins/hashicorp/hashicorp.go +208 -0
  135. package/project/.sdk/tm/go/feature/secrets/plugins/httpjson/httpjson.go +241 -0
  136. package/project/.sdk/tm/go/feature/secrets/plugins/infisical/infisical.go +150 -0
  137. package/project/.sdk/tm/go/feature/secrets/plugins/onepassword/onepassword.go +152 -0
  138. package/project/.sdk/tm/go/feature/secrets/plugins/secretspec/secretspec.go +143 -0
  139. package/project/.sdk/tm/go/feature/secrets/sekreto/addr.go +120 -0
  140. package/project/.sdk/tm/go/feature/secrets/sekreto/providers.go +442 -0
  141. package/project/.sdk/tm/go/feature/secrets/sekreto/sekreto.go +714 -0
  142. package/project/.sdk/tm/go/feature/secrets_feature.go +675 -0
  143. package/project/.sdk/tm/go/src/feature/secrets/.gitkeep +0 -0
  144. package/project/.sdk/tm/go/test/feature/secrets/secrets_feature_test.go +799 -0
  145. package/project/.sdk/tm/go/test/omni/omni.go +902 -0
  146. package/project/.sdk/tm/go/test/omni/util.go +381 -0
  147. package/project/.sdk/tm/go/test/omniresolver_test.go +748 -0
  148. package/project/.sdk/tm/go/test/omnismoke_test.go +112 -0
  149. package/project/.sdk/tm/go/test/primary_utility_test.go +123 -191
  150. package/project/.sdk/tm/go/test/struct_utility_test.go +323 -16
  151. package/project/.sdk/tm/go/test/testsupport_test.go +294 -0
  152. package/project/.sdk/tm/go/utility/make_options.go +8 -1
  153. package/project/.sdk/tm/go/utility/prepare_method.go +5 -1
  154. package/project/.sdk/tm/go/utility/struct/voxgigstruct.go +2 -2
  155. package/project/.sdk/tm/java/test/OmniResolver.java +355 -0
  156. package/project/.sdk/tm/java/test/OmniSmokeTest.java +99 -0
  157. package/project/.sdk/tm/java/test/PrimaryUtilityTest.java +254 -280
  158. package/project/.sdk/tm/java/test/RunnerSupport.java +9 -194
  159. package/project/.sdk/tm/java/test/StructCorpusTest.java +119 -42
  160. package/project/.sdk/tm/java/test/vendor/omni/Json.java +287 -0
  161. package/project/.sdk/tm/java/test/vendor/omni/Runner.java +851 -0
  162. package/project/.sdk/tm/java/test/vendor/omni/Util.java +322 -0
  163. package/project/.sdk/tm/java/utility/MakeSpec.java +3 -1
  164. package/project/.sdk/tm/java/utility/PrepareMethod.java +5 -5
  165. package/project/.sdk/tm/java/utility/struct/Struct.java +17 -4
  166. package/project/.sdk/tm/js/src/utility/StructUtility.js +3 -3
  167. package/project/.sdk/tm/js/test/omni.js +251 -0
  168. package/project/.sdk/tm/js/test/omni.test.js +105 -0
  169. package/project/.sdk/tm/js/test/utility/PrimaryUtility.test.js +6 -2
  170. package/project/.sdk/tm/js/test/utility/StructUtility.test.js +27 -2
  171. package/project/.sdk/tm/js/test/vendor/omni/index.js +77 -0
  172. package/project/.sdk/tm/js/test/vendor/omni/runner.js +628 -0
  173. package/project/.sdk/tm/js/test/vendor/omni/util.js +229 -0
  174. package/project/.sdk/tm/kotlin/core/Utility.kt +1 -1
  175. package/project/.sdk/tm/kotlin/test/OmniResolver.kt +343 -0
  176. package/project/.sdk/tm/kotlin/test/OmniSmokeTest.kt +100 -0
  177. package/project/.sdk/tm/kotlin/test/PrimaryUtilityTest.kt +244 -262
  178. package/project/.sdk/tm/kotlin/test/RunnerSupport.kt +9 -178
  179. package/project/.sdk/tm/kotlin/test/StructCorpusTest.kt +121 -32
  180. package/project/.sdk/tm/kotlin/test/vendor/omni/Json.kt +264 -0
  181. package/project/.sdk/tm/kotlin/test/vendor/omni/Runner.kt +615 -0
  182. package/project/.sdk/tm/kotlin/test/vendor/omni/Util.kt +139 -0
  183. package/project/.sdk/tm/kotlin/utility/MakeSpecUrl.kt +6 -3
  184. package/project/.sdk/tm/kotlin/utility/Prepare.kt +6 -6
  185. package/project/.sdk/tm/kotlin/utility/struct/Struct.kt +18 -2
  186. package/project/.sdk/tm/lean/Makefile +12 -5
  187. package/project/.sdk/tm/lean/src/SdkUtility.lean +14 -1
  188. package/project/.sdk/tm/lean/test/OmniResolver.lean +358 -0
  189. package/project/.sdk/tm/lean/test/OmniSmoke.lean +174 -0
  190. package/project/.sdk/tm/lean/test/StructCorpus.lean +245 -574
  191. package/project/.sdk/tm/lean/test/TPrimaryUtility.lean +155 -291
  192. package/project/.sdk/tm/lean/test/vendor/omni/Omni.lean +997 -0
  193. package/project/.sdk/tm/lua/test/omni.lua +456 -0
  194. package/project/.sdk/tm/lua/test/omni_smoke_test.lua +103 -0
  195. package/project/.sdk/tm/lua/test/primary_utility_test.lua +250 -509
  196. package/project/.sdk/tm/lua/test/struct_utility_test.lua +161 -70
  197. package/project/.sdk/tm/lua/test/vendor/omni/json.lua +268 -0
  198. package/project/.sdk/tm/lua/test/vendor/omni/regex.lua +385 -0
  199. package/project/.sdk/tm/lua/test/vendor/omni/runner.lua +641 -0
  200. package/project/.sdk/tm/lua/test/vendor/omni/util.lua +282 -0
  201. package/project/.sdk/tm/lua/utility/prepare_method.lua +5 -1
  202. package/project/.sdk/tm/lua/utility/struct/regex.lua +663 -0
  203. package/project/.sdk/tm/lua/utility/struct/struct.lua +660 -420
  204. package/project/.sdk/tm/ocaml/Makefile +37 -12
  205. package/project/.sdk/tm/ocaml/test/omni_resolver.ml +284 -0
  206. package/project/.sdk/tm/ocaml/test/omni_smoke_test.ml +169 -0
  207. package/project/.sdk/tm/ocaml/test/primary_utility_test.ml +84 -100
  208. package/project/.sdk/tm/ocaml/test/struct_corpus.ml +225 -201
  209. package/project/.sdk/tm/ocaml/test/vendor/omni/omni.ml +1157 -0
  210. package/project/.sdk/tm/perl/lib/Voxgig/Struct.pm +88 -12
  211. package/project/.sdk/tm/perl/t/omni.pm +647 -0
  212. package/project/.sdk/tm/perl/t/omni_smoke.t +87 -0
  213. package/project/.sdk/tm/perl/t/primary_utility.t +189 -487
  214. package/project/.sdk/tm/perl/t/struct_utility.t +455 -389
  215. package/project/.sdk/tm/perl/t/vendor/omni/Voxgig/Omni/Runner.pm +649 -0
  216. package/project/.sdk/tm/perl/t/vendor/omni/Voxgig/Omni/Util.pm +253 -0
  217. package/project/.sdk/tm/perl/t/vendor/omni/Voxgig/Omni.pm +24 -0
  218. package/project/.sdk/tm/perl/utility/prepare_method.pm +7 -2
  219. package/project/.sdk/tm/php/test/Omni.php +691 -0
  220. package/project/.sdk/tm/php/test/OmniSmokeTest.php +93 -0
  221. package/project/.sdk/tm/php/test/PrimaryUtilityTest.php +210 -571
  222. package/project/.sdk/tm/php/test/StructUtilityTest.php +320 -342
  223. package/project/.sdk/tm/php/test/vendor/omni/Runner.php +644 -0
  224. package/project/.sdk/tm/php/test/vendor/omni/Util.php +283 -0
  225. package/project/.sdk/tm/php/utility/MakeSpec.php +10 -3
  226. package/project/.sdk/tm/php/utility/PrepareBody.php +7 -1
  227. package/project/.sdk/tm/php/utility/PrepareMethod.php +6 -2
  228. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/__init__.py +36 -0
  229. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/capability.py +141 -0
  230. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/catalog.py +50 -0
  231. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/config.py +333 -0
  232. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/depend.py +198 -0
  233. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/env.py +147 -0
  234. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/export.py +52 -0
  235. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/graph.py +139 -0
  236. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/host.py +1053 -0
  237. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/order.py +171 -0
  238. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/point.py +95 -0
  239. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/ref.py +116 -0
  240. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/resolve.py +59 -0
  241. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/types.py +87 -0
  242. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/version.py +112 -0
  243. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/__init__.py +76 -0
  244. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/addr.py +116 -0
  245. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/aws.py +192 -0
  246. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/azuresecrets.py +120 -0
  247. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/boru.py +140 -0
  248. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/doppler.py +62 -0
  249. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/gcpsecrets.py +101 -0
  250. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/hashicorp.py +151 -0
  251. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/httpjson.py +115 -0
  252. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/infisical.py +90 -0
  253. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/onepassword.py +101 -0
  254. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/secretspec.py +119 -0
  255. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/sigv4.py +125 -0
  256. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/providers.py +211 -0
  257. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/sekreto.py +475 -0
  258. package/project/.sdk/tm/py/pkg/feature/secrets_feature.py +467 -0
  259. package/project/.sdk/tm/py/pkg/utility/prepare_method.py +5 -1
  260. package/project/.sdk/tm/py/pkg/utility/voxgig_struct/__init__.py +0 -2
  261. package/project/.sdk/tm/py/pkg/utility/voxgig_struct/voxgig_struct.py +780 -529
  262. package/project/.sdk/tm/py/src/feature/secrets/.gitkeep +0 -0
  263. package/project/.sdk/tm/py/test/feature/__init__.py +0 -0
  264. package/project/.sdk/tm/py/test/feature/secrets/__init__.py +0 -0
  265. package/project/.sdk/tm/py/test/feature/secrets/test_secrets.py +337 -0
  266. package/project/.sdk/tm/py/test/omni.py +415 -0
  267. package/project/.sdk/tm/py/test/test_omni_smoke.py +74 -0
  268. package/project/.sdk/tm/py/test/test_primary_utility.py +144 -668
  269. package/project/.sdk/tm/py/test/test_struct_utility.py +74 -27
  270. package/project/.sdk/tm/py/test/voxgig_omni/__init__.py +62 -0
  271. package/project/.sdk/tm/py/test/voxgig_omni/runner.py +580 -0
  272. package/project/.sdk/tm/py/test/voxgig_omni/util.py +252 -0
  273. package/project/.sdk/tm/rb/test/omni.rb +505 -0
  274. package/project/.sdk/tm/rb/test/omni_smoke_test.rb +72 -0
  275. package/project/.sdk/tm/rb/test/primary_utility_test.rb +174 -560
  276. package/project/.sdk/tm/rb/test/struct_utility_test.rb +13 -7
  277. package/project/.sdk/tm/rb/test/vendor/omni/runner.rb +493 -0
  278. package/project/.sdk/tm/rb/test/vendor/omni/util.rb +199 -0
  279. package/project/.sdk/tm/rb/test/vendor/omni/voxgig_omni.rb +15 -0
  280. package/project/.sdk/tm/rb/utility/prepare_method.rb +5 -1
  281. package/project/.sdk/tm/rust/tests/common/mod.rs +19 -242
  282. package/project/.sdk/tm/rust/tests/omni_resolver/mod.rs +888 -0
  283. package/project/.sdk/tm/rust/tests/omni_smoke_test.rs +286 -0
  284. package/project/.sdk/tm/rust/tests/primary_utility_test.rs +318 -312
  285. package/project/.sdk/tm/rust/tests/struct_utility_test.rs +66 -28
  286. package/project/.sdk/tm/rust/tests/vendor/omni/json.rs +412 -0
  287. package/project/.sdk/tm/rust/tests/vendor/omni/mod.rs +38 -0
  288. package/project/.sdk/tm/rust/tests/vendor/omni/regex.rs +392 -0
  289. package/project/.sdk/tm/rust/tests/vendor/omni/runner.rs +1001 -0
  290. package/project/.sdk/tm/rust/tests/vendor/omni/util.rs +161 -0
  291. package/project/.sdk/tm/rust/utility/prepare_method.rs +5 -1
  292. package/project/.sdk/tm/scala/Makefile +16 -6
  293. package/project/.sdk/tm/scala/sdktest/OmniResolver.scala +497 -0
  294. package/project/.sdk/tm/scala/sdktest/OmniSmoke.scala +192 -0
  295. package/project/.sdk/tm/scala/sdktest/PrimaryCorpus.scala +47 -19
  296. package/project/.sdk/tm/scala/sdktest/StructCorpus.scala +0 -0
  297. package/project/.sdk/tm/scala/sdktest/vendor/omni/Json.scala +229 -0
  298. package/project/.sdk/tm/scala/sdktest/vendor/omni/Runner.scala +552 -0
  299. package/project/.sdk/tm/scala/sdktest/vendor/omni/Util.scala +104 -0
  300. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/Struct/Constants.swift +10 -0
  301. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/Struct/Inject.swift +28 -5
  302. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/Struct/Injection.swift +5 -1
  303. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/Struct/Minor.swift +4 -1
  304. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/Struct/Validate.swift +15 -5
  305. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/utility/Prepare.swift +6 -1
  306. package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/OmniResolver.swift +474 -0
  307. package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/OmniSmokeTest.swift +107 -0
  308. package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/PrimaryUtilityTest.swift +141 -178
  309. package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/Runner.swift +17 -113
  310. package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/StructUtilityTest.swift +295 -446
  311. package/project/.sdk/tm/swift/Tests/vendor/omni/Json.swift +364 -0
  312. package/project/.sdk/tm/swift/Tests/vendor/omni/Runner.swift +730 -0
  313. package/project/.sdk/tm/swift/Tests/vendor/omni/Util.swift +162 -0
  314. package/project/.sdk/tm/ts/src/feature/secrets/SecretsFeature.ts +7 -0
  315. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Capability.ts +148 -0
  316. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Catalog.ts +55 -0
  317. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Config.ts +344 -0
  318. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Depend.ts +205 -0
  319. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Env.ts +138 -0
  320. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Export.ts +46 -0
  321. package/project/.sdk/tm/ts/src/feature/secrets/plugin/FeatureHost.ts +349 -0
  322. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Graph.ts +181 -0
  323. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Host.ts +1132 -0
  324. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Order.ts +177 -0
  325. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Point.ts +119 -0
  326. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Ref.ts +102 -0
  327. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Resolve.ts +61 -0
  328. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Types.ts +112 -0
  329. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Version.ts +100 -0
  330. package/project/.sdk/tm/ts/src/feature/secrets/plugin/index.ts +37 -0
  331. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/Sekreto.ts +163 -30
  332. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/index.ts +27 -22
  333. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/aws.ts +26 -36
  334. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/azuresecrets.ts +19 -21
  335. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/boru.ts +36 -17
  336. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/doppler.ts +14 -21
  337. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/gcpsecrets.ts +27 -27
  338. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/hashicorp.ts +25 -39
  339. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/httpjson.ts +99 -0
  340. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/infisical.ts +14 -16
  341. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/onepassword.ts +15 -22
  342. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/secretspec.ts +98 -0
  343. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{Sigv4.ts → plugins/sigv4.ts} +7 -6
  344. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/addr.ts +97 -23
  345. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/builtin.ts +37 -0
  346. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/dotenv.ts +4 -17
  347. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/env.ts +4 -16
  348. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/file.ts +11 -25
  349. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/memory.ts +6 -23
  350. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/support.ts +106 -39
  351. package/project/.sdk/tm/ts/src/utility/StructUtility.ts +3 -3
  352. package/project/.sdk/tm/ts/test/omni.ts +104 -32
  353. package/project/.sdk/tm/ts/test/utility/StructUtility.test.ts +27 -0
  354. package/project/.sdk/tm/ts/test/vendor/omni/Runner.ts +32 -5
  355. package/project/.sdk/tm/ts/test/vendor/omni/Util.ts +2 -2
  356. package/project/.sdk/tm/ts/test/vendor/omni/index.ts +2 -2
  357. package/project/.sdk/tm/zig/Makefile +15 -1
  358. package/project/.sdk/tm/zig/build.zig +23 -5
  359. package/project/.sdk/tm/zig/core/helpers.zig +52 -11
  360. package/project/.sdk/tm/zig/core/mem.zig +17 -1
  361. package/project/.sdk/tm/zig/core/utility.zig +23 -19
  362. package/project/.sdk/tm/zig/feature/audit.zig +2 -2
  363. package/project/.sdk/tm/zig/feature/cache.zig +2 -2
  364. package/project/.sdk/tm/zig/feature/debug.zig +5 -5
  365. package/project/.sdk/tm/zig/feature/netsim.zig +2 -2
  366. package/project/.sdk/tm/zig/feature/paging.zig +2 -2
  367. package/project/.sdk/tm/zig/feature/proxy.zig +15 -8
  368. package/project/.sdk/tm/zig/feature/streaming.zig +5 -5
  369. package/project/.sdk/tm/zig/feature/support.zig +3 -3
  370. package/project/.sdk/tm/zig/feature/telemetry.zig +5 -5
  371. package/project/.sdk/tm/zig/feature/test.zig +10 -5
  372. package/project/.sdk/tm/zig/test/fh.zig +10 -10
  373. package/project/.sdk/tm/zig/test/gotcha_test.zig +5 -5
  374. package/project/.sdk/tm/zig/test/omniresolver.zig +515 -0
  375. package/project/.sdk/tm/zig/test/omnismoke_test.zig +284 -0
  376. package/project/.sdk/tm/zig/test/pipeline_test.zig +8 -8
  377. package/project/.sdk/tm/zig/test/primary_utility_test.zig +145 -155
  378. package/project/.sdk/tm/zig/test/struct_corpus.zig +264 -187
  379. package/project/.sdk/tm/zig/test/vendor/omni/omni.zig +1314 -0
  380. package/project/.sdk/tm/zig/test/vendor/omni/regex.zig +446 -0
  381. package/project/.sdk/tm/zig/utility/voxgigstruct/regex.zig +7 -4
  382. package/project/.sdk/tm/zig/utility/voxgigstruct/struct.zig +356 -157
  383. package/project/sdkgen-package.json +1 -1
  384. package/src/action/doctor.ts +66 -2
  385. package/src/helpers/naming.ts +4 -2
  386. package/project/.sdk/tm/c/tests/runner.h +0 -274
  387. package/project/.sdk/tm/cpp/test/struct_runner.hpp +0 -314
  388. package/project/.sdk/tm/csharp/test/StructRunner.cs +0 -276
  389. package/project/.sdk/tm/dart/test/runner.dart +0 -406
  390. package/project/.sdk/tm/dart/test/struct_corpus.dart +0 -531
  391. package/project/.sdk/tm/elixir/test/support/struct_corpus.ex +0 -1088
  392. package/project/.sdk/tm/go/test/runner_test.go +0 -629
  393. package/project/.sdk/tm/go/test/struct_runner_test.go +0 -1094
  394. package/project/.sdk/tm/java/test/StructRunner.java +0 -281
  395. package/project/.sdk/tm/js/test/runner.js +0 -387
  396. package/project/.sdk/tm/kotlin/test/StructRunner.kt +0 -177
  397. package/project/.sdk/tm/lua/test/struct_runner.lua +0 -602
  398. package/project/.sdk/tm/ocaml/test/corpus_runner.ml +0 -185
  399. package/project/.sdk/tm/perl/t/struct_runner.pm +0 -275
  400. package/project/.sdk/tm/php/test/StructRunner.php +0 -275
  401. package/project/.sdk/tm/py/test/struct_runner.py +0 -411
  402. package/project/.sdk/tm/rb/test/struct_runner.rb +0 -309
  403. package/project/.sdk/tm/rust/tests/struct_runner/mod.rs +0 -424
  404. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/Registry.ts +0 -90
  405. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/http.ts +0 -66
  406. package/project/.sdk/tm/ts/test/vendor/omni/compat.ts +0 -188
  407. package/project/.sdk/tm/zig/test/struct_runner.zig +0 -464
@@ -1,238 +1,87 @@
1
1
  # ProjectName SDK primary utility test
2
-
3
- import json
4
- import os
5
- import re
2
+ #
3
+ # Corpus sections run through the vendored omni runner, via the resolver
4
+ # in test/omni.py (struct-runner shape over native voxgig_omni). The
5
+ # inline corpus engine this file used to carry is retired: omni resolves
6
+ # arguments, applies the null rules, and enforces out/err/match - the
7
+ # subjects below only adapt each utility's calling convention.
8
+ #
9
+ # Two conventions to know when adding a section:
10
+ #
11
+ # - Utilities that answer as a (value, err) TUPLE go through _unwrap,
12
+ # which raises the err so omni can match it against `err:` expectations.
13
+ # Utilities that answer bare values (or raise) are passed straight in.
14
+ #
15
+ # - `match: {ctx: ...}` assertions read the LIVE context after the
16
+ # subject ran - the resolver's CtxView takes care of presenting the
17
+ # context object as the map omni walks, camelCase keys included.
6
18
 
7
19
  import pytest
8
20
 
9
- from projectname_sdk.utility.voxgig_struct import voxgig_struct as vs
10
21
  from projectname_sdk import ProjectNameSDK
11
22
  from projectname_sdk.core.spec import ProjectNameSpec
12
23
  from projectname_sdk.core.result import ProjectNameResult
13
- from projectname_sdk.core.response import ProjectNameResponse
14
24
  from projectname_sdk.core.operation import ProjectNameOperation
15
25
  from projectname_sdk.core.error import ProjectNameError
16
- from projectname_sdk.core import helpers
17
26
  from projectname_sdk.feature.base_feature import ProjectNameBaseFeature
18
27
 
19
- _TEST_DIR = os.path.dirname(os.path.abspath(__file__))
28
+ from test.omni import makeRunner
20
29
 
21
30
 
22
- def _load_test_spec():
23
- test_json_path = os.path.join(_TEST_DIR, '../../.sdk/test/test.json')
24
- with open(test_json_path, 'r') as f:
25
- return json.loads(f.read())
31
+ # Resolved against test/omni.py's own directory, so the suite works from
32
+ # any working directory.
33
+ TEST_JSON_FILE = '../../.sdk/test/test.json'
26
34
 
27
35
 
28
- def _get_spec(spec, *keys):
29
- cur = spec
30
- for key in keys:
31
- if isinstance(cur, dict):
32
- cur = cur.get(key)
33
- else:
34
- return None
35
- if isinstance(cur, dict):
36
- return cur
37
- return None
36
+ _runner = makeRunner(TEST_JSON_FILE, ProjectNameSDK.test(None, None))
37
+ _run = _runner('primary')
38
38
 
39
+ spec = _run['spec']
40
+ runset = _run['runset']
41
+ runsetflags = _run['runsetflags']
39
42
 
40
- def _json_normalize(val):
41
- if val is None:
42
- return None
43
- return json.loads(json.dumps(val, default=str))
44
-
45
-
46
- def _json_str(val):
47
- try:
48
- return json.dumps(val, default=str)
49
- except Exception:
50
- return str(val)
51
-
52
-
53
- def _match_string(pattern, val):
54
- if len(pattern) >= 2 and pattern[0] == '/' and pattern[-1] == '/':
55
- try:
56
- return re.search(pattern[1:-1], val) is not None
57
- except Exception:
58
- return False
59
- return pattern.lower() in val.lower()
60
-
61
-
62
- def _match_deep(errors, check, base, path):
63
- if check is None:
64
- return
65
-
66
- if isinstance(check, dict):
67
- for key, check_val in check.items():
68
- child_path = path + "." + key
69
- base_val = None
70
- if isinstance(base, dict):
71
- base_val = base.get(key)
72
- _match_deep(errors, check_val, base_val, child_path)
73
- elif isinstance(check, list):
74
- for i, check_val in enumerate(check):
75
- child_path = "{}[{}]".format(path, i)
76
- base_val = None
77
- if isinstance(base, list) and i < len(base):
78
- base_val = base[i]
79
- _match_deep(errors, check_val, base_val, child_path)
80
- else:
81
- if isinstance(check, str) and check == "__EXISTS__":
82
- if base is None:
83
- errors.append("match {}: expected value to exist but got None".format(path))
84
- return
85
- if isinstance(check, str) and check == "__UNDEF__":
86
- if base is not None:
87
- errors.append("match {}: expected None but got {}".format(path, base))
88
- return
89
-
90
- norm_check = _json_normalize(check)
91
- norm_base = _json_normalize(base)
92
-
93
- if norm_check != norm_base:
94
- if isinstance(check, str) and check != "":
95
- base_str = vs.stringify(base) if base is not None else ""
96
- if _match_string(check, base_str):
97
- return
98
- errors.append("match {}: got {}, want {}".format(
99
- path, _json_str(norm_base), _json_str(norm_check)))
100
-
101
-
102
- def _runset(testspec, subject):
103
- if testspec is None:
104
- return
105
- entries = testspec.get("set")
106
- if not isinstance(entries, list):
107
- return
108
-
109
- for i, entry in enumerate(entries):
110
- if not isinstance(entry, dict):
111
- continue
112
-
113
- mark = ""
114
- m = entry.get("mark")
115
- if m is not None:
116
- mark = " (mark={})".format(m)
117
-
118
- result = None
119
- err = None
120
-
121
- try:
122
- result, err = subject(entry)
123
- except Exception as e:
124
- err = e
125
-
126
- expected_err = entry.get("err")
127
-
128
- if err is not None:
129
- if expected_err is not None:
130
- err_msg = str(err)
131
- if isinstance(expected_err, str):
132
- assert _match_string(expected_err, err_msg), \
133
- "entry {}{}: error mismatch: got {!r}, want contains {!r}".format(
134
- i, mark, err_msg, expected_err)
135
- elif isinstance(expected_err, bool) and expected_err:
136
- pass # any error is acceptable
137
-
138
- match_spec = entry.get("match")
139
- if isinstance(match_spec, dict):
140
- result_map = {
141
- "in": entry.get("in"),
142
- "out": _json_normalize(result),
143
- "err": {"message": str(err)},
144
- }
145
- errors = []
146
- _match_deep(errors, match_spec, result_map, "")
147
- assert len(errors) == 0, \
148
- "entry {}{}: {}".format(i, mark, "; ".join(errors))
149
- continue
150
-
151
- pytest.fail("entry {}{}: unexpected error: {}".format(i, mark, err))
152
- continue
153
-
154
- if expected_err is not None:
155
- pytest.fail("entry {}{}: expected error containing {!r} but got result: {}".format(
156
- i, mark, expected_err, _json_str(result)))
157
- continue
158
-
159
- matched = False
160
- match_spec = entry.get("match")
161
- if isinstance(match_spec, dict):
162
- result_map = {
163
- "in": entry.get("in"),
164
- "out": _json_normalize(result),
165
- }
166
- if entry.get("args") is not None:
167
- result_map["args"] = entry["args"]
168
- elif entry.get("in") is not None:
169
- result_map["args"] = [entry["in"]]
170
- if entry.get("ctx") is not None:
171
- result_map["ctx"] = entry["ctx"]
172
- errors = []
173
- _match_deep(errors, match_spec, result_map, "")
174
- assert len(errors) == 0, \
175
- "entry {}{}: {}".format(i, mark, "; ".join(errors))
176
- matched = True
177
-
178
- expected_out = entry.get("out")
179
- if expected_out is None and matched:
180
- continue
181
- if expected_out is not None:
182
- norm_result = _json_normalize(result)
183
- norm_expected = _json_normalize(expected_out)
184
- assert norm_result == norm_expected, \
185
- "entry {}{}: output mismatch: got {} want {}".format(
186
- i, mark, _json_str(norm_result), _json_str(norm_expected))
187
-
188
-
189
- def _make_ctx_from_map(ctxmap, client, utility):
190
- if ctxmap is None:
191
- ctxmap = {}
192
-
193
- ctx = utility.make_context(ctxmap, None)
194
-
195
- if client is not None:
196
- ctx.client = client
197
- ctx.utility = utility
198
- if ctx.options is None and client is not None:
199
- ctx.options = client.options_map()
200
-
201
- # Handle spec from JSON map
202
- spec_map = ctxmap.get("spec")
203
- if isinstance(spec_map, dict):
204
- ctx.spec = ProjectNameSpec(spec_map)
205
-
206
- # Handle result from JSON map
207
- res_map = ctxmap.get("result")
208
- if isinstance(res_map, dict):
209
- ctx.result = ProjectNameResult(res_map)
210
- err_map = res_map.get("err")
211
- if isinstance(err_map, dict):
212
- msg = err_map.get("message", "")
213
- ctx.result.err = ProjectNameError("", msg)
214
-
215
- # Handle response from JSON map
216
- resp_map = ctxmap.get("response")
217
- if isinstance(resp_map, dict):
218
- ctx.response = ProjectNameResponse(resp_map)
219
- body = resp_map.get("body")
220
- if body is not None:
221
- body_copy = body
222
- ctx.response.json_func = lambda: body_copy
223
- headers = resp_map.get("headers")
224
- if isinstance(headers, dict):
225
- lower_headers = {}
226
- for k, v in headers.items():
227
- lower_headers[k.lower()] = v
228
- ctx.response.headers = lower_headers
43
+ # Under the old inline runner the suite drove the SDK directly; under omni
44
+ # the runpack's client is the provider wrapping it. This suite treats the
45
+ # client as the SDK - so unwrap the real instance (mirrors ts).
46
+ client = _run['client']['sdk']
47
+ utility = client._utility
229
48
 
230
- return ctx
231
49
 
50
+ # Sections deliberately left empty in the shared corpus
51
+ # (.sdk/test/primary/<name>.aon carries a PENDING header). Everything else
52
+ # MUST contribute cases.
53
+ PENDING = {
54
+ 'fetcher', 'makeFetchDef', 'makeResult',
55
+ 'featureAdd', 'featureHook', 'featureInit',
56
+ }
232
57
 
233
- def _fixctx(ctx, client):
234
- if ctx is not None and ctx.client is not None and ctx.options is None:
235
- ctx.options = ctx.client.options_map()
58
+
59
+ def runsection(name, subject):
60
+ """Run one corpus section, failing loudly when it would run ZERO
61
+ cases. A renamed section or a fixture that compiled to an empty `set`
62
+ used to pass silently, which defeats the point of a shared oracle.
63
+ EVERY corpus-backed test goes through here (mirrors ts)."""
64
+ section = spec.get(name) if isinstance(spec, dict) else None
65
+ assert section is not None, (
66
+ "test corpus section '%s' missing - check the name against "
67
+ ".sdk/test/primary/" % name)
68
+ basic = section.get('basic') if isinstance(section, dict) else None
69
+ assert isinstance(basic, dict) and isinstance(basic.get('set'), list), (
70
+ "test corpus section '%s' has no basic.set list" % name)
71
+ if 0 == len(basic['set']) and name not in PENDING:
72
+ raise AssertionError(
73
+ "test corpus section '%s' is EMPTY - zero cases would run; "
74
+ "add cases, or mark the fixture PENDING in .sdk/test/primary/"
75
+ % name)
76
+ return runset(basic, subject)
77
+
78
+
79
+ def _unwrap(pair):
80
+ """(value, err) tuple convention -> value-or-raise, omni's shape."""
81
+ val, err = pair
82
+ if err is not None:
83
+ raise err
84
+ return val
236
85
 
237
86
 
238
87
  def _err_from_map(m):
@@ -318,57 +167,16 @@ class TestPrimaryUtility:
318
167
  assert cleaned is not None
319
168
 
320
169
  def test_done_basic(self):
321
- spec = _load_test_spec()
322
- primary = _get_spec(spec, "primary")
323
- client = ProjectNameSDK.test(None, None)
324
- utility = client._utility
325
-
326
- def subject(entry):
327
- ctxmap = entry.get("ctx")
328
- if not isinstance(ctxmap, dict):
329
- ctxmap = {}
330
- ctx = _make_ctx_from_map(ctxmap, client, utility)
331
- _fixctx(ctx, client)
332
- # done() returns the bare result data on success and raises on
333
- # error. Adapt to the (result, err) shape the runner expects.
334
- try:
335
- return utility.done(ctx), None
336
- except ProjectNameError as e:
337
- return None, e
338
-
339
- _runset(_get_spec(primary, "done", "basic"), subject)
170
+ runsection('done', lambda ctx: utility.done(ctx))
340
171
 
341
172
  def test_make_error_basic(self):
342
- spec = _load_test_spec()
343
- primary = _get_spec(spec, "primary")
344
- client = ProjectNameSDK.test(None, None)
345
- utility = client._utility
346
-
347
- def subject(entry):
348
- args = entry.get("args")
349
- if not isinstance(args, list) or len(args) == 0:
350
- args = [{}]
351
-
352
- ctxmap = args[0]
353
- if not isinstance(ctxmap, dict):
354
- ctxmap = {}
355
- ctx = _make_ctx_from_map(ctxmap, client, utility)
356
- _fixctx(ctx, client)
357
-
358
- err = None
359
- if len(args) > 1:
360
- err_map = args[1]
361
- if isinstance(err_map, dict):
362
- err = _err_from_map(err_map)
363
-
173
+ def subject(ctx, errmap=None):
174
+ err = _err_from_map(errmap) if isinstance(errmap, dict) else None
364
175
  # make_error() raises the constructed exception on the default
365
- # (throw) path. Adapt to the (result, err) shape the runner expects.
366
- try:
367
- return utility.make_error(ctx, err), None
368
- except ProjectNameError as e:
369
- return None, e
176
+ # (throw) path; omni matches it against the entry's err.
177
+ return utility.make_error(ctx, err)
370
178
 
371
- _runset(_get_spec(primary, "makeError", "basic"), subject)
179
+ runsection('makeError', subject)
372
180
 
373
181
  def test_make_error_no_throw(self):
374
182
  client = ProjectNameSDK.test(None, None)
@@ -514,27 +322,21 @@ class TestPrimaryUtility:
514
322
  assert "blocked" in str(err).lower()
515
323
 
516
324
  def test_make_context_basic(self):
517
- spec = _load_test_spec()
518
- primary = _get_spec(spec, "primary")
519
- client = ProjectNameSDK.test(None, None)
520
- utility = client._utility
521
-
522
- def subject(entry):
523
- in_val = entry.get("in")
524
- if isinstance(in_val, dict):
525
- ctx = utility.make_context(in_val, None)
526
- out = {
527
- "id": ctx.id,
325
+ def subject(vin):
326
+ if not isinstance(vin, dict):
327
+ return None
328
+ ctx = utility.make_context(vin, None)
329
+ out = {
330
+ "id": ctx.id,
331
+ }
332
+ if ctx.op is not None:
333
+ out["op"] = {
334
+ "name": ctx.op.name,
335
+ "input": ctx.op.input,
528
336
  }
529
- if ctx.op is not None:
530
- out["op"] = {
531
- "name": ctx.op.name,
532
- "input": ctx.op.input,
533
- }
534
- return out, None
535
- return None, None
337
+ return out
536
338
 
537
- _runset(_get_spec(primary, "makeContext", "basic"), subject)
339
+ runsection('makeContext', subject)
538
340
 
539
341
  def test_make_fetch_def_basic(self):
540
342
  client = ProjectNameSDK.test(None, None)
@@ -587,85 +389,26 @@ class TestPrimaryUtility:
587
389
  assert '"name"' in body_str
588
390
 
589
391
  def test_make_options_basic(self):
590
- spec = _load_test_spec()
591
- primary = _get_spec(spec, "primary")
592
- client = ProjectNameSDK.test(None, None)
593
- utility = client._utility
594
-
595
- def subject(entry):
596
- in_val = entry.get("in")
597
- if not isinstance(in_val, dict):
598
- in_val = {}
392
+ def subject(vin):
393
+ if not isinstance(vin, dict):
394
+ vin = {}
599
395
  ctx = utility.make_context({
600
- "options": in_val.get("options"),
601
- "config": in_val.get("config"),
396
+ "options": vin.get("options"),
397
+ "config": vin.get("config"),
602
398
  }, None)
603
399
  ctx.client = client
604
400
  ctx.utility = utility
605
- return utility.make_options(ctx), None
401
+ return utility.make_options(ctx)
606
402
 
607
- _runset(_get_spec(primary, "makeOptions", "basic"), subject)
403
+ runsection('makeOptions', subject)
608
404
 
609
405
  def test_make_request_basic(self):
610
- spec = _load_test_spec()
611
- primary = _get_spec(spec, "primary")
612
- client = ProjectNameSDK.test(None, None)
613
- utility = client._utility
614
-
615
- def subject(entry):
616
- ctxmap = entry.get("ctx")
617
- if not isinstance(ctxmap, dict):
618
- ctxmap = {}
619
- ctx = _make_ctx_from_map(ctxmap, client, utility)
620
- ctx.options = client.options_map()
621
-
622
- _, err = utility.make_request(ctx)
623
- if err is not None:
624
- return None, err
625
-
626
- # Update entry ctx for match checking
627
- entry_ctx = entry.get("ctx")
628
- if isinstance(entry_ctx, dict):
629
- if ctx.response is not None:
630
- entry_ctx["response"] = "exists"
631
- if ctx.result is not None:
632
- entry_ctx["result"] = "exists"
633
-
634
- return None, None
635
-
636
- _runset(_get_spec(primary, "makeRequest", "basic"), subject)
406
+ runsection('makeRequest',
407
+ lambda ctx: _unwrap(utility.make_request(ctx)))
637
408
 
638
409
  def test_make_response_basic(self):
639
- spec = _load_test_spec()
640
- primary = _get_spec(spec, "primary")
641
- client = ProjectNameSDK.test(None, None)
642
- utility = client._utility
643
-
644
- def subject(entry):
645
- ctxmap = entry.get("ctx")
646
- if not isinstance(ctxmap, dict):
647
- ctxmap = {}
648
- ctx = _make_ctx_from_map(ctxmap, client, utility)
649
- _fixctx(ctx, client)
650
-
651
- _, err = utility.make_response(ctx)
652
- if err is not None:
653
- return None, err
654
-
655
- # Update entry ctx for match with result data
656
- entry_ctx = entry.get("ctx")
657
- if isinstance(entry_ctx, dict) and ctx.result is not None:
658
- entry_ctx["result"] = {
659
- "ok": ctx.result.ok,
660
- "status": ctx.result.status,
661
- "statusText": ctx.result.status_text,
662
- "headers": ctx.result.headers,
663
- "body": ctx.result.body,
664
- }
665
-
666
- return None, None
667
-
668
- _runset(_get_spec(primary, "makeResponse", "basic"), subject)
410
+ runsection('makeResponse',
411
+ lambda ctx: _unwrap(utility.make_response(ctx)))
669
412
 
670
413
  def test_make_result_basic(self):
671
414
  client = ProjectNameSDK.test(None, None)
@@ -720,45 +463,30 @@ class TestPrimaryUtility:
720
463
  assert err is not None
721
464
 
722
465
  def test_make_spec_basic(self):
723
- spec = _load_test_spec()
724
- primary = _get_spec(spec, "primary")
725
- client = ProjectNameSDK.test(None, None)
726
- utility = client._utility
727
-
728
- setup_opts = _get_spec(primary, "makeSpec", "DEF", "setup", "a")
729
- spec_client = ProjectNameSDK.test(None, setup_opts)
730
- spec_utility = spec_client._utility
466
+ setup = spec.get('makeSpec', {}).get('DEF', {}).get('setup', {})
467
+ spec_client = ProjectNameSDK.test(None, setup.get('a') or {})
731
468
 
732
- def subject(entry):
733
- ctxmap = entry.get("ctx")
734
- if not isinstance(ctxmap, dict):
735
- ctxmap = {}
736
- ctx = _make_ctx_from_map(ctxmap, spec_client, spec_utility)
469
+ def subject(ctx):
470
+ ctx.client = spec_client
737
471
  ctx.options = spec_client.options_map()
472
+ return _unwrap(utility.make_spec(ctx))
738
473
 
739
- _, err = utility.make_spec(ctx)
740
- if err is not None:
741
- return None, err
742
-
743
- # Update entry ctx for match
744
- entry_ctx = entry.get("ctx")
745
- if isinstance(entry_ctx, dict) and ctx.spec is not None:
746
- entry_ctx["spec"] = {
747
- "base": ctx.spec.base,
748
- "prefix": ctx.spec.prefix,
749
- "suffix": ctx.spec.suffix,
750
- "method": ctx.spec.method,
751
- "params": ctx.spec.params,
752
- "query": ctx.spec.query,
753
- "headers": ctx.spec.headers,
754
- "step": ctx.spec.step,
755
- }
756
-
757
- return None, None
758
-
759
- _runset(_get_spec(primary, "makeSpec", "basic"), subject)
474
+ runsection('makeSpec', subject)
760
475
 
761
476
  def test_make_point_basic(self):
477
+ # Driven from the corpus like every other section (was one
478
+ # hand-written case covering one of this utility's branches; the
479
+ # single-point sanity case is kept below).
480
+ def subject(ctx):
481
+ point, err = utility.make_point(ctx)
482
+ # The corpus asserts refusals by code (`match: {out: {code:
483
+ # ...}}`), so an error is the RESULT here, as in ts where
484
+ # makePoint answers with an Error value.
485
+ return err if err is not None else point
486
+
487
+ runsection('makePoint', subject)
488
+
489
+ def test_make_point_single(self):
762
490
  client = ProjectNameSDK.test(None, None)
763
491
  utility = client._utility
764
492
  ctx = _make_test_ctx(client, utility)
@@ -778,226 +506,61 @@ class TestPrimaryUtility:
778
506
  assert ctx.point is not None
779
507
 
780
508
  def test_make_url_basic(self):
781
- spec = _load_test_spec()
782
- primary = _get_spec(spec, "primary")
783
- client = ProjectNameSDK.test(None, None)
784
- utility = client._utility
785
-
786
- def subject(entry):
787
- ctxmap = entry.get("ctx")
788
- if not isinstance(ctxmap, dict):
789
- ctxmap = {}
790
- ctx = _make_ctx_from_map(ctxmap, client, utility)
509
+ def subject(ctx):
791
510
  if ctx.result is None:
792
511
  ctx.result = ProjectNameResult({})
793
- return utility.make_url(ctx)
512
+ return _unwrap(utility.make_url(ctx))
794
513
 
795
- _runset(_get_spec(primary, "makeUrl", "basic"), subject)
514
+ runsection('makeUrl', subject)
796
515
 
797
516
  def test_operator_basic(self):
798
- spec = _load_test_spec()
799
- primary = _get_spec(spec, "primary")
800
-
801
- def subject(entry):
802
- in_val = entry.get("in")
803
- if not isinstance(in_val, dict):
804
- in_val = {}
805
- op = ProjectNameOperation(in_val)
517
+ def subject(vin):
518
+ if not isinstance(vin, dict):
519
+ vin = {}
520
+ op = ProjectNameOperation(vin)
806
521
  return {
807
522
  "entity": op.entity,
808
523
  "name": op.name,
809
524
  "input": op.input,
810
525
  "points": op.points,
811
- }, None
526
+ }
812
527
 
813
- _runset(_get_spec(primary, "operator", "basic"), subject)
528
+ runsection('operator', subject)
814
529
 
815
530
  def test_param_basic(self):
816
- spec = _load_test_spec()
817
- primary = _get_spec(spec, "primary")
818
- client = ProjectNameSDK.test(None, None)
819
- utility = client._utility
820
-
821
- def subject(entry):
822
- args = entry.get("args")
823
- if not isinstance(args, list) or len(args) < 2:
824
- return None, None
825
-
826
- ctxmap = args[0]
827
- if not isinstance(ctxmap, dict):
828
- ctxmap = {}
829
- ctx = _make_ctx_from_map(ctxmap, client, utility)
830
- paramdef = args[1]
831
-
832
- result = utility.param(ctx, paramdef)
833
-
834
- # Update entry ctx for match
835
- match_spec = entry.get("match")
836
- if isinstance(match_spec, dict):
837
- ctx_match = match_spec.get("ctx")
838
- if isinstance(ctx_match, dict):
839
- entry_ctx = entry.get("ctx")
840
- if entry_ctx is None:
841
- entry_ctx = {}
842
- entry["ctx"] = entry_ctx
843
- # Copy spec alias back to entry ctx for matching
844
- spec_match = ctx_match.get("spec")
845
- if isinstance(spec_match, dict):
846
- if ctx.spec is not None:
847
- if entry_ctx.get("spec") is None:
848
- entry_ctx["spec"] = {}
849
- alias_match = spec_match.get("alias")
850
- if isinstance(alias_match, dict):
851
- entry_ctx["spec"] = {
852
- "alias": ctx.spec.alias,
853
- }
854
-
855
- return result, None
856
-
857
- _runset(_get_spec(primary, "param", "basic"), subject)
531
+ runsection('param', lambda ctx, name=None: utility.param(ctx, name))
858
532
 
859
533
  def test_prepare_auth_basic(self):
860
- spec = _load_test_spec()
861
- primary = _get_spec(spec, "primary")
862
- client = ProjectNameSDK.test(None, None)
863
- utility = client._utility
864
-
865
- setup_opts = _get_spec(primary, "prepareAuth", "DEF", "setup", "a")
866
- auth_client = ProjectNameSDK.test(None, setup_opts)
867
- auth_utility = auth_client._utility
868
-
869
- def subject(entry):
870
- ctxmap = entry.get("ctx")
871
- if not isinstance(ctxmap, dict):
872
- ctxmap = {}
873
- ctx = _make_ctx_from_map(ctxmap, auth_client, auth_utility)
874
- _fixctx(ctx, auth_client)
875
-
876
- _, err = utility.prepare_auth(ctx)
877
- if err is not None:
878
- return None, err
879
-
880
- # Update entry ctx for match
881
- entry_ctx = entry.get("ctx")
882
- if isinstance(entry_ctx, dict) and ctx.spec is not None:
883
- entry_ctx["spec"] = {
884
- "headers": ctx.spec.headers,
885
- }
534
+ setup = spec.get('prepareAuth', {}).get('DEF', {}).get('setup', {})
535
+ auth_client = ProjectNameSDK.test(None, setup.get('a') or {})
886
536
 
887
- return None, None
537
+ def subject(ctx):
538
+ ctx.client = auth_client
539
+ return _unwrap(utility.prepare_auth(ctx))
888
540
 
889
- _runset(_get_spec(primary, "prepareAuth", "basic"), subject)
541
+ runsection('prepareAuth', subject)
890
542
 
891
543
  def test_prepare_body_basic(self):
892
- spec = _load_test_spec()
893
- primary = _get_spec(spec, "primary")
894
- client = ProjectNameSDK.test(None, None)
895
- utility = client._utility
896
-
897
- def subject(entry):
898
- ctxmap = entry.get("ctx")
899
- if not isinstance(ctxmap, dict):
900
- ctxmap = {}
901
- ctx = _make_ctx_from_map(ctxmap, client, utility)
902
- _fixctx(ctx, client)
903
- return utility.prepare_body(ctx), None
904
-
905
- _runset(_get_spec(primary, "prepareBody", "basic"), subject)
544
+ runsection('prepareBody', lambda ctx: utility.prepare_body(ctx))
906
545
 
907
546
  def test_prepare_headers_basic(self):
908
- spec = _load_test_spec()
909
- primary = _get_spec(spec, "primary")
910
- client = ProjectNameSDK.test(None, None)
911
- utility = client._utility
912
-
913
- def subject(entry):
914
- ctxmap = entry.get("ctx")
915
- if not isinstance(ctxmap, dict):
916
- ctxmap = {}
917
- ctx = _make_ctx_from_map(ctxmap, client, utility)
918
- return utility.prepare_headers(ctx), None
919
-
920
- _runset(_get_spec(primary, "prepareHeaders", "basic"), subject)
547
+ runsection('prepareHeaders', lambda ctx: utility.prepare_headers(ctx))
921
548
 
922
549
  def test_prepare_method_basic(self):
923
- spec = _load_test_spec()
924
- primary = _get_spec(spec, "primary")
925
- client = ProjectNameSDK.test(None, None)
926
- utility = client._utility
927
-
928
- def subject(entry):
929
- ctxmap = entry.get("ctx")
930
- if not isinstance(ctxmap, dict):
931
- ctxmap = {}
932
- ctx = _make_ctx_from_map(ctxmap, client, utility)
933
- return utility.prepare_method(ctx), None
934
-
935
- _runset(_get_spec(primary, "prepareMethod", "basic"), subject)
550
+ runsection('prepareMethod', lambda ctx: utility.prepare_method(ctx))
936
551
 
937
552
  def test_prepare_params_basic(self):
938
- spec = _load_test_spec()
939
- primary = _get_spec(spec, "primary")
940
- client = ProjectNameSDK.test(None, None)
941
- utility = client._utility
942
-
943
- def subject(entry):
944
- ctxmap = entry.get("ctx")
945
- if not isinstance(ctxmap, dict):
946
- ctxmap = {}
947
- ctx = _make_ctx_from_map(ctxmap, client, utility)
948
- return utility.prepare_params(ctx), None
949
-
950
- _runset(_get_spec(primary, "prepareParams", "basic"), subject)
553
+ runsection('prepareParams', lambda ctx: utility.prepare_params(ctx))
951
554
 
952
555
  def test_prepare_path_basic(self):
953
- # Was two hand-written cases that had drifted out of the shared corpus
954
- # (the preparePath fixture shipped as an empty `set: []`). Now driven
955
- # by the corpus like every other section, so all ports assert the same
956
- # separator / blank-segment behaviour.
957
- spec = _load_test_spec()
958
- primary = _get_spec(spec, "primary")
959
- client = ProjectNameSDK.test(None, None)
960
- utility = client._utility
961
-
962
- def subject(entry):
963
- ctxmap = entry.get("ctx")
964
- if not isinstance(ctxmap, dict):
965
- ctxmap = {}
966
- ctx = _make_ctx_from_map(ctxmap, client, utility)
967
- return utility.prepare_path(ctx), None
968
-
969
- _runset(_get_spec(primary, "preparePath", "basic"), subject)
556
+ runsection('preparePath', lambda ctx: utility.prepare_path(ctx))
970
557
 
971
558
  def test_prepare_query_basic(self):
972
- spec = _load_test_spec()
973
- primary = _get_spec(spec, "primary")
974
- client = ProjectNameSDK.test(None, None)
975
- utility = client._utility
976
-
977
- def subject(entry):
978
- ctxmap = entry.get("ctx")
979
- if not isinstance(ctxmap, dict):
980
- ctxmap = {}
981
- ctx = _make_ctx_from_map(ctxmap, client, utility)
982
- return utility.prepare_query(ctx), None
983
-
984
- _runset(_get_spec(primary, "prepareQuery", "basic"), subject)
559
+ runsection('prepareQuery', lambda ctx: utility.prepare_query(ctx))
985
560
 
986
561
  def test_result_basic_basic(self):
987
- spec = _load_test_spec()
988
- primary = _get_spec(spec, "primary")
989
- client = ProjectNameSDK.test(None, None)
990
- utility = client._utility
991
-
992
- def subject(entry):
993
- ctxmap = entry.get("ctx")
994
- if not isinstance(ctxmap, dict):
995
- ctxmap = {}
996
- ctx = _make_ctx_from_map(ctxmap, client, utility)
997
- _fixctx(ctx, client)
998
-
562
+ def subject(ctx):
999
563
  result = utility.result_basic(ctx)
1000
-
1001
564
  out = {
1002
565
  "status": result.status,
1003
566
  "statusText": result.status_text,
@@ -1006,107 +569,20 @@ class TestPrimaryUtility:
1006
569
  out["err"] = {
1007
570
  "message": str(result.err),
1008
571
  }
572
+ return out
1009
573
 
1010
- return out, None
1011
-
1012
- _runset(_get_spec(primary, "resultBasic", "basic"), subject)
574
+ runsection('resultBasic', subject)
1013
575
 
1014
576
  def test_result_body_basic(self):
1015
- spec = _load_test_spec()
1016
- primary = _get_spec(spec, "primary")
1017
- client = ProjectNameSDK.test(None, None)
1018
- utility = client._utility
1019
-
1020
- def subject(entry):
1021
- ctxmap = entry.get("ctx")
1022
- if not isinstance(ctxmap, dict):
1023
- ctxmap = {}
1024
- ctx = _make_ctx_from_map(ctxmap, client, utility)
1025
-
1026
- utility.result_body(ctx)
1027
-
1028
- # Update entry ctx for match
1029
- entry_ctx = entry.get("ctx")
1030
- if isinstance(entry_ctx, dict) and ctx.result is not None:
1031
- entry_ctx["result"] = {
1032
- "body": ctx.result.body,
1033
- }
1034
-
1035
- return None, None
1036
-
1037
- _runset(_get_spec(primary, "resultBody", "basic"), subject)
577
+ runsection('resultBody', lambda ctx: utility.result_body(ctx))
1038
578
 
1039
579
  def test_result_headers_basic(self):
1040
- spec = _load_test_spec()
1041
- primary = _get_spec(spec, "primary")
1042
- client = ProjectNameSDK.test(None, None)
1043
- utility = client._utility
1044
-
1045
- def subject(entry):
1046
- ctxmap = entry.get("ctx")
1047
- if not isinstance(ctxmap, dict):
1048
- ctxmap = {}
1049
- ctx = _make_ctx_from_map(ctxmap, client, utility)
1050
-
1051
- utility.result_headers(ctx)
1052
-
1053
- # Update entry ctx for match
1054
- entry_ctx = entry.get("ctx")
1055
- if isinstance(entry_ctx, dict) and ctx.result is not None:
1056
- entry_ctx["result"] = {
1057
- "headers": ctx.result.headers,
1058
- }
1059
-
1060
- return None, None
1061
-
1062
- _runset(_get_spec(primary, "resultHeaders", "basic"), subject)
580
+ runsection('resultHeaders', lambda ctx: utility.result_headers(ctx))
1063
581
 
1064
582
  def test_transform_request_basic(self):
1065
- spec = _load_test_spec()
1066
- primary = _get_spec(spec, "primary")
1067
- client = ProjectNameSDK.test(None, None)
1068
- utility = client._utility
1069
-
1070
- def subject(entry):
1071
- ctxmap = entry.get("ctx")
1072
- if not isinstance(ctxmap, dict):
1073
- ctxmap = {}
1074
- ctx = _make_ctx_from_map(ctxmap, client, utility)
1075
-
1076
- result = utility.transform_request(ctx)
1077
-
1078
- # Update entry ctx for match (step changed)
1079
- entry_ctx = entry.get("ctx")
1080
- if isinstance(entry_ctx, dict) and ctx.spec is not None:
1081
- spec_map = entry_ctx.get("spec")
1082
- if isinstance(spec_map, dict):
1083
- spec_map["step"] = ctx.spec.step
1084
-
1085
- return result, None
1086
-
1087
- _runset(_get_spec(primary, "transformRequest", "basic"), subject)
583
+ runsection('transformRequest',
584
+ lambda ctx: utility.transform_request(ctx))
1088
585
 
1089
586
  def test_transform_response_basic(self):
1090
- spec = _load_test_spec()
1091
- primary = _get_spec(spec, "primary")
1092
- client = ProjectNameSDK.test(None, None)
1093
- utility = client._utility
1094
-
1095
- def subject(entry):
1096
- ctxmap = entry.get("ctx")
1097
- if not isinstance(ctxmap, dict):
1098
- ctxmap = {}
1099
- ctx = _make_ctx_from_map(ctxmap, client, utility)
1100
-
1101
- result = utility.transform_response(ctx)
1102
-
1103
- # Update entry ctx for match (step changed)
1104
- entry_ctx = entry.get("ctx")
1105
- if isinstance(entry_ctx, dict) and ctx.spec is not None:
1106
- spec_map = entry_ctx.get("spec")
1107
- if isinstance(spec_map, dict):
1108
- spec_map["step"] = ctx.spec.step
1109
-
1110
- return result, None
1111
-
1112
- _runset(_get_spec(primary, "transformResponse", "basic"), subject)
587
+ runsection('transformResponse',
588
+ lambda ctx: utility.transform_response(ctx))