@voxgig/sdkgen 0.35.2 → 0.37.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.
- package/bin/voxgig-sdkgen +1 -1
- package/dist/cmp/Main.js +0 -12
- package/dist/cmp/Main.js.map +1 -1
- package/dist/cmp/Readme.js +5 -5
- package/dist/cmp/Readme.js.map +1 -1
- package/dist/cmp/ReadmeEntity.js +74 -24
- package/dist/cmp/ReadmeEntity.js.map +1 -1
- package/dist/cmp/ReadmeExplanation.d.ts +2 -0
- package/dist/cmp/ReadmeExplanation.js +308 -0
- package/dist/cmp/ReadmeExplanation.js.map +1 -0
- package/dist/cmp/ReadmeHowto.d.ts +2 -0
- package/dist/cmp/ReadmeHowto.js +18 -0
- package/dist/cmp/ReadmeHowto.js.map +1 -0
- package/dist/cmp/ReadmeIntro.js +8 -23
- package/dist/cmp/ReadmeIntro.js.map +1 -1
- package/dist/cmp/ReadmeModel.js +55 -91
- package/dist/cmp/ReadmeModel.js.map +1 -1
- package/dist/cmp/ReadmeOptions.js +35 -11
- package/dist/cmp/ReadmeOptions.js.map +1 -1
- package/dist/cmp/ReadmeQuick.js +4 -1
- package/dist/cmp/ReadmeQuick.js.map +1 -1
- package/dist/cmp/ReadmeRef.js +1042 -40
- package/dist/cmp/ReadmeRef.js.map +1 -1
- package/dist/cmp/ReadmeTop.d.ts +2 -0
- package/dist/cmp/ReadmeTop.js +171 -0
- package/dist/cmp/ReadmeTop.js.map +1 -0
- package/dist/sdkgen.d.ts +7 -1
- package/dist/sdkgen.js +13 -1
- package/dist/sdkgen.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/project/.sdk/model/feature/feature-index.jsonic +5 -0
- package/project/.sdk/model/feature/log.jsonic +5 -1
- package/project/.sdk/model/feature/test.jsonic +1 -1
- package/project/.sdk/model/target/lua.jsonic +23 -0
- package/project/.sdk/model/target/php.jsonic +22 -0
- package/project/.sdk/model/target/py.jsonic +23 -0
- package/project/.sdk/model/target/rb.jsonic +23 -0
- package/project/.sdk/src/cmp/go/Config_go.ts +6 -2
- package/project/.sdk/src/cmp/go/Main_go.ts +2 -6
- package/project/.sdk/src/cmp/go/ReadmeExplanation_go.ts +42 -0
- package/project/.sdk/src/cmp/go/ReadmeHowto_go.ts +112 -0
- package/project/.sdk/src/cmp/go/ReadmeInstall_go.ts +29 -0
- package/project/.sdk/src/cmp/go/ReadmeModel_go.ts +129 -0
- package/project/.sdk/src/cmp/go/ReadmeQuick_go.ts +163 -0
- package/project/.sdk/src/cmp/go/ReadmeTopHowto_go.ts +24 -0
- package/project/.sdk/src/cmp/go/ReadmeTopQuick_go.ts +67 -0
- package/project/.sdk/src/cmp/go/ReadmeTopTest_go.ts +40 -0
- package/project/.sdk/src/cmp/go/TestDirect_go.ts +46 -2
- package/project/.sdk/src/cmp/go/TestEntity_go.ts +360 -160
- package/project/.sdk/src/cmp/go/Test_go.ts +24 -1
- package/project/.sdk/src/cmp/js/EntityBase_js.ts +34 -0
- package/project/.sdk/src/cmp/js/Main_js.ts +10 -0
- package/project/.sdk/src/cmp/js/ReadmeExplanation_js.ts +33 -0
- package/project/.sdk/src/cmp/js/ReadmeHowto_js.ts +123 -0
- package/project/.sdk/src/cmp/js/ReadmeModel_js.ts +152 -0
- package/project/.sdk/src/cmp/js/ReadmeQuick_js.ts +1 -1
- package/project/.sdk/src/cmp/js/ReadmeTopHowto_js.ts +25 -0
- package/project/.sdk/src/cmp/js/ReadmeTopQuick_js.ts +65 -0
- package/project/.sdk/src/cmp/js/ReadmeTopTest_js.ts +36 -0
- package/project/.sdk/src/cmp/js/TestDirect_js.ts +53 -5
- package/project/.sdk/src/cmp/js/TestEntity_js.ts +114 -20
- package/project/.sdk/src/cmp/js/fragment/Entity.fragment.js +7 -139
- package/project/.sdk/src/cmp/js/fragment/EntityBase.fragment.js +149 -0
- package/project/.sdk/src/cmp/js/fragment/EntityCreateOp.fragment.js +6 -10
- package/project/.sdk/src/cmp/js/fragment/EntityListOp.fragment.js +6 -10
- package/project/.sdk/src/cmp/js/fragment/EntityLoadOp.fragment.js +7 -11
- package/project/.sdk/src/cmp/js/fragment/EntityRemoveOp.fragment.js +7 -11
- package/project/.sdk/src/cmp/js/fragment/EntityUpdateOp.fragment.js +7 -11
- package/project/.sdk/src/cmp/js/fragment/Main.fragment.js +2 -0
- package/project/.sdk/src/cmp/js/fragment/SdkError.fragment.js +0 -2
- package/project/.sdk/src/cmp/lua/Config_lua.ts +116 -0
- package/project/.sdk/src/cmp/lua/EntityOperation_lua.ts +44 -0
- package/project/.sdk/src/cmp/lua/Entity_lua.ts +62 -0
- package/project/.sdk/src/cmp/lua/MainEntity_lua.ts +23 -0
- package/project/.sdk/src/cmp/lua/Main_lua.ts +133 -0
- package/project/.sdk/src/cmp/lua/Package_lua.ts +80 -0
- package/project/.sdk/src/cmp/lua/ReadmeExplanation_lua.ts +42 -0
- package/project/.sdk/src/cmp/lua/ReadmeHowto_lua.ts +100 -0
- package/project/.sdk/src/cmp/lua/ReadmeInstall_lua.ts +26 -0
- package/project/.sdk/src/cmp/lua/ReadmeModel_lua.ts +129 -0
- package/project/.sdk/src/cmp/lua/ReadmeQuick_lua.ts +99 -0
- package/project/.sdk/src/cmp/lua/ReadmeTopHowto_lua.ts +24 -0
- package/project/.sdk/src/cmp/lua/ReadmeTopQuick_lua.ts +55 -0
- package/project/.sdk/src/cmp/lua/ReadmeTopTest_lua.ts +38 -0
- package/project/.sdk/src/cmp/lua/TestDirect_lua.ts +261 -0
- package/project/.sdk/src/cmp/lua/TestEntity_lua.ts +485 -0
- package/project/.sdk/src/cmp/lua/Test_lua.ts +49 -0
- package/project/.sdk/src/cmp/lua/fragment/Entity.fragment.lua +147 -0
- package/project/.sdk/src/cmp/lua/fragment/EntityCreateOp.fragment.lua +27 -0
- package/project/.sdk/src/cmp/lua/fragment/EntityListOp.fragment.lua +24 -0
- package/project/.sdk/src/cmp/lua/fragment/EntityLoadOp.fragment.lua +30 -0
- package/project/.sdk/src/cmp/lua/fragment/EntityRemoveOp.fragment.lua +30 -0
- package/project/.sdk/src/cmp/lua/fragment/EntityUpdateOp.fragment.lua +30 -0
- package/project/.sdk/src/cmp/lua/fragment/Main.fragment.lua +256 -0
- package/project/.sdk/src/cmp/lua/fragment/SdkError.fragment.lua +26 -0
- package/project/.sdk/src/cmp/lua/tsconfig.json +15 -0
- package/project/.sdk/src/cmp/lua/utility_lua.ts +84 -0
- package/project/.sdk/src/cmp/php/Config_php.ts +111 -0
- package/project/.sdk/src/cmp/php/EntityOperation_php.ts +44 -0
- package/project/.sdk/src/cmp/php/Entity_php.ts +62 -0
- package/project/.sdk/src/cmp/php/MainEntity_php.ts +24 -0
- package/project/.sdk/src/cmp/php/Main_php.ts +135 -0
- package/project/.sdk/src/cmp/php/Package_php.ts +87 -0
- package/project/.sdk/src/cmp/php/ReadmeExplanation_php.ts +42 -0
- package/project/.sdk/src/cmp/php/ReadmeHowto_php.ts +101 -0
- package/project/.sdk/src/cmp/php/ReadmeInstall_php.ts +19 -0
- package/project/.sdk/src/cmp/php/ReadmeModel_php.ts +129 -0
- package/project/.sdk/src/cmp/php/ReadmeQuick_php.ts +100 -0
- package/project/.sdk/src/cmp/php/ReadmeTopHowto_php.ts +24 -0
- package/project/.sdk/src/cmp/php/ReadmeTopQuick_php.ts +56 -0
- package/project/.sdk/src/cmp/php/ReadmeTopTest_php.ts +38 -0
- package/project/.sdk/src/cmp/php/TestDirect_php.ts +270 -0
- package/project/.sdk/src/cmp/php/TestEntity_php.ts +479 -0
- package/project/.sdk/src/cmp/php/Test_php.ts +56 -0
- package/project/.sdk/src/cmp/php/fragment/Entity.fragment.php +146 -0
- package/project/.sdk/src/cmp/php/fragment/EntityCreateOp.fragment.php +26 -0
- package/project/.sdk/src/cmp/php/fragment/EntityListOp.fragment.php +23 -0
- package/project/.sdk/src/cmp/php/fragment/EntityLoadOp.fragment.php +29 -0
- package/project/.sdk/src/cmp/php/fragment/EntityRemoveOp.fragment.php +29 -0
- package/project/.sdk/src/cmp/php/fragment/EntityUpdateOp.fragment.php +29 -0
- package/project/.sdk/src/cmp/php/fragment/Main.fragment.php +233 -0
- package/project/.sdk/src/cmp/php/fragment/SdkError.fragment.php +24 -0
- package/project/.sdk/src/cmp/php/tsconfig.json +15 -0
- package/project/.sdk/src/cmp/php/utility_php.ts +85 -0
- package/project/.sdk/src/cmp/py/Config_py.ts +97 -0
- package/project/.sdk/src/cmp/py/EntityOperation_py.ts +44 -0
- package/project/.sdk/src/cmp/py/Entity_py.ts +62 -0
- package/project/.sdk/src/cmp/py/MainEntity_py.ts +22 -0
- package/project/.sdk/src/cmp/py/Main_py.ts +156 -0
- package/project/.sdk/src/cmp/py/Package_py.ts +75 -0
- package/project/.sdk/src/cmp/py/ReadmeExplanation_py.ts +41 -0
- package/project/.sdk/src/cmp/py/ReadmeHowto_py.ts +98 -0
- package/project/.sdk/src/cmp/py/ReadmeInstall_py.ts +25 -0
- package/project/.sdk/src/cmp/py/ReadmeModel_py.ts +130 -0
- package/project/.sdk/src/cmp/py/ReadmeQuick_py.ts +100 -0
- package/project/.sdk/src/cmp/py/ReadmeTopHowto_py.ts +24 -0
- package/project/.sdk/src/cmp/py/ReadmeTopQuick_py.ts +56 -0
- package/project/.sdk/src/cmp/py/ReadmeTopTest_py.ts +38 -0
- package/project/.sdk/src/cmp/py/TestDirect_py.ts +248 -0
- package/project/.sdk/src/cmp/py/TestEntity_py.ts +477 -0
- package/project/.sdk/src/cmp/py/Test_py.ts +55 -0
- package/project/.sdk/src/cmp/py/fragment/Entity.fragment.py +112 -0
- package/project/.sdk/src/cmp/py/fragment/EntityCreateOp.fragment.py +25 -0
- package/project/.sdk/src/cmp/py/fragment/EntityListOp.fragment.py +22 -0
- package/project/.sdk/src/cmp/py/fragment/EntityLoadOp.fragment.py +27 -0
- package/project/.sdk/src/cmp/py/fragment/EntityRemoveOp.fragment.py +27 -0
- package/project/.sdk/src/cmp/py/fragment/EntityUpdateOp.fragment.py +27 -0
- package/project/.sdk/src/cmp/py/fragment/Main.fragment.py +222 -0
- package/project/.sdk/src/cmp/py/fragment/SdkError.fragment.py +16 -0
- package/project/.sdk/src/cmp/py/tsconfig.json +15 -0
- package/project/.sdk/src/cmp/py/utility_py.ts +84 -0
- package/project/.sdk/src/cmp/rb/Config_rb.ts +105 -0
- package/project/.sdk/src/cmp/rb/EntityOperation_rb.ts +44 -0
- package/project/.sdk/src/cmp/rb/Entity_rb.ts +62 -0
- package/project/.sdk/src/cmp/rb/MainEntity_rb.ts +23 -0
- package/project/.sdk/src/cmp/rb/Main_rb.ts +130 -0
- package/project/.sdk/src/cmp/rb/Package_rb.ts +111 -0
- package/project/.sdk/src/cmp/rb/ReadmeExplanation_rb.ts +42 -0
- package/project/.sdk/src/cmp/rb/ReadmeHowto_rb.ts +98 -0
- package/project/.sdk/src/cmp/rb/ReadmeInstall_rb.ts +31 -0
- package/project/.sdk/src/cmp/rb/ReadmeModel_rb.ts +129 -0
- package/project/.sdk/src/cmp/rb/ReadmeQuick_rb.ts +99 -0
- package/project/.sdk/src/cmp/rb/ReadmeTopHowto_rb.ts +24 -0
- package/project/.sdk/src/cmp/rb/ReadmeTopQuick_rb.ts +55 -0
- package/project/.sdk/src/cmp/rb/ReadmeTopTest_rb.ts +38 -0
- package/project/.sdk/src/cmp/rb/TestDirect_rb.ts +260 -0
- package/project/.sdk/src/cmp/rb/TestEntity_rb.ts +476 -0
- package/project/.sdk/src/cmp/rb/Test_rb.ts +50 -0
- package/project/.sdk/src/cmp/rb/fragment/Entity.fragment.rb +116 -0
- package/project/.sdk/src/cmp/rb/fragment/EntityCreateOp.fragment.rb +25 -0
- package/project/.sdk/src/cmp/rb/fragment/EntityListOp.fragment.rb +20 -0
- package/project/.sdk/src/cmp/rb/fragment/EntityLoadOp.fragment.rb +26 -0
- package/project/.sdk/src/cmp/rb/fragment/EntityRemoveOp.fragment.rb +26 -0
- package/project/.sdk/src/cmp/rb/fragment/EntityUpdateOp.fragment.rb +26 -0
- package/project/.sdk/src/cmp/rb/fragment/Main.fragment.rb +203 -0
- package/project/.sdk/src/cmp/rb/fragment/SdkError.fragment.rb +16 -0
- package/project/.sdk/src/cmp/rb/tsconfig.json +15 -0
- package/project/.sdk/src/cmp/rb/utility_rb.ts +84 -0
- package/project/.sdk/src/cmp/ts/Main_ts.ts +7 -0
- package/project/.sdk/src/cmp/ts/ReadmeExplanation_ts.ts +34 -0
- package/project/.sdk/src/cmp/ts/ReadmeHowto_ts.ts +123 -0
- package/project/.sdk/src/cmp/ts/ReadmeInstall_ts.ts +1 -1
- package/project/.sdk/src/cmp/ts/ReadmeModel_ts.ts +159 -0
- package/project/.sdk/src/cmp/ts/ReadmeQuick_ts.ts +69 -54
- package/project/.sdk/src/cmp/ts/ReadmeTopHowto_ts.ts +25 -0
- package/project/.sdk/src/cmp/ts/ReadmeTopQuick_ts.ts +65 -0
- package/project/.sdk/src/cmp/ts/ReadmeTopTest_ts.ts +36 -0
- package/project/.sdk/tm/go/feature/log_feature.go +133 -0
- package/project/.sdk/tm/go/src/feature/log/.gitkeep +0 -0
- package/project/.sdk/tm/go/test/runner_test.go +16 -2
- package/project/.sdk/tm/js/src/Context.js +142 -0
- package/project/.sdk/tm/js/src/Control.js +16 -0
- package/project/.sdk/tm/js/src/Operation.js +19 -0
- package/project/.sdk/tm/js/src/Point.js +24 -0
- package/project/.sdk/tm/js/src/README.md +1 -0
- package/project/.sdk/tm/js/src/Response.js +19 -0
- package/project/.sdk/tm/js/src/Result.js +21 -0
- package/project/.sdk/tm/js/src/Spec.js +26 -0
- package/project/.sdk/tm/js/src/feature/README.md +1 -0
- package/project/.sdk/tm/js/src/feature/base/BaseFeature.js +45 -0
- package/project/.sdk/tm/js/src/feature/log/LogFeature.js +46 -47
- package/project/.sdk/tm/js/src/feature/test/TestFeature.js +207 -0
- package/project/.sdk/tm/js/src/types.js +22 -0
- package/project/.sdk/tm/js/src/utility/CleanUtility.js +31 -0
- package/project/.sdk/tm/js/src/utility/DoneUtility.js +11 -4
- package/project/.sdk/tm/js/src/utility/FeatureAddUtility.js +42 -0
- package/project/.sdk/tm/js/src/utility/FeatureHookUtility.js +25 -0
- package/project/.sdk/tm/js/src/utility/FeatureInitUtility.js +11 -0
- package/project/.sdk/tm/js/src/utility/FetcherUtility.js +28 -0
- package/project/.sdk/tm/js/src/utility/MakeContextUtility.js +11 -0
- package/project/.sdk/tm/js/src/utility/MakeErrorUtility.js +55 -0
- package/project/.sdk/tm/js/src/utility/MakeFetchDefUtility.js +44 -0
- package/project/.sdk/tm/js/src/utility/MakeOptionsUtility.js +93 -0
- package/project/.sdk/tm/js/src/utility/MakePointUtility.js +77 -0
- package/project/.sdk/tm/js/src/utility/MakeRequestUtility.js +63 -0
- package/project/.sdk/tm/js/src/utility/MakeResponseUtility.js +55 -0
- package/project/.sdk/tm/js/src/utility/MakeResultUtility.js +54 -0
- package/project/.sdk/tm/js/src/utility/MakeSpecUtility.js +58 -0
- package/project/.sdk/tm/js/src/utility/MakeUrlUtility.js +40 -0
- package/project/.sdk/tm/js/src/utility/ParamUtility.js +61 -0
- package/project/.sdk/tm/js/src/utility/PrepareAuthUtility.js +41 -0
- package/project/.sdk/tm/js/src/utility/PrepareBodyUtility.js +25 -0
- package/project/.sdk/tm/js/src/utility/PrepareHeadersUtility.js +18 -0
- package/project/.sdk/tm/js/src/utility/{MethodUtility.js → PrepareMethodUtility.js} +7 -7
- package/project/.sdk/tm/js/src/utility/PrepareParamsUtility.js +25 -0
- package/project/.sdk/tm/js/src/utility/PreparePathUtility.js +13 -0
- package/project/.sdk/tm/js/src/utility/PrepareQueryUtility.js +26 -0
- package/project/.sdk/tm/js/src/utility/README.md +1 -0
- package/project/.sdk/tm/js/src/utility/ResultBasicUtility.js +34 -0
- package/project/.sdk/tm/js/src/utility/ResultBodyUtility.js +18 -0
- package/project/.sdk/tm/js/src/utility/ResultHeadersUtility.js +22 -0
- package/project/.sdk/tm/js/src/utility/StructUtility.js +2219 -1078
- package/project/.sdk/tm/js/src/utility/TransformRequestUtility.js +28 -0
- package/project/.sdk/tm/js/src/utility/TransformResponseUtility.js +31 -0
- package/project/.sdk/tm/js/src/utility/Utility.js +61 -61
- package/project/.sdk/tm/js/test/README.md +1 -0
- package/project/.sdk/tm/js/test/exists.test.js +16 -0
- package/project/.sdk/tm/js/test/runner.js +323 -107
- package/project/.sdk/tm/js/test/utility/Custom.test.js +41 -63
- package/project/.sdk/tm/js/test/utility/PrimaryUtility.test.js +390 -116
- package/project/.sdk/tm/js/test/utility/StructUtility.test.js +728 -175
- package/project/.sdk/tm/js/test/utility/index.js +9 -0
- package/project/.sdk/tm/js/test/utility.js +72 -0
- package/project/.sdk/tm/lua/LICENSE +22 -0
- package/project/.sdk/tm/lua/Makefile +10 -0
- package/project/.sdk/tm/lua/core/context.lua +208 -0
- package/project/.sdk/tm/lua/core/control.lua +17 -0
- package/project/.sdk/tm/lua/core/error.lua +30 -0
- package/project/.sdk/tm/lua/core/helpers.lua +30 -0
- package/project/.sdk/tm/lua/core/operation.lua +51 -0
- package/project/.sdk/tm/lua/core/response.lua +45 -0
- package/project/.sdk/tm/lua/core/result.lua +58 -0
- package/project/.sdk/tm/lua/core/spec.lua +29 -0
- package/project/.sdk/tm/lua/core/utility_type.lua +90 -0
- package/project/.sdk/tm/lua/feature/base_feature.lua +35 -0
- package/project/.sdk/tm/lua/feature/log_feature.lua +80 -0
- package/project/.sdk/tm/lua/feature/test_feature.lua +202 -0
- package/project/.sdk/tm/lua/src/feature/README.md +3 -0
- package/project/.sdk/tm/lua/src/feature/base/.gitkeep +0 -0
- package/project/.sdk/tm/lua/src/feature/log/.gitkeep +0 -0
- package/project/.sdk/tm/lua/src/feature/test/.gitkeep +0 -0
- package/project/.sdk/tm/lua/test/primary_utility_test.lua +1213 -0
- package/project/.sdk/tm/lua/test/runner.lua +86 -0
- package/project/.sdk/tm/lua/test/struct_runner.lua +602 -0
- package/project/.sdk/tm/lua/test/struct_utility_test.lua +959 -0
- package/project/.sdk/tm/lua/utility/clean.lua +7 -0
- package/project/.sdk/tm/lua/utility/done.lua +19 -0
- package/project/.sdk/tm/lua/utility/feature_add.lua +8 -0
- package/project/.sdk/tm/lua/utility/feature_hook.lua +21 -0
- package/project/.sdk/tm/lua/utility/feature_init.lua +24 -0
- package/project/.sdk/tm/lua/utility/fetcher.lua +96 -0
- package/project/.sdk/tm/lua/utility/make_context.lua +9 -0
- package/project/.sdk/tm/lua/utility/make_error.lua +73 -0
- package/project/.sdk/tm/lua/utility/make_fetch_def.lua +43 -0
- package/project/.sdk/tm/lua/utility/make_options.lua +116 -0
- package/project/.sdk/tm/lua/utility/make_point.lua +92 -0
- package/project/.sdk/tm/lua/utility/make_request.lua +58 -0
- package/project/.sdk/tm/lua/utility/make_response.lua +44 -0
- package/project/.sdk/tm/lua/utility/make_result.lua +51 -0
- package/project/.sdk/tm/lua/utility/make_spec.lua +72 -0
- package/project/.sdk/tm/lua/utility/make_url.lua +46 -0
- package/project/.sdk/tm/lua/utility/param.lua +68 -0
- package/project/.sdk/tm/lua/utility/prepare_auth.lua +39 -0
- package/project/.sdk/tm/lua/utility/prepare_body.lua +14 -0
- package/project/.sdk/tm/lua/utility/prepare_headers.lua +20 -0
- package/project/.sdk/tm/lua/utility/prepare_method.lua +17 -0
- package/project/.sdk/tm/lua/utility/prepare_params.lua +36 -0
- package/project/.sdk/tm/lua/utility/prepare_path.lua +19 -0
- package/project/.sdk/tm/lua/utility/prepare_query.lua +41 -0
- package/project/.sdk/tm/lua/utility/register.lua +71 -0
- package/project/.sdk/tm/lua/utility/result_basic.lua +32 -0
- package/project/.sdk/tm/lua/utility/result_body.lua +17 -0
- package/project/.sdk/tm/lua/utility/result_headers.lua +22 -0
- package/project/.sdk/tm/lua/utility/struct/struct.lua +3427 -0
- package/project/.sdk/tm/lua/utility/transform_request.lua +31 -0
- package/project/.sdk/tm/lua/utility/transform_response.lua +44 -0
- package/project/.sdk/tm/php/LICENSE +22 -0
- package/project/.sdk/tm/php/Makefile +10 -0
- package/project/.sdk/tm/php/core/Context.php +139 -0
- package/project/.sdk/tm/php/core/Control.php +18 -0
- package/project/.sdk/tm/php/core/Error.php +37 -0
- package/project/.sdk/tm/php/core/Helpers.php +25 -0
- package/project/.sdk/tm/php/core/Operation.php +36 -0
- package/project/.sdk/tm/php/core/Response.php +30 -0
- package/project/.sdk/tm/php/core/Result.php +35 -0
- package/project/.sdk/tm/php/core/Spec.php +38 -0
- package/project/.sdk/tm/php/core/UtilityType.php +89 -0
- package/project/.sdk/tm/php/feature/BaseFeature.php +37 -0
- package/project/.sdk/tm/php/feature/LogFeature.php +65 -0
- package/project/.sdk/tm/php/feature/TestFeature.php +156 -0
- package/project/.sdk/tm/php/src/feature/README.md +3 -0
- package/project/.sdk/tm/php/src/feature/base/.gitkeep +0 -0
- package/project/.sdk/tm/php/src/feature/log/.gitkeep +0 -0
- package/project/.sdk/tm/php/src/feature/test/.gitkeep +0 -0
- package/project/.sdk/tm/php/test/PrimaryUtilityTest.php +1309 -0
- package/project/.sdk/tm/php/test/Runner.php +112 -0
- package/project/.sdk/tm/php/test/StructRunner.php +275 -0
- package/project/.sdk/tm/php/test/StructUtilityTest.php +1336 -0
- package/project/.sdk/tm/php/utility/Clean.php +12 -0
- package/project/.sdk/tm/php/utility/Done.php +26 -0
- package/project/.sdk/tm/php/utility/FeatureAdd.php +12 -0
- package/project/.sdk/tm/php/utility/FeatureHook.php +23 -0
- package/project/.sdk/tm/php/utility/FeatureInit.php +25 -0
- package/project/.sdk/tm/php/utility/Fetcher.php +105 -0
- package/project/.sdk/tm/php/utility/MakeContext.php +14 -0
- package/project/.sdk/tm/php/utility/MakeError.php +59 -0
- package/project/.sdk/tm/php/utility/MakeFetchDef.php +36 -0
- package/project/.sdk/tm/php/utility/MakeOptions.php +102 -0
- package/project/.sdk/tm/php/utility/MakePoint.php +87 -0
- package/project/.sdk/tm/php/utility/MakeRequest.php +57 -0
- package/project/.sdk/tm/php/utility/MakeResponse.php +43 -0
- package/project/.sdk/tm/php/utility/MakeResult.php +53 -0
- package/project/.sdk/tm/php/utility/MakeSpec.php +64 -0
- package/project/.sdk/tm/php/utility/MakeUrl.php +41 -0
- package/project/.sdk/tm/php/utility/Param.php +68 -0
- package/project/.sdk/tm/php/utility/PrepareAuth.php +33 -0
- package/project/.sdk/tm/php/utility/PrepareBody.php +15 -0
- package/project/.sdk/tm/php/utility/PrepareHeaders.php +18 -0
- package/project/.sdk/tm/php/utility/PrepareMethod.php +21 -0
- package/project/.sdk/tm/php/utility/PrepareParams.php +34 -0
- package/project/.sdk/tm/php/utility/PreparePath.php +20 -0
- package/project/.sdk/tm/php/utility/PrepareQuery.php +32 -0
- package/project/.sdk/tm/php/utility/Register.php +67 -0
- package/project/.sdk/tm/php/utility/ResultBasic.php +29 -0
- package/project/.sdk/tm/php/utility/ResultBody.php +17 -0
- package/project/.sdk/tm/php/utility/ResultHeaders.php +21 -0
- package/project/.sdk/tm/php/utility/TransformRequest.php +27 -0
- package/project/.sdk/tm/php/utility/TransformResponse.php +42 -0
- package/project/.sdk/tm/php/utility/struct/Struct.php +3535 -0
- package/project/.sdk/tm/py/Makefile +10 -0
- package/project/.sdk/tm/py/core/__init__.py +0 -0
- package/project/.sdk/tm/py/core/context.py +199 -0
- package/project/.sdk/tm/py/core/control.py +12 -0
- package/project/.sdk/tm/py/core/error.py +18 -0
- package/project/.sdk/tm/py/core/helpers.py +15 -0
- package/project/.sdk/tm/py/core/operation.py +37 -0
- package/project/.sdk/tm/py/core/response.py +34 -0
- package/project/.sdk/tm/py/core/result.py +44 -0
- package/project/.sdk/tm/py/core/spec.py +23 -0
- package/project/.sdk/tm/py/core/utility_type.py +82 -0
- package/project/.sdk/tm/py/entity/__init__.py +0 -0
- package/project/.sdk/tm/py/feature/__init__.py +0 -0
- package/project/.sdk/tm/py/feature/base_feature.py +61 -0
- package/project/.sdk/tm/py/feature/log_feature.py +84 -0
- package/project/.sdk/tm/py/feature/test_feature.py +164 -0
- package/project/.sdk/tm/py/src/feature/README.md +3 -0
- package/project/.sdk/tm/py/src/feature/base/.gitkeep +0 -0
- package/project/.sdk/tm/py/src/feature/log/.gitkeep +0 -0
- package/project/.sdk/tm/py/src/feature/test/.gitkeep +0 -0
- package/project/.sdk/tm/py/test/__init__.py +0 -0
- package/project/.sdk/tm/py/test/runner.py +90 -0
- package/project/.sdk/tm/py/test/struct_runner.py +411 -0
- package/project/.sdk/tm/py/test/test_primary_utility.py +1101 -0
- package/project/.sdk/tm/py/test/test_struct_utility.py +751 -0
- package/project/.sdk/tm/py/utility/__init__.py +0 -0
- package/project/.sdk/tm/py/utility/clean.py +5 -0
- package/project/.sdk/tm/py/utility/done.py +14 -0
- package/project/.sdk/tm/py/utility/feature_add.py +6 -0
- package/project/.sdk/tm/py/utility/feature_hook.py +15 -0
- package/project/.sdk/tm/py/utility/feature_init.py +18 -0
- package/project/.sdk/tm/py/utility/fetcher.py +95 -0
- package/project/.sdk/tm/py/utility/make_context.py +7 -0
- package/project/.sdk/tm/py/utility/make_error.py +64 -0
- package/project/.sdk/tm/py/utility/make_fetch_def.py +37 -0
- package/project/.sdk/tm/py/utility/make_options.py +103 -0
- package/project/.sdk/tm/py/utility/make_point.py +74 -0
- package/project/.sdk/tm/py/utility/make_request.py +52 -0
- package/project/.sdk/tm/py/utility/make_response.py +36 -0
- package/project/.sdk/tm/py/utility/make_result.py +41 -0
- package/project/.sdk/tm/py/utility/make_spec.py +68 -0
- package/project/.sdk/tm/py/utility/make_url.py +34 -0
- package/project/.sdk/tm/py/utility/param.py +55 -0
- package/project/.sdk/tm/py/utility/prepare_auth.py +34 -0
- package/project/.sdk/tm/py/utility/prepare_body.py +11 -0
- package/project/.sdk/tm/py/utility/prepare_headers.py +17 -0
- package/project/.sdk/tm/py/utility/prepare_method.py +15 -0
- package/project/.sdk/tm/py/utility/prepare_params.py +28 -0
- package/project/.sdk/tm/py/utility/prepare_path.py +16 -0
- package/project/.sdk/tm/py/utility/prepare_query.py +33 -0
- package/project/.sdk/tm/py/utility/register.py +68 -0
- package/project/.sdk/tm/py/utility/result_basic.py +26 -0
- package/project/.sdk/tm/py/utility/result_body.py +13 -0
- package/project/.sdk/tm/py/utility/result_headers.py +17 -0
- package/project/.sdk/tm/py/utility/transform_request.py +27 -0
- package/project/.sdk/tm/py/utility/transform_response.py +39 -0
- package/project/.sdk/tm/py/utility/voxgig_struct/__init__.py +72 -0
- package/project/.sdk/tm/py/utility/voxgig_struct/voxgig_struct.py +2770 -0
- package/project/.sdk/tm/rb/Gemfile +4 -0
- package/project/.sdk/tm/rb/LICENSE +22 -0
- package/project/.sdk/tm/rb/Makefile +10 -0
- package/project/.sdk/tm/rb/core/context.rb +105 -0
- package/project/.sdk/tm/rb/core/control.rb +11 -0
- package/project/.sdk/tm/rb/core/error.rb +24 -0
- package/project/.sdk/tm/rb/core/helpers.rb +16 -0
- package/project/.sdk/tm/rb/core/operation.rb +26 -0
- package/project/.sdk/tm/rb/core/response.rb +20 -0
- package/project/.sdk/tm/rb/core/result.rb +23 -0
- package/project/.sdk/tm/rb/core/spec.rb +23 -0
- package/project/.sdk/tm/rb/core/utility_type.rb +32 -0
- package/project/.sdk/tm/rb/feature/base_feature.rb +30 -0
- package/project/.sdk/tm/rb/feature/log_feature.rb +50 -0
- package/project/.sdk/tm/rb/feature/test_feature.rb +154 -0
- package/project/.sdk/tm/rb/src/feature/README.md +3 -0
- package/project/.sdk/tm/rb/src/feature/base/.gitkeep +0 -0
- package/project/.sdk/tm/rb/src/feature/log/.gitkeep +0 -0
- package/project/.sdk/tm/rb/src/feature/test/.gitkeep +0 -0
- package/project/.sdk/tm/rb/test/primary_utility_test.rb +1083 -0
- package/project/.sdk/tm/rb/test/runner.rb +70 -0
- package/project/.sdk/tm/rb/test/struct_runner.rb +309 -0
- package/project/.sdk/tm/rb/test/struct_utility_test.rb +670 -0
- package/project/.sdk/tm/rb/utility/clean.rb +4 -0
- package/project/.sdk/tm/rb/utility/done.rb +14 -0
- package/project/.sdk/tm/rb/utility/feature_add.rb +6 -0
- package/project/.sdk/tm/rb/utility/feature_hook.rb +11 -0
- package/project/.sdk/tm/rb/utility/feature_init.rb +16 -0
- package/project/.sdk/tm/rb/utility/fetcher.rb +67 -0
- package/project/.sdk/tm/rb/utility/make_context.rb +7 -0
- package/project/.sdk/tm/rb/utility/make_error.rb +44 -0
- package/project/.sdk/tm/rb/utility/make_fetch_def.rb +24 -0
- package/project/.sdk/tm/rb/utility/make_options.rb +57 -0
- package/project/.sdk/tm/rb/utility/make_point.rb +77 -0
- package/project/.sdk/tm/rb/utility/make_request.rb +44 -0
- package/project/.sdk/tm/rb/utility/make_response.rb +25 -0
- package/project/.sdk/tm/rb/utility/make_result.rb +33 -0
- package/project/.sdk/tm/rb/utility/make_spec.rb +50 -0
- package/project/.sdk/tm/rb/utility/make_url.rb +32 -0
- package/project/.sdk/tm/rb/utility/param.rb +48 -0
- package/project/.sdk/tm/rb/utility/prepare_auth.rb +26 -0
- package/project/.sdk/tm/rb/utility/prepare_body.rb +6 -0
- package/project/.sdk/tm/rb/utility/prepare_headers.rb +11 -0
- package/project/.sdk/tm/rb/utility/prepare_method.rb +5 -0
- package/project/.sdk/tm/rb/utility/prepare_params.rb +25 -0
- package/project/.sdk/tm/rb/utility/prepare_path.rb +13 -0
- package/project/.sdk/tm/rb/utility/prepare_query.rb +22 -0
- package/project/.sdk/tm/rb/utility/register.rb +63 -0
- package/project/.sdk/tm/rb/utility/result_basic.rb +23 -0
- package/project/.sdk/tm/rb/utility/result_body.rb +11 -0
- package/project/.sdk/tm/rb/utility/result_headers.rb +15 -0
- package/project/.sdk/tm/rb/utility/struct/voxgig_struct.rb +2256 -0
- package/project/.sdk/tm/rb/utility/transform_request.rb +15 -0
- package/project/.sdk/tm/rb/utility/transform_response.rb +23 -0
- package/src/cmp/Main.ts +1 -16
- package/src/cmp/Readme.ts +5 -5
- package/src/cmp/ReadmeEntity.ts +77 -25
- package/src/cmp/ReadmeExplanation.ts +333 -0
- package/src/cmp/ReadmeHowto.ts +28 -0
- package/src/cmp/ReadmeIntro.ts +10 -24
- package/src/cmp/ReadmeModel.ts +57 -88
- package/src/cmp/ReadmeOptions.ts +40 -11
- package/src/cmp/ReadmeQuick.ts +4 -1
- package/src/cmp/ReadmeRef.ts +1057 -40
- package/src/cmp/ReadmeTop.ts +213 -0
- package/src/sdkgen.ts +12 -0
- package/project/.sdk/src/cmp/js/Quick_js.ts +0 -78
- package/project/.sdk/src/cmp/js/TestAcceptEntity_js.ts +0 -13
- package/project/.sdk/src/cmp/js/TestAccept_js.ts +0 -18
- package/project/.sdk/tm/go/test/exists_test.go +0 -16
- package/project/.sdk/tm/js/src/utility/AuthUtility.js +0 -21
- package/project/.sdk/tm/js/src/utility/BodyUtility.js +0 -29
- package/project/.sdk/tm/js/src/utility/ErrorUtility.js +0 -33
- package/project/.sdk/tm/js/src/utility/FindparamUtility.js +0 -31
- package/project/.sdk/tm/js/src/utility/FullurlUtility.js +0 -39
- package/project/.sdk/tm/js/src/utility/HeadersUtility.js +0 -13
- package/project/.sdk/tm/js/src/utility/JoinurlUtility.js +0 -14
- package/project/.sdk/tm/js/src/utility/OperatorUtility.js +0 -44
- package/project/.sdk/tm/js/src/utility/OptionsUtility.js +0 -54
- package/project/.sdk/tm/js/src/utility/ParamsUtility.js +0 -21
- package/project/.sdk/tm/js/src/utility/QueryUtility.js +0 -21
- package/project/.sdk/tm/js/src/utility/ReqformUtility.js +0 -32
- package/project/.sdk/tm/js/src/utility/RequestUtility.js +0 -48
- package/project/.sdk/tm/js/src/utility/ResbasicUtility.js +0 -27
- package/project/.sdk/tm/js/src/utility/ResbodyUtility.js +0 -15
- package/project/.sdk/tm/js/src/utility/ResformUtility.js +0 -34
- package/project/.sdk/tm/js/src/utility/ResheadersUtility.js +0 -19
- package/project/.sdk/tm/js/src/utility/ResponseUtility.js +0 -37
- package/project/.sdk/tm/js/src/utility/ResultUtility.js +0 -28
- package/project/.sdk/tm/js/src/utility/SpecUtility.js +0 -35
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
-- ProjectName SDK test runner
|
|
2
|
+
|
|
3
|
+
local json = require("dkjson")
|
|
4
|
+
local vs = require("utility.struct.struct")
|
|
5
|
+
|
|
6
|
+
local runner = {}
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
function runner.load_env_local()
|
|
10
|
+
local f = io.open("../../.env.local", "r")
|
|
11
|
+
if f == nil then
|
|
12
|
+
return
|
|
13
|
+
end
|
|
14
|
+
local content = f:read("*a")
|
|
15
|
+
f:close()
|
|
16
|
+
for raw_line in content:gmatch("[^\r\n]+") do
|
|
17
|
+
local line = raw_line:match("^%s*(.-)%s*$")
|
|
18
|
+
if line ~= "" and not line:match("^#") then
|
|
19
|
+
local key, val = line:match("^([^=]+)=(.*)$")
|
|
20
|
+
if key and val then
|
|
21
|
+
key = key:match("^%s*(.-)%s*$")
|
|
22
|
+
val = val:match("^%s*(.-)%s*$")
|
|
23
|
+
-- Set as env variable (platform-dependent, stored in table)
|
|
24
|
+
runner._env[key] = val
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
runner._env = {}
|
|
31
|
+
|
|
32
|
+
function runner.getenv(key)
|
|
33
|
+
return runner._env[key] or os.getenv(key)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
function runner.env_override(m)
|
|
38
|
+
local live = runner.getenv("PROJECTNAME_TEST_LIVE")
|
|
39
|
+
local override = runner.getenv("PROJECTNAME_TEST_OVERRIDE")
|
|
40
|
+
|
|
41
|
+
if live == "TRUE" or override == "TRUE" then
|
|
42
|
+
for key, _ in pairs(m) do
|
|
43
|
+
local envval = runner.getenv(key)
|
|
44
|
+
if envval ~= nil and envval ~= "" then
|
|
45
|
+
envval = envval:match("^%s*(.-)%s*$")
|
|
46
|
+
if envval:sub(1, 1) == "{" then
|
|
47
|
+
local parsed = json.decode(envval)
|
|
48
|
+
if parsed ~= nil then
|
|
49
|
+
m[key] = parsed
|
|
50
|
+
goto continue
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
m[key] = envval
|
|
54
|
+
::continue::
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
local explain = runner.getenv("PROJECTNAME_TEST_EXPLAIN")
|
|
60
|
+
if explain ~= nil and explain ~= "" then
|
|
61
|
+
m["PROJECTNAME_TEST_EXPLAIN"] = explain
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
return m
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
function runner.entity_list_to_data(list)
|
|
69
|
+
local out = {}
|
|
70
|
+
for _, item in ipairs(list) do
|
|
71
|
+
if type(item) == "table" then
|
|
72
|
+
if type(item.data_get) == "function" then
|
|
73
|
+
local d = item:data_get()
|
|
74
|
+
if type(d) == "table" then
|
|
75
|
+
table.insert(out, d)
|
|
76
|
+
end
|
|
77
|
+
else
|
|
78
|
+
table.insert(out, item)
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
return out
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
return runner
|
|
@@ -0,0 +1,602 @@
|
|
|
1
|
+
-- Vendored from voxgig/struct/lua
|
|
2
|
+
|
|
3
|
+
local json = require("dkjson")
|
|
4
|
+
local lfs = require("lfs")
|
|
5
|
+
local luassert = require("luassert")
|
|
6
|
+
|
|
7
|
+
local vs = require("utility.struct.struct")
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
local NULLMARK = "__NULL__" -- Value is JSON null
|
|
11
|
+
local UNDEFMARK = "__UNDEF__" -- Value is not present (thus undefined)
|
|
12
|
+
local EXISTSMARK = "__EXISTS__" -- Value exists (not undefined)
|
|
13
|
+
|
|
14
|
+
-- Unique sentinel for JSON null (distinguishes from the literal string "null")
|
|
15
|
+
local JSON_NULL = setmetatable({}, { __tostring = function() return "null" end })
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
----------------------------------------------------------
|
|
19
|
+
-- Utility Functions
|
|
20
|
+
----------------------------------------------------------
|
|
21
|
+
|
|
22
|
+
-- Read file contents synchronously
|
|
23
|
+
-- @param path (string) The path to the file
|
|
24
|
+
-- @return (string) The contents of the file
|
|
25
|
+
local function readFileSync(path)
|
|
26
|
+
local file = io.open(path, "r")
|
|
27
|
+
if not file then
|
|
28
|
+
error("Cannot open file: " .. path)
|
|
29
|
+
end
|
|
30
|
+
local content = file:read("*a")
|
|
31
|
+
file:close()
|
|
32
|
+
return content
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
-- Join path segments with forward slashes
|
|
37
|
+
-- @param ... (string) Path segments to join
|
|
38
|
+
-- @return (string) Joined path
|
|
39
|
+
local function join(...)
|
|
40
|
+
return table.concat({ ... }, "/")
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
-- Assert failure with message
|
|
45
|
+
-- @param msg (string) Failure message
|
|
46
|
+
local function fail(msg)
|
|
47
|
+
luassert(false, msg)
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
-- Deep equality check between two values
|
|
52
|
+
-- @param actual (any) The actual value
|
|
53
|
+
-- @param expected (any) The expected value
|
|
54
|
+
local function deepEqual(actual, expected)
|
|
55
|
+
luassert.same(expected, actual)
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
----------------------------------------------------------
|
|
59
|
+
-- forward declarations
|
|
60
|
+
----------------------------------------------------------
|
|
61
|
+
local resolveSpec
|
|
62
|
+
local resolveClients
|
|
63
|
+
local resolveSubject
|
|
64
|
+
local resolveFlags
|
|
65
|
+
local resolveEntry
|
|
66
|
+
local resolveTestPack
|
|
67
|
+
local resolveArgs
|
|
68
|
+
local fixJSON
|
|
69
|
+
local checkResult
|
|
70
|
+
local handleError
|
|
71
|
+
local match
|
|
72
|
+
local matchval
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
-- Creates a runner function that can be used to run tests
|
|
77
|
+
-- @param testfile (string) The path to the test file
|
|
78
|
+
-- @param client (table) The client instance to use
|
|
79
|
+
-- @return (function) A runner function
|
|
80
|
+
local function makeRunner(testfile, client)
|
|
81
|
+
-- Main test runner function
|
|
82
|
+
-- @param name (string) The name of the test
|
|
83
|
+
-- @param store (table) Store with configuration values
|
|
84
|
+
-- @return (table) The runner pack with test functions
|
|
85
|
+
local function runner(name, store)
|
|
86
|
+
store = store or {}
|
|
87
|
+
|
|
88
|
+
local utility = client:utility()
|
|
89
|
+
local structUtils = utility.struct
|
|
90
|
+
|
|
91
|
+
local spec = resolveSpec(name, testfile)
|
|
92
|
+
local clients = resolveClients(client, spec, store, structUtils)
|
|
93
|
+
local subject = resolveSubject(name, utility)
|
|
94
|
+
|
|
95
|
+
-- Run test set with flags
|
|
96
|
+
-- @param testspec (table) The test specification
|
|
97
|
+
-- @param flags (table) Processing flags
|
|
98
|
+
-- @param testsubject (function) Optional test subject override
|
|
99
|
+
local function runsetflags(testspec, flags, testsubject)
|
|
100
|
+
subject = testsubject or subject
|
|
101
|
+
flags = resolveFlags(flags)
|
|
102
|
+
|
|
103
|
+
-- Lua has no undefined value; skip entries where 'in' or 'out' is absent.
|
|
104
|
+
-- Must check before fixJSON since fixJSON may convert JSON_NULL to nil.
|
|
105
|
+
local rawset = testspec.set
|
|
106
|
+
local filteredset = {}
|
|
107
|
+
setmetatable(filteredset, getmetatable(rawset) or { __jsontype = "array" })
|
|
108
|
+
for _, entry in ipairs(rawset) do
|
|
109
|
+
if entry["in"] ~= nil or entry.args ~= nil or entry.ctx ~= nil then
|
|
110
|
+
table.insert(filteredset, entry)
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
testspec = { set = filteredset }
|
|
114
|
+
|
|
115
|
+
local testspecmap = fixJSON(testspec, flags)
|
|
116
|
+
|
|
117
|
+
local testset = testspecmap.set
|
|
118
|
+
for _, entry in ipairs(testset) do
|
|
119
|
+
local current_entry = entry
|
|
120
|
+
local success, err = pcall(function()
|
|
121
|
+
current_entry = resolveEntry(current_entry, flags)
|
|
122
|
+
|
|
123
|
+
local testpack = resolveTestPack(name, current_entry, subject, client, clients)
|
|
124
|
+
local args = resolveArgs(current_entry, testpack, utility, structUtils)
|
|
125
|
+
|
|
126
|
+
local res = testpack.subject(table.unpack(args))
|
|
127
|
+
res = fixJSON(res, flags)
|
|
128
|
+
current_entry.res = res
|
|
129
|
+
|
|
130
|
+
checkResult(current_entry, args, res, structUtils)
|
|
131
|
+
end)
|
|
132
|
+
|
|
133
|
+
if not success then
|
|
134
|
+
handleError(current_entry, err, structUtils)
|
|
135
|
+
end
|
|
136
|
+
end
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
-- Run test set with default flags
|
|
140
|
+
-- @param testspec (table) The test specification
|
|
141
|
+
-- @param testsubject (function) Optional test subject override
|
|
142
|
+
local function runset(testspec, testsubject)
|
|
143
|
+
return runsetflags(testspec, {}, testsubject)
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
local runpack = {
|
|
147
|
+
spec = spec,
|
|
148
|
+
runset = runset,
|
|
149
|
+
runsetflags = runsetflags,
|
|
150
|
+
subject = subject,
|
|
151
|
+
client = client
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
return runpack
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
return runner
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
-- Resolve the test specification from a file
|
|
163
|
+
-- @param name (string) The name of the test specification
|
|
164
|
+
-- @param testfile (string) The path to the test file
|
|
165
|
+
-- @return (table) The resolved test specification
|
|
166
|
+
resolveSpec = function(name, testfile)
|
|
167
|
+
local alltests = json.decode(readFileSync(join(lfs.currentdir(), testfile)),
|
|
168
|
+
1, JSON_NULL)
|
|
169
|
+
local spec =
|
|
170
|
+
(alltests.primary and alltests.primary[name]) or (alltests[name]) or
|
|
171
|
+
alltests
|
|
172
|
+
return spec
|
|
173
|
+
end
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
-- Resolve client instances based on specification
|
|
177
|
+
-- @param spec (table) The test specification
|
|
178
|
+
-- @param store (table) Store with configuration values
|
|
179
|
+
-- @param structUtils (table) Structure utility functions
|
|
180
|
+
-- @param baseClient (table) The base client instance
|
|
181
|
+
-- @return (table) Table of resolved client instances
|
|
182
|
+
resolveClients = function(client, spec, store, structUtils)
|
|
183
|
+
local clients = {}
|
|
184
|
+
|
|
185
|
+
if spec.DEF and spec.DEF.client then
|
|
186
|
+
for cn in pairs(spec.DEF.client) do
|
|
187
|
+
local cdef = spec.DEF.client[cn]
|
|
188
|
+
local copts = cdef.test.options or {}
|
|
189
|
+
if structUtils.ismap(store) and structUtils.inject then
|
|
190
|
+
structUtils.inject(copts, store)
|
|
191
|
+
end
|
|
192
|
+
-- Use the tester method on the base client to create new test clients
|
|
193
|
+
clients[cn] = client:tester(copts)
|
|
194
|
+
end
|
|
195
|
+
end
|
|
196
|
+
return clients
|
|
197
|
+
end
|
|
198
|
+
|
|
199
|
+
|
|
200
|
+
-- Resolve the test subject function
|
|
201
|
+
-- @param name (string) The name of the subject to resolve
|
|
202
|
+
-- @param container (table) The container object (Utility)
|
|
203
|
+
-- @return (function) The resolved subject function
|
|
204
|
+
resolveSubject = function(name, container)
|
|
205
|
+
local subject = container[name] or container.struct[name]
|
|
206
|
+
return subject
|
|
207
|
+
end
|
|
208
|
+
|
|
209
|
+
|
|
210
|
+
-- Resolve test flags with defaults
|
|
211
|
+
-- @param flags (table) Input flags
|
|
212
|
+
-- @return (table) Resolved flags with defaults applied
|
|
213
|
+
resolveFlags = function(flags)
|
|
214
|
+
if flags == nil then
|
|
215
|
+
flags = {}
|
|
216
|
+
end
|
|
217
|
+
if flags.null == nil then
|
|
218
|
+
flags.null = true
|
|
219
|
+
else
|
|
220
|
+
flags.null = not not flags.null -- Convert to boolean
|
|
221
|
+
end
|
|
222
|
+
return flags
|
|
223
|
+
end
|
|
224
|
+
|
|
225
|
+
|
|
226
|
+
-- Prepare a test entry with the given flags
|
|
227
|
+
-- @param entry (table) The test entry
|
|
228
|
+
-- @param flags (table) Processing flags
|
|
229
|
+
-- @return (table) The processed entry
|
|
230
|
+
resolveEntry = function(entry, flags)
|
|
231
|
+
entry.out = (entry.out == nil and flags.null) and NULLMARK or entry.out
|
|
232
|
+
return entry
|
|
233
|
+
end
|
|
234
|
+
|
|
235
|
+
|
|
236
|
+
-- Check the result of a test against expectations
|
|
237
|
+
-- @param entry (table) The test entry
|
|
238
|
+
-- @param args (table) The test arguments
|
|
239
|
+
-- @param res (any) The test result
|
|
240
|
+
-- @param structUtils (table) Structure utility functions
|
|
241
|
+
checkResult = function(entry, args, res, structUtils)
|
|
242
|
+
local matched = false
|
|
243
|
+
|
|
244
|
+
-- If expected error but none thrown, fail
|
|
245
|
+
if entry.err then
|
|
246
|
+
fail('Expected error did not occur: ' .. structUtils.stringify(entry.err))
|
|
247
|
+
return
|
|
248
|
+
end
|
|
249
|
+
|
|
250
|
+
-- If there's a match pattern, verify it first
|
|
251
|
+
if entry.match then
|
|
252
|
+
local result = {
|
|
253
|
+
["in"] = entry["in"],
|
|
254
|
+
args = args,
|
|
255
|
+
out = entry.res,
|
|
256
|
+
ctx = entry.ctx
|
|
257
|
+
}
|
|
258
|
+
match(entry.match, result, structUtils)
|
|
259
|
+
matched = true
|
|
260
|
+
end
|
|
261
|
+
|
|
262
|
+
local out = entry.out
|
|
263
|
+
|
|
264
|
+
-- If direct equality, we're done
|
|
265
|
+
if out == res then
|
|
266
|
+
return
|
|
267
|
+
end
|
|
268
|
+
|
|
269
|
+
-- If we matched and out is null or nil, we're done
|
|
270
|
+
if matched and (out == NULLMARK or out == nil) then
|
|
271
|
+
return
|
|
272
|
+
end
|
|
273
|
+
|
|
274
|
+
-- Otherwise, verify deep equality.
|
|
275
|
+
-- Round-trip through JSON to normalize (matches TS behavior).
|
|
276
|
+
if res ~= nil then
|
|
277
|
+
local json_str = json.encode(res)
|
|
278
|
+
local decoded = json.decode(json_str, 1, JSON_NULL)
|
|
279
|
+
deepEqual(decoded, out)
|
|
280
|
+
else
|
|
281
|
+
deepEqual(res, out)
|
|
282
|
+
end
|
|
283
|
+
end
|
|
284
|
+
|
|
285
|
+
|
|
286
|
+
-- Handle errors during test execution
|
|
287
|
+
-- @param entry (table) The test entry
|
|
288
|
+
-- @param err (any) The error that occurred
|
|
289
|
+
-- @param structUtils (table) Structure utility functions
|
|
290
|
+
handleError = function(entry, err, structUtils)
|
|
291
|
+
entry.thrown = err
|
|
292
|
+
|
|
293
|
+
local entry_err = entry.err
|
|
294
|
+
local err_message = (type(err) == "table" and err.message) or tostring(err)
|
|
295
|
+
|
|
296
|
+
if entry_err ~= nil then
|
|
297
|
+
if entry_err == true or matchval(entry_err, err_message, structUtils) then
|
|
298
|
+
if entry.match then
|
|
299
|
+
-- Process the error with fixJSON before matching
|
|
300
|
+
local processed_err = fixJSON(err, { null = true })
|
|
301
|
+
match(
|
|
302
|
+
entry.match,
|
|
303
|
+
{
|
|
304
|
+
["in"] = entry["in"],
|
|
305
|
+
out = entry.res,
|
|
306
|
+
ctx = entry.ctx,
|
|
307
|
+
err = processed_err
|
|
308
|
+
},
|
|
309
|
+
structUtils
|
|
310
|
+
)
|
|
311
|
+
end
|
|
312
|
+
return
|
|
313
|
+
end
|
|
314
|
+
|
|
315
|
+
fail("ERROR MATCH: [" .. structUtils.stringify(entry_err) .. "] <=> [" ..
|
|
316
|
+
err_message .. "]")
|
|
317
|
+
else
|
|
318
|
+
-- fail((err.stack or err_message) .. "\n\nENTRY: " .. inspect(entry))
|
|
319
|
+
fail((err.stack or err_message))
|
|
320
|
+
end
|
|
321
|
+
end
|
|
322
|
+
|
|
323
|
+
|
|
324
|
+
-- Prepare test arguments
|
|
325
|
+
-- @param entry (table) The test entry
|
|
326
|
+
-- @param testpack (table) The test pack with client and utility
|
|
327
|
+
-- @return (table) Array of arguments for the test
|
|
328
|
+
resolveArgs = function(entry, testpack, utility, structUtils)
|
|
329
|
+
local args = {}
|
|
330
|
+
|
|
331
|
+
if entry.ctx then
|
|
332
|
+
args = { entry.ctx }
|
|
333
|
+
elseif entry.args then
|
|
334
|
+
args = entry.args
|
|
335
|
+
else
|
|
336
|
+
args = { structUtils.clone(entry["in"]) }
|
|
337
|
+
end
|
|
338
|
+
|
|
339
|
+
if entry.ctx or entry.args then
|
|
340
|
+
local first = args[1]
|
|
341
|
+
if structUtils.ismap(first) then
|
|
342
|
+
first = structUtils.clone(first)
|
|
343
|
+
first = utility.contextify(first)
|
|
344
|
+
args[1] = first
|
|
345
|
+
entry.ctx = first
|
|
346
|
+
|
|
347
|
+
first.client = testpack.client
|
|
348
|
+
first.utility = testpack.utility
|
|
349
|
+
end
|
|
350
|
+
end
|
|
351
|
+
|
|
352
|
+
return args
|
|
353
|
+
end
|
|
354
|
+
|
|
355
|
+
|
|
356
|
+
-- Resolve the test pack with client and subject
|
|
357
|
+
-- @param name (string) The name of the test
|
|
358
|
+
-- @param entry (table) The test entry
|
|
359
|
+
-- @param subject (function) The test subject function
|
|
360
|
+
-- @param client (table) The default client
|
|
361
|
+
-- @param clients (table) Table of available clients
|
|
362
|
+
-- @return (table) The resolved test pack
|
|
363
|
+
resolveTestPack = function(name, entry, subject, client, clients)
|
|
364
|
+
local testpack = {
|
|
365
|
+
name = name,
|
|
366
|
+
client = client,
|
|
367
|
+
subject = subject,
|
|
368
|
+
utility = client:utility()
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
if entry.client then
|
|
372
|
+
testpack.client = clients[entry.client]
|
|
373
|
+
testpack.utility = testpack.client:utility()
|
|
374
|
+
testpack.subject = resolveSubject(name, testpack.utility)
|
|
375
|
+
end
|
|
376
|
+
|
|
377
|
+
return testpack
|
|
378
|
+
end
|
|
379
|
+
|
|
380
|
+
|
|
381
|
+
-- Match a check structure against a base structure
|
|
382
|
+
-- @param check (table) The check structure with patterns
|
|
383
|
+
-- @param base (table) The base structure to validate against
|
|
384
|
+
-- @param structUtils (table) Structure utility functions
|
|
385
|
+
match = function(check, base, structUtils)
|
|
386
|
+
-- Clone the base to avoid modifying the original
|
|
387
|
+
base = structUtils.clone(base)
|
|
388
|
+
|
|
389
|
+
structUtils.walk(check, function(_key, val, _parent, path)
|
|
390
|
+
if not structUtils.isnode(val) then
|
|
391
|
+
local baseval = structUtils.getpath(base, path)
|
|
392
|
+
|
|
393
|
+
-- Direct match check
|
|
394
|
+
if baseval == val then
|
|
395
|
+
return val
|
|
396
|
+
end
|
|
397
|
+
|
|
398
|
+
-- Explicit undefined expected
|
|
399
|
+
if val == UNDEFMARK and baseval == nil then
|
|
400
|
+
return val
|
|
401
|
+
end
|
|
402
|
+
|
|
403
|
+
-- Explicit defined expected
|
|
404
|
+
if val == EXISTSMARK and baseval ~= nil then
|
|
405
|
+
return val
|
|
406
|
+
end
|
|
407
|
+
|
|
408
|
+
if not matchval(val, baseval, structUtils) then
|
|
409
|
+
fail("MATCH: " .. table.concat(path, ".") .. ": [" ..
|
|
410
|
+
structUtils.stringify(val) .. "] <=> [" ..
|
|
411
|
+
structUtils.stringify(baseval) .. "]")
|
|
412
|
+
end
|
|
413
|
+
end
|
|
414
|
+
|
|
415
|
+
return val
|
|
416
|
+
end)
|
|
417
|
+
end
|
|
418
|
+
|
|
419
|
+
|
|
420
|
+
-- Check if a test value matches a base value according to defined rules
|
|
421
|
+
-- @param check (any) The test pattern or value to check
|
|
422
|
+
-- @param base (any) The base value to check against
|
|
423
|
+
-- @param structUtils (table) Structure utility functions
|
|
424
|
+
-- @return (boolean) Whether the value matches
|
|
425
|
+
matchval = function(check, base, structUtils)
|
|
426
|
+
local pass = check == base
|
|
427
|
+
|
|
428
|
+
if not pass then
|
|
429
|
+
if type(check) == "string" then
|
|
430
|
+
local basestr = structUtils.stringify(base)
|
|
431
|
+
|
|
432
|
+
-- Check if string starts and ends with '/' (RegExp in TypeScript)
|
|
433
|
+
local rem = check:match("^/(.+)/$")
|
|
434
|
+
if rem then
|
|
435
|
+
-- Convert JS RegExp to Lua pattern when possible
|
|
436
|
+
-- This is a simplification and might need adjustments for complex patterns
|
|
437
|
+
local lua_pattern = rem:gsub("%%", "%%%%"):gsub("%.", "%%."):gsub("%+",
|
|
438
|
+
"%%+"):gsub("%-", "%%-"):gsub("%*", "%%*"):gsub("%?", "%%?"):gsub(
|
|
439
|
+
"%[", "%%["):gsub("%]", "%%]"):gsub("%^", "%%^"):gsub("%$", "%%$")
|
|
440
|
+
:gsub("%(", "%%("):gsub("%)", "%%)")
|
|
441
|
+
pass = basestr:match(lua_pattern) ~= nil
|
|
442
|
+
else
|
|
443
|
+
-- Convert both strings to lowercase and check if one contains the other
|
|
444
|
+
pass = basestr:lower():find(structUtils.stringify(check):lower(), 1,
|
|
445
|
+
true) ~= nil
|
|
446
|
+
end
|
|
447
|
+
elseif type(check) == "function" then
|
|
448
|
+
pass = true
|
|
449
|
+
end
|
|
450
|
+
end
|
|
451
|
+
|
|
452
|
+
return pass
|
|
453
|
+
end
|
|
454
|
+
|
|
455
|
+
|
|
456
|
+
-- Transform null values in JSON data according to flags.
|
|
457
|
+
-- dkjson decodes JSON null as the Lua string "null".
|
|
458
|
+
-- When flags.null is true, convert "null" to NULLMARK ("__NULL__").
|
|
459
|
+
-- When flags.null is false, convert "null" to nil (native Lua null).
|
|
460
|
+
-- @param val (any) The value to process
|
|
461
|
+
-- @param flags (table) Processing flags including null handling
|
|
462
|
+
-- @return (any) The processed value
|
|
463
|
+
fixJSON = function(val, flags)
|
|
464
|
+
-- Handle JSON_NULL sentinel and Lua nil.
|
|
465
|
+
if val == JSON_NULL or val == nil then
|
|
466
|
+
if flags.null then
|
|
467
|
+
return NULLMARK
|
|
468
|
+
else
|
|
469
|
+
return nil
|
|
470
|
+
end
|
|
471
|
+
end
|
|
472
|
+
|
|
473
|
+
local function isarray(t)
|
|
474
|
+
if type(t) ~= "table" then return false end
|
|
475
|
+
if t == JSON_NULL then return false end
|
|
476
|
+
local mt = getmetatable(t)
|
|
477
|
+
if mt and mt.__jsontype == "array" then return true end
|
|
478
|
+
local count = 0
|
|
479
|
+
local max = 0
|
|
480
|
+
for k in pairs(t) do
|
|
481
|
+
if type(k) ~= "number" then return false end
|
|
482
|
+
if k > max then max = k end
|
|
483
|
+
count = count + 1
|
|
484
|
+
end
|
|
485
|
+
return count > 0 and max == count
|
|
486
|
+
end
|
|
487
|
+
|
|
488
|
+
-- In arrays, we need to preserve null as a value (not nil which creates holes).
|
|
489
|
+
-- Use "null" string as a stand-in for JS null in arrays when flags.null=false.
|
|
490
|
+
local function replacer(v, in_array)
|
|
491
|
+
if v == JSON_NULL or v == nil then
|
|
492
|
+
if flags.null then
|
|
493
|
+
return NULLMARK
|
|
494
|
+
elseif in_array then
|
|
495
|
+
-- Preserve null in arrays as the string "null" to avoid nil holes.
|
|
496
|
+
-- Matches JS behavior where String(null) === "null".
|
|
497
|
+
return "null"
|
|
498
|
+
else
|
|
499
|
+
return nil
|
|
500
|
+
end
|
|
501
|
+
elseif type(v) == "table" and v ~= JSON_NULL then
|
|
502
|
+
if isarray(v) then
|
|
503
|
+
local result = {}
|
|
504
|
+
local mt = getmetatable(v)
|
|
505
|
+
if mt then
|
|
506
|
+
setmetatable(result, mt)
|
|
507
|
+
elseif #v > 0 then
|
|
508
|
+
setmetatable(result, { __jsontype = "array" })
|
|
509
|
+
end
|
|
510
|
+
for i = 1, #v do
|
|
511
|
+
local newval = replacer(v[i], true)
|
|
512
|
+
if newval ~= nil then
|
|
513
|
+
table.insert(result, newval)
|
|
514
|
+
end
|
|
515
|
+
end
|
|
516
|
+
return result
|
|
517
|
+
else
|
|
518
|
+
-- For maps, process each value
|
|
519
|
+
local result = {}
|
|
520
|
+
for k, value in pairs(v) do
|
|
521
|
+
local newval = replacer(value, false)
|
|
522
|
+
if newval ~= nil then
|
|
523
|
+
result[k] = newval
|
|
524
|
+
end
|
|
525
|
+
end
|
|
526
|
+
local mt = getmetatable(v)
|
|
527
|
+
if mt then
|
|
528
|
+
setmetatable(result, mt)
|
|
529
|
+
end
|
|
530
|
+
return result
|
|
531
|
+
end
|
|
532
|
+
else
|
|
533
|
+
return v
|
|
534
|
+
end
|
|
535
|
+
end
|
|
536
|
+
|
|
537
|
+
return replacer(val)
|
|
538
|
+
end
|
|
539
|
+
|
|
540
|
+
|
|
541
|
+
-- Process null marker values
|
|
542
|
+
-- @param val (any) The value to check
|
|
543
|
+
-- @param key (any) The key in the parent
|
|
544
|
+
-- @param parent (table) The parent table
|
|
545
|
+
local function nullModifier(val, key, parent)
|
|
546
|
+
if val == NULLMARK then
|
|
547
|
+
parent[key] = nil -- In Lua, nil represents null
|
|
548
|
+
elseif type(val) == "string" then
|
|
549
|
+
parent[key] = val:gsub(NULLMARK, "null")
|
|
550
|
+
end
|
|
551
|
+
end
|
|
552
|
+
|
|
553
|
+
|
|
554
|
+
----------------------------------------------------------
|
|
555
|
+
-- StructTestClient: minimal shim for the struct test runner
|
|
556
|
+
----------------------------------------------------------
|
|
557
|
+
|
|
558
|
+
local StructTestClient = {}
|
|
559
|
+
StructTestClient.__index = StructTestClient
|
|
560
|
+
|
|
561
|
+
function StructTestClient.new(opts)
|
|
562
|
+
local self = setmetatable({}, StructTestClient)
|
|
563
|
+
self.opts = opts or {}
|
|
564
|
+
return self
|
|
565
|
+
end
|
|
566
|
+
|
|
567
|
+
function StructTestClient:utility()
|
|
568
|
+
return {
|
|
569
|
+
struct = vs,
|
|
570
|
+
contextify = function(ctx) return ctx end,
|
|
571
|
+
check = function(ctx)
|
|
572
|
+
local zed = "ZED"
|
|
573
|
+
if self.opts.foo ~= nil then
|
|
574
|
+
zed = zed .. tostring(self.opts.foo)
|
|
575
|
+
end
|
|
576
|
+
zed = zed .. "_"
|
|
577
|
+
if ctx == nil then
|
|
578
|
+
zed = zed .. "0"
|
|
579
|
+
elseif type(ctx.meta) == "table" and ctx.meta.bar ~= nil then
|
|
580
|
+
zed = zed .. tostring(ctx.meta.bar)
|
|
581
|
+
else
|
|
582
|
+
zed = zed .. "0"
|
|
583
|
+
end
|
|
584
|
+
return { zed = zed }
|
|
585
|
+
end,
|
|
586
|
+
}
|
|
587
|
+
end
|
|
588
|
+
|
|
589
|
+
function StructTestClient:tester(opts)
|
|
590
|
+
return StructTestClient.new(opts)
|
|
591
|
+
end
|
|
592
|
+
|
|
593
|
+
|
|
594
|
+
-- Module exports
|
|
595
|
+
return {
|
|
596
|
+
NULLMARK = NULLMARK,
|
|
597
|
+
EXISTSMARK = EXISTSMARK,
|
|
598
|
+
JSON_NULL = JSON_NULL,
|
|
599
|
+
nullModifier = nullModifier,
|
|
600
|
+
makeRunner = makeRunner,
|
|
601
|
+
StructTestClient = StructTestClient
|
|
602
|
+
}
|