testeranto 0.202.0 → 0.203.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/README.md +23 -0
- package/UX/chache/index.md +11 -0
- package/dist/prebuild/App.css +78 -0
- package/dist/prebuild/App.js +4828 -2814
- package/dist/prebuild/testeranto.mjs +2650 -1037
- package/example/Calculator.go +63 -0
- package/example/Calculator.golingvu.adapter.go +81 -0
- package/example/Calculator.golingvu.go +67 -0
- package/example/Calculator.golingvu.implementation.go +95 -0
- package/example/Calculator.golingvu.specification.go +68 -0
- package/example/Calculator.pitono.adapter.py +68 -0
- package/example/Calculator.pitono.implementation.py +30 -0
- package/example/Calculator.pitono.specification.py +154 -0
- package/example/Calculator.pitono.test.py +47 -0
- package/example/Calculator.py +93 -0
- package/example/Calculator.test.adapter.ts +86 -0
- package/example/Calculator.test.implementation.ts +82 -0
- package/example/Calculator.test.specification.ts +213 -0
- package/example/Calculator.test.ts +13 -0
- package/example/Calculator.test.types.ts +50 -0
- package/example/Calculator.ts +130 -0
- package/example/README.md +1 -0
- package/example/base_suite_test.go +51 -0
- package/example/cmd/main.go +16 -0
- package/example/go.mod +9 -0
- package/example/main +0 -0
- package/example/test_example.py +143 -74
- package/{testeranto → example/testeranto}/bundles/golang/core/Calculator.golingvu.go +1 -1
- package/example/testeranto/metafiles/golang/core.json +198 -0
- package/go.mod +3 -1
- package/golingvu.tmp.txt +68 -0
- package/log.txt +85 -0
- package/package.json +50 -41
- package/scripts/build-example.ts +245 -0
- package/src/App.tsx +94 -44
- package/src/Helpo.tsx +89 -0
- package/src/PM/PM_WithBuild.ts +32 -20
- package/src/PM/PM_WithGit.ts +60 -13
- package/src/PM/PM_WithHelpo.ts +341 -0
- package/src/PM/PM_WithProcesses.ts +484 -223
- package/src/PM/PM_WithWebSocket.ts +210 -2
- package/src/PM/golingvuBuild.ts +56 -0
- package/src/PM/main.ts +570 -438
- package/src/PM/pitonoBuild.ts +56 -0
- package/src/PM/utils.ts +7 -1
- package/src/app.scss +102 -0
- package/src/components/pure/AppFrame.tsx +259 -149
- package/src/components/pure/GitIntegrationView.tsx +527 -238
- package/src/components/pure/HelpoChatDrawer.tsx +222 -0
- package/src/components/pure/MagicRobotModal.tsx +136 -0
- package/src/components/pure/ProcessDetails.tsx +99 -0
- package/src/components/pure/ProcessInput.tsx +67 -0
- package/src/components/pure/ProcessList.tsx +89 -0
- package/src/components/pure/ProcessLogs.tsx +54 -0
- package/src/components/pure/ProcessManager.tsx +37 -46
- package/src/components/pure/ProcessManagerView.tsx +42 -367
- package/src/components/pure/ProcessManagerViewTypes.ts +10 -0
- package/src/components/pure/ProcessSidebar.tsx +88 -0
- package/src/components/pure/ProcessTerminal.tsx +51 -0
- package/src/components/pure/SingleProcessView.tsx +140 -231
- package/src/components/pure/TerminalInput.tsx +73 -0
- package/src/components/pure/TerminalLogs.tsx +80 -0
- package/src/components/pure/TestPageView.tsx +21 -116
- package/src/components/pure/TestPageView_utils.tsx +2 -0
- package/src/components/stateful/DratoPage.tsx +457 -0
- package/src/components/stateful/GenericXMLEditor/AttributeEditor.tsx +87 -0
- package/src/components/stateful/GenericXMLEditor/Drawer.tsx +174 -0
- package/src/components/stateful/GenericXMLEditor/GenericPreview.tsx +160 -0
- package/src/components/stateful/GenericXMLEditor/GenericTextEditor.tsx +104 -0
- package/src/components/stateful/GenericXMLEditor/GenericTree.tsx +104 -0
- package/src/components/stateful/GenericXMLEditorPage.tsx +346 -0
- package/src/components/stateful/GitIntegrationPage.tsx +258 -3
- package/src/components/stateful/GrafeoPage.tsx +563 -0
- package/src/components/stateful/SVGEditor/SVGAttributesEditor.tsx +26 -8
- package/src/components/stateful/SVGEditor/SVGPreview.tsx +4 -2
- package/src/components/stateful/SVGEditorPage.tsx +195 -181
- package/src/components/stateful/SingleProcessPage.tsx +133 -131
- package/src/components/stateful/SkriboPage.tsx +765 -0
- package/src/components/stateful/TestPage.tsx +3 -2
- package/src/esbuildConfigs/node.ts +1 -1
- package/src/example/go.mod +9 -0
- package/src/example/main.go +61 -0
- package/src/golingvu/PM/golang_test.go +103 -0
- package/src/golingvu/README.md +186 -2
- package/src/golingvu/base_given.go +89 -2
- package/src/golingvu/base_suite.go +48 -2
- package/src/golingvu/go.mod +6 -0
- package/src/golingvu/golingvu.go +703 -29
- package/src/golingvu/types.go +0 -14
- package/src/helpo/directives.md +5 -0
- package/src/helpo/prompt.txt +38 -0
- package/src/hooks/useTerminalWebSocket.ts +49 -0
- package/src/lib/BaseGiven.ts +126 -28
- package/src/lib/BaseSuite.test/test.ts +97 -180
- package/src/lib/BaseSuite.ts +52 -10
- package/src/lib/BaseThen.ts +34 -38
- package/src/lib/BaseWhen.ts +9 -2
- package/src/lib/Tiposkripto.test/Tiposkripto.specification.ts +9 -8
- package/src/lib/Tiposkripto.ts +41 -11
- package/src/lib/pmProxy.ts +55 -18
- package/src/pitono/PM/python.py +165 -0
- package/src/pitono/Pitono.py +298 -0
- package/src/pitono/PitonoTest.py +25 -0
- package/src/pitono/README.md +21 -0
- package/src/pitono/__init__.py +6 -0
- package/{pitono → src/pitono}/base_given.py +42 -20
- package/{pitono → src/pitono}/base_suite.py +55 -2
- package/{pitono → src/pitono}/base_then.py +15 -1
- package/{pitono → src/pitono}/base_when.py +15 -1
- package/{pitono → src/pitono}/pitono.egg-info/PKG-INFO +25 -0
- package/{pitono → src/pitono}/pitono.egg-info/SOURCES.txt +1 -0
- package/src/pitono/types.py +87 -0
- package/src/services/FileService.ts +146 -11
- package/src/testeranto.ts +115 -149
- package/src/utils/golingvuMetafile.ts +822 -118
- package/src/utils/golingvuWatcher.ts +285 -0
- package/src/utils/logFiles.ts +10 -2
- package/src/utils/makePrompt.ts +12 -1
- package/src/utils/pitonoMetafile.ts +326 -54
- package/src/utils/pitonoWatcher.ts +157 -0
- package/testeranto/App.css +78 -0
- package/testeranto/App.js +4828 -2814
- package/testeranto/bundles/node/core/{chunk-RIM6RECA.mjs → chunk-MJTSYIAQ.mjs} +179 -250
- package/testeranto/bundles/node/core/src/lib/BaseSuite.test/node.test.mjs +110 -62
- package/testeranto/bundles/node/core/src/lib/TipoSkripto.test/TipoSkripto.mjs +135 -137
- package/testeranto/bundles/node/core/src/lib/pmProxy.test/index.mjs +4317 -4
- package/testeranto/bundles/pure/core/{chunk-XYOCRDEQ.mjs → chunk-6HR24P27.mjs} +96 -173
- package/testeranto/bundles/pure/core/src/Pure.test.mjs +1 -1
- package/testeranto/bundles/pure/core/src/lib/BaseSuite.test/pure.test.mjs +110 -62
- package/testeranto/bundles/web/core/{chunk-JMDLMADH.mjs → chunk-AZZHJNSU.mjs} +2473 -191
- package/testeranto/bundles/web/core/{chunk-LQMU5NCG.mjs → chunk-ME6I6FJZ.mjs} +96 -173
- package/testeranto/bundles/web/core/src/components/pure/FeaturesReporterView.test/index.html +15 -0
- package/testeranto/bundles/web/core/src/components/pure/FeaturesReporterView.test/index.mjs +3 -5
- package/testeranto/bundles/web/core/src/components/pure/ProjectPageView.test/index.css +0 -78
- package/testeranto/bundles/web/core/src/components/pure/ProjectPageView.test/index.html +15 -0
- package/testeranto/bundles/web/core/src/components/pure/ProjectPageView.test/index.mjs +6476 -69
- package/testeranto/bundles/web/core/src/lib/BaseSuite.test/web.test.html +15 -0
- package/testeranto/bundles/web/core/src/lib/BaseSuite.test/web.test.mjs +110 -62
- package/testeranto/helpo_chat_history.json +1 -0
- package/testeranto/metafiles/golang/core.json +42 -47
- package/testeranto/metafiles/node/core.json +263 -247
- package/testeranto/metafiles/pure/core.json +23 -38
- package/testeranto/metafiles/python/core.json +85 -9
- package/testeranto/metafiles/web/core.json +966 -460
- package/testeranto/reports/core/config.json +30 -6
- package/testeranto/reports/core/example/Calculator.golingvu/golang/exit.log +1 -0
- package/testeranto/reports/core/example/Calculator.golingvu/golang/stderr.log +2 -0
- package/testeranto/reports/core/example/Calculator.golingvu/golang/stdout.log +1 -0
- package/testeranto/reports/core/example/Calculator.pitono.test/python/exit.log +1 -0
- package/testeranto/reports/core/example/Calculator.pitono.test/python/stderr.log +11 -0
- package/testeranto/reports/core/example/Calculator.pitono.test/python/stdout.log +1 -0
- package/testeranto/reports/core/example/Calculator.test/node/exit.log +1 -0
- package/testeranto/reports/core/example/Calculator.test/node/lint_errors.txt +2 -0
- package/testeranto/reports/core/example/Calculator.test/node/message.txt +16 -0
- package/testeranto/reports/core/example/Calculator.test/node/prompt.txt +13 -0
- package/testeranto/reports/core/example/Calculator.test/node/stderr.log +33 -0
- package/testeranto/reports/core/example/Calculator.test/node/stdout.log +1076 -0
- package/testeranto/reports/core/example/Calculator.test/node/tests.json +1109 -0
- package/testeranto/reports/core/example/Calculator.test/node/type_errors.txt +34 -0
- package/testeranto/reports/core/example/test_example/python/exit.log +1 -0
- package/testeranto/reports/core/example/test_example/python/stderr.log +24 -0
- package/testeranto/reports/core/src/Pure.test/pure/message.txt +1 -2
- package/testeranto/reports/core/src/Pure.test/pure/prompt.txt +4 -5
- package/testeranto/reports/core/src/Pure.test/pure/type_errors.txt +16 -3
- package/testeranto/reports/core/src/components/pure/FeaturesReporterView.test/index/web/error.log +0 -91
- package/testeranto/reports/core/src/components/pure/FeaturesReporterView.test/index/web/exit.log +0 -1
- package/testeranto/reports/core/src/components/pure/FeaturesReporterView.test/index/web/info.log +0 -2
- package/testeranto/reports/core/src/components/pure/FeaturesReporterView.test/index/web/message.txt +17 -0
- package/testeranto/reports/core/src/components/pure/FeaturesReporterView.test/index/web/prompt.txt +26 -0
- package/testeranto/reports/core/src/components/pure/FeaturesReporterView.test/index/web/type_errors.txt +69 -0
- package/testeranto/reports/core/src/components/pure/ModalContent.test/index/web/lint_errors.txt +16 -0
- package/testeranto/reports/core/src/components/pure/ModalContent.test/index/web/message.txt +17 -0
- package/testeranto/reports/core/src/components/pure/ModalContent.test/index/web/prompt.txt +27 -0
- package/testeranto/reports/core/src/components/pure/ModalContent.test/index/web/type_errors.txt +42 -0
- package/testeranto/reports/core/src/components/pure/ProjectPageView.test/index/web/error.log +0 -30
- package/testeranto/reports/core/src/components/pure/ProjectPageView.test/index/web/exit.log +0 -1
- package/testeranto/reports/core/src/components/pure/ProjectPageView.test/index/web/info.log +0 -2
- package/testeranto/reports/core/src/components/pure/ProjectPageView.test/index/web/lint_errors.txt +30 -0
- package/testeranto/reports/core/src/components/pure/ProjectPageView.test/index/web/message.txt +17 -0
- package/testeranto/reports/core/src/components/pure/ProjectPageView.test/index/web/prompt.txt +30 -0
- package/testeranto/reports/core/src/components/pure/ProjectPageView.test/index/web/type_errors.txt +58 -0
- package/testeranto/reports/core/src/lib/BaseSuite.test/node.test/node/exit.log +1 -1
- package/testeranto/reports/core/src/lib/BaseSuite.test/node.test/node/prompt.txt +9 -1
- package/testeranto/reports/core/src/lib/BaseSuite.test/node.test/node/stderr.log +1 -0
- package/testeranto/reports/core/src/lib/BaseSuite.test/node.test/node/stdout.log +4 -1
- package/testeranto/reports/core/src/lib/BaseSuite.test/node.test/node/tests.json +98 -7
- package/testeranto/reports/core/src/lib/BaseSuite.test/node.test/node/type_errors.txt +44 -28
- package/testeranto/reports/core/src/lib/BaseSuite.test/pure.test/pure/message.txt +1 -2
- package/testeranto/reports/core/src/lib/BaseSuite.test/pure.test/pure/prompt.txt +4 -6
- package/testeranto/reports/core/src/lib/BaseSuite.test/pure.test/pure/type_errors.txt +44 -28
- package/testeranto/reports/core/src/lib/BaseSuite.test/web.test/web/error.log +0 -1
- package/testeranto/reports/core/src/lib/BaseSuite.test/web.test/web/exit.log +0 -1
- package/testeranto/reports/core/src/lib/BaseSuite.test/web.test/web/message.txt +17 -0
- package/testeranto/reports/core/src/lib/BaseSuite.test/web.test/web/prompt.txt +25 -0
- package/testeranto/reports/core/src/lib/BaseSuite.test/web.test/web/type_errors.txt +69 -0
- package/testeranto/reports/core/src/lib/TipoSkripto.test/TipoSkripto/node/exit.log +1 -1
- package/testeranto/reports/core/src/lib/TipoSkripto.test/TipoSkripto/node/message.txt +1 -2
- package/testeranto/reports/core/src/lib/TipoSkripto.test/TipoSkripto/node/prompt.txt +4 -8
- package/testeranto/reports/core/src/lib/TipoSkripto.test/TipoSkripto/node/stderr.log +68 -35
- package/testeranto/reports/core/src/lib/TipoSkripto.test/TipoSkripto/node/stdout.log +336 -6
- package/testeranto/reports/core/src/lib/TipoSkripto.test/TipoSkripto/node/tests.json +166 -0
- package/testeranto/reports/core/src/lib/TipoSkripto.test/TipoSkripto/node/type_errors.txt +20 -13
- package/testeranto/reports/core/src/lib/pmProxy.test/index/node/exit.log +1 -1
- package/testeranto/reports/core/src/lib/pmProxy.test/index/node/prompt.txt +9 -1
- package/testeranto/reports/core/src/lib/pmProxy.test/index/node/stderr.log +0 -20
- package/testeranto/reports/core/src/lib/pmProxy.test/index/node/stdout.log +1 -3
- package/testeranto/reports/core/src/lib/pmProxy.test/index/node/tests.json +31 -0
- package/testeranto/reports/core/src/lib/pmProxy.test/index/node/type_errors.txt +16 -3
- package/testeranto/reports/core/summary.json +46 -19
- package/testeranto.config.ts +18 -30
- package/dist/cjs-shim.js +0 -12
- package/dist/common/design-editor/DesignEditor.js +0 -77
- package/dist/common/design-editor/index.js +0 -18
- package/dist/common/design-editor/server.js +0 -98
- package/dist/common/design-editor/types.js +0 -2
- package/dist/common/package.json +0 -3
- package/dist/common/src/App.js +0 -219
- package/dist/common/src/CoreTypes.js +0 -2
- package/dist/common/src/Init.js +0 -48
- package/dist/common/src/Node.js +0 -40
- package/dist/common/src/NodeSidecar.js +0 -15
- package/dist/common/src/PM/PM_WithBuild.js +0 -135
- package/dist/common/src/PM/PM_WithEslintAndTsc.js +0 -204
- package/dist/common/src/PM/PM_WithGit.js +0 -517
- package/dist/common/src/PM/PM_WithProcesses.js +0 -519
- package/dist/common/src/PM/PM_WithWebSocket.js +0 -535
- package/dist/common/src/PM/__tests__/nodeSidecar.testeranto.js +0 -108
- package/dist/common/src/PM/__tests__/pureSidecar.testeranto.js +0 -93
- package/dist/common/src/PM/__tests__/webSidecar.testeranto.js +0 -93
- package/dist/common/src/PM/base.js +0 -319
- package/dist/common/src/PM/index.js +0 -6
- package/dist/common/src/PM/main.js +0 -672
- package/dist/common/src/PM/metafileOutputs.js +0 -78
- package/dist/common/src/PM/node.js +0 -179
- package/dist/common/src/PM/nodeSidecar.js +0 -65
- package/dist/common/src/PM/pitonoRunner.js +0 -54
- package/dist/common/src/PM/pure.js +0 -103
- package/dist/common/src/PM/pureSidecar.js +0 -48
- package/dist/common/src/PM/sidecar.js +0 -11
- package/dist/common/src/PM/types.js +0 -2
- package/dist/common/src/PM/utils.js +0 -210
- package/dist/common/src/PM/web.js +0 -106
- package/dist/common/src/PM/webSidecar.js +0 -47
- package/dist/common/src/Pure.js +0 -52
- package/dist/common/src/Pure.test.js +0 -180
- package/dist/common/src/PureSidecar.js +0 -13
- package/dist/common/src/ReportServer.js +0 -1
- package/dist/common/src/ReportServer.test.ts/index.js +0 -78
- package/dist/common/src/ReportServerLib.js +0 -1
- package/dist/common/src/Types.js +0 -2
- package/dist/common/src/Web.js +0 -61
- package/dist/common/src/WebSidecar.js +0 -14
- package/dist/common/src/components/DesignEditorPage.js +0 -205
- package/dist/common/src/components/SunriseAnimation.js +0 -291
- package/dist/common/src/components/SunriseAnimation.test/implementation.js +0 -1
- package/dist/common/src/components/SunriseAnimation.test/index.js +0 -1
- package/dist/common/src/components/SunriseAnimation.test/interface.js +0 -68
- package/dist/common/src/components/SunriseAnimation.test/specification.js +0 -1
- package/dist/common/src/components/SunriseAnimation.test/types.js +0 -2
- package/dist/common/src/components/TestStatusBadge.js +0 -35
- package/dist/common/src/components/pure/AppFrame.js +0 -81
- package/dist/common/src/components/pure/AppFrame.test/implementation.js +0 -63
- package/dist/common/src/components/pure/AppFrame.test/index.js +0 -14
- package/dist/common/src/components/pure/AppFrame.test/specification.js +0 -25
- package/dist/common/src/components/pure/AppFrame.test/types.js +0 -3
- package/dist/common/src/components/pure/ArtifactTree.js +0 -80
- package/dist/common/src/components/pure/BuildLogViewer.js +0 -106
- package/dist/common/src/components/pure/DebugEnv.js +0 -30
- package/dist/common/src/components/pure/FeaturesReporterView.js +0 -23
- package/dist/common/src/components/pure/FeaturesReporterView.test/implementation.js +0 -84
- package/dist/common/src/components/pure/FeaturesReporterView.test/index.js +0 -14
- package/dist/common/src/components/pure/FeaturesReporterView.test/specification.js +0 -27
- package/dist/common/src/components/pure/FeaturesReporterView.test/types.js +0 -2
- package/dist/common/src/components/pure/FileTree.js +0 -34
- package/dist/common/src/components/pure/FileTreeItem.js +0 -29
- package/dist/common/src/components/pure/GitHubLoginButton.js +0 -18
- package/dist/common/src/components/pure/GitIntegrationView.js +0 -342
- package/dist/common/src/components/pure/ModalContent.js +0 -86
- package/dist/common/src/components/pure/ModalContent.test/implementation.js +0 -35
- package/dist/common/src/components/pure/ModalContent.test/index.js +0 -58
- package/dist/common/src/components/pure/ModalContent.test/specification.js +0 -19
- package/dist/common/src/components/pure/ModalContent.test/types.js +0 -4
- package/dist/common/src/components/pure/NavBar.js +0 -44
- package/dist/common/src/components/pure/ProcessManager.js +0 -113
- package/dist/common/src/components/pure/ProcessManagerView.js +0 -236
- package/dist/common/src/components/pure/ProjectPageView.js +0 -68
- package/dist/common/src/components/pure/ProjectPageView.test/implementation.js +0 -184
- package/dist/common/src/components/pure/ProjectPageView.test/index.js +0 -14
- package/dist/common/src/components/pure/ProjectPageView.test/specification.js +0 -32
- package/dist/common/src/components/pure/ProjectPageView.test/types.js +0 -4
- package/dist/common/src/components/pure/ProjectsPageView.js +0 -72
- package/dist/common/src/components/pure/Settings.js +0 -121
- package/dist/common/src/components/pure/Settings.test.js +0 -34
- package/dist/common/src/components/pure/SettingsButton.js +0 -13
- package/dist/common/src/components/pure/SignIn.js +0 -22
- package/dist/common/src/components/pure/SingleProcessView.js +0 -167
- package/dist/common/src/components/pure/TestPageView.js +0 -373
- package/dist/common/src/components/pure/TestPageView.test/implementation.js +0 -157
- package/dist/common/src/components/pure/TestPageView.test/index.js +0 -15
- package/dist/common/src/components/pure/TestPageView.test/specification.js +0 -26
- package/dist/common/src/components/pure/TestPageView.test/types.js +0 -4
- package/dist/common/src/components/pure/TestPageView_utils.js +0 -117
- package/dist/common/src/components/pure/TestTable.js +0 -33
- package/dist/common/src/components/pure/ThemeCard.js +0 -15
- package/dist/common/src/components/pure/ToastNotification.js +0 -14
- package/dist/common/src/components/pure/UserProfile.js +0 -27
- package/dist/common/src/components/stateful/AuthCallbackPage.js +0 -51
- package/dist/common/src/components/stateful/FeaturesReporter.js +0 -60
- package/dist/common/src/components/stateful/FileTree.js +0 -59
- package/dist/common/src/components/stateful/GitIntegrationPage.js +0 -12
- package/dist/common/src/components/stateful/ProcessManagerPage.js +0 -110
- package/dist/common/src/components/stateful/ProjectPage.js +0 -102
- package/dist/common/src/components/stateful/ProjectsPage.js +0 -116
- package/dist/common/src/components/stateful/SettingsPage.js +0 -72
- package/dist/common/src/components/stateful/SingleProcessPage.js +0 -137
- package/dist/common/src/components/stateful/TestPage.js +0 -270
- package/dist/common/src/components/stateful/TextEditorPage.js +0 -154
- package/dist/common/src/defaultConfig.js +0 -19
- package/dist/common/src/esbuildConfigs/consoleDetectorPlugin.js +0 -38
- package/dist/common/src/esbuildConfigs/eslint-formatter-testeranto.js +0 -21
- package/dist/common/src/esbuildConfigs/featuresPlugin.js +0 -39
- package/dist/common/src/esbuildConfigs/index.js +0 -21
- package/dist/common/src/esbuildConfigs/inputFilesPlugin.js +0 -30
- package/dist/common/src/esbuildConfigs/nativeImportDetectorPlugin.js +0 -24
- package/dist/common/src/esbuildConfigs/node.js +0 -24
- package/dist/common/src/esbuildConfigs/pure.js +0 -42
- package/dist/common/src/esbuildConfigs/rebuildPlugin.js +0 -19
- package/dist/common/src/esbuildConfigs/web.js +0 -48
- package/dist/common/src/hooks/useGitMode.js +0 -21
- package/dist/common/src/init-docs.js +0 -9
- package/dist/common/src/lib/BaseGiven.js +0 -99
- package/dist/common/src/lib/BaseSuite.js +0 -91
- package/dist/common/src/lib/BaseSuite.test/mock.js +0 -68
- package/dist/common/src/lib/BaseSuite.test/node.test.js +0 -10
- package/dist/common/src/lib/BaseSuite.test/pure.test.js +0 -10
- package/dist/common/src/lib/BaseSuite.test/test.js +0 -229
- package/dist/common/src/lib/BaseSuite.test/web.test.js +0 -10
- package/dist/common/src/lib/BaseThen.js +0 -64
- package/dist/common/src/lib/BaseWhen.js +0 -45
- package/dist/common/src/lib/Sidecar.js +0 -7
- package/dist/common/src/lib/Tiposkripto.js +0 -173
- package/dist/common/src/lib/Tiposkripto.test/MockTiposkripto.js +0 -180
- package/dist/common/src/lib/Tiposkripto.test/Tiposkripto.adapter.js +0 -29
- package/dist/common/src/lib/Tiposkripto.test/Tiposkripto.implementation.js +0 -213
- package/dist/common/src/lib/Tiposkripto.test/Tiposkripto.js +0 -11
- package/dist/common/src/lib/Tiposkripto.test/Tiposkripto.specification.js +0 -50
- package/dist/common/src/lib/Tiposkripto.test/Tiposkripto.types.js +0 -2
- package/dist/common/src/lib/abstractBase.test/MockGiven.js +0 -24
- package/dist/common/src/lib/abstractBase.test/MockThen.js +0 -16
- package/dist/common/src/lib/abstractBase.test/MockWhen.js +0 -20
- package/dist/common/src/lib/abstractBase.test/adapter.js +0 -24
- package/dist/common/src/lib/abstractBase.test/implementation.js +0 -38
- package/dist/common/src/lib/abstractBase.test/index.js +0 -18
- package/dist/common/src/lib/abstractBase.test/specification.js +0 -19
- package/dist/common/src/lib/abstractBase.test/types.js +0 -2
- package/dist/common/src/lib/index.js +0 -31
- package/dist/common/src/lib/pmProxy.js +0 -293
- package/dist/common/src/lib/pmProxy.test/adapter.js +0 -54
- package/dist/common/src/lib/pmProxy.test/implementation.js +0 -137
- package/dist/common/src/lib/pmProxy.test/index.js +0 -15
- package/dist/common/src/lib/pmProxy.test/mockPM.js +0 -34
- package/dist/common/src/lib/pmProxy.test/mockPMBase.js +0 -131
- package/dist/common/src/lib/pmProxy.test/specification.js +0 -179
- package/dist/common/src/lib/pmProxy.test/types.js +0 -2
- package/dist/common/src/lib/types.js +0 -3
- package/dist/common/src/mothership/index.js +0 -21
- package/dist/common/src/mothership/test.js +0 -83
- package/dist/common/src/run.js +0 -49
- package/dist/common/src/services/FileService.js +0 -505
- package/dist/common/src/services/GitHubAuthService.js +0 -184
- package/dist/common/src/testeranto.js +0 -224
- package/dist/common/src/types/features.js +0 -34
- package/dist/common/src/utils/api.js +0 -93
- package/dist/common/src/utils/buildTemplates.js +0 -37
- package/dist/common/src/utils/featureUtils.js +0 -29
- package/dist/common/src/utils/gitTest.js +0 -27
- package/dist/common/src/utils/golingvuMetafile.js +0 -116
- package/dist/common/src/utils/logFiles.js +0 -52
- package/dist/common/src/utils/makePrompt.js +0 -116
- package/dist/common/src/utils/pitonoMetafile.js +0 -67
- package/dist/common/src/utils/queue.js +0 -36
- package/dist/common/src/utils.js +0 -143
- package/dist/common/src/web.html.js +0 -18
- package/dist/common/testeranto.config.js +0 -102
- package/dist/common/tsconfig.common.tsbuildinfo +0 -1
- package/dist/module/design-editor/DesignEditor.js +0 -40
- package/dist/module/design-editor/index.js +0 -2
- package/dist/module/design-editor/server.js +0 -92
- package/dist/module/design-editor/types.js +0 -1
- package/dist/module/package.json +0 -3
- package/dist/module/src/App.js +0 -176
- package/dist/module/src/CoreTypes.js +0 -1
- package/dist/module/src/Init.js +0 -43
- package/dist/module/src/Node.js +0 -33
- package/dist/module/src/NodeSidecar.js +0 -11
- package/dist/module/src/PM/PM_WithBuild.js +0 -128
- package/dist/module/src/PM/PM_WithEslintAndTsc.js +0 -197
- package/dist/module/src/PM/PM_WithGit.js +0 -477
- package/dist/module/src/PM/PM_WithProcesses.js +0 -479
- package/dist/module/src/PM/PM_WithWebSocket.js +0 -528
- package/dist/module/src/PM/__tests__/nodeSidecar.testeranto.js +0 -103
- package/dist/module/src/PM/__tests__/pureSidecar.testeranto.js +0 -88
- package/dist/module/src/PM/__tests__/webSidecar.testeranto.js +0 -88
- package/dist/module/src/PM/base.js +0 -312
- package/dist/module/src/PM/index.js +0 -2
- package/dist/module/src/PM/main.js +0 -632
- package/dist/module/src/PM/metafileOutputs.js +0 -78
- package/dist/module/src/PM/node.js +0 -172
- package/dist/module/src/PM/nodeSidecar.js +0 -58
- package/dist/module/src/PM/pitonoRunner.js +0 -47
- package/dist/module/src/PM/pure.js +0 -99
- package/dist/module/src/PM/pureSidecar.js +0 -41
- package/dist/module/src/PM/sidecar.js +0 -7
- package/dist/module/src/PM/types.js +0 -1
- package/dist/module/src/PM/utils.js +0 -196
- package/dist/module/src/PM/web.js +0 -102
- package/dist/module/src/PM/webSidecar.js +0 -40
- package/dist/module/src/Pure.js +0 -45
- package/dist/module/src/Pure.test.js +0 -175
- package/dist/module/src/PureSidecar.js +0 -9
- package/dist/module/src/ReportServer.js +0 -1
- package/dist/module/src/ReportServer.test.ts/index.js +0 -73
- package/dist/module/src/ReportServerLib.js +0 -1
- package/dist/module/src/Types.js +0 -1
- package/dist/module/src/Web.js +0 -54
- package/dist/module/src/WebSidecar.js +0 -10
- package/dist/module/src/components/DesignEditorPage.js +0 -168
- package/dist/module/src/components/SunriseAnimation.js +0 -256
- package/dist/module/src/components/SunriseAnimation.test/implementation.js +0 -1
- package/dist/module/src/components/SunriseAnimation.test/index.js +0 -1
- package/dist/module/src/components/SunriseAnimation.test/interface.js +0 -32
- package/dist/module/src/components/SunriseAnimation.test/specification.js +0 -1
- package/dist/module/src/components/SunriseAnimation.test/types.js +0 -1
- package/dist/module/src/components/TestStatusBadge.js +0 -28
- package/dist/module/src/components/pure/AppFrame.js +0 -74
- package/dist/module/src/components/pure/AppFrame.test/implementation.js +0 -57
- package/dist/module/src/components/pure/AppFrame.test/index.js +0 -9
- package/dist/module/src/components/pure/AppFrame.test/specification.js +0 -21
- package/dist/module/src/components/pure/AppFrame.test/types.js +0 -2
- package/dist/module/src/components/pure/ArtifactTree.js +0 -80
- package/dist/module/src/components/pure/BuildLogViewer.js +0 -99
- package/dist/module/src/components/pure/DebugEnv.js +0 -23
- package/dist/module/src/components/pure/FeaturesReporterView.js +0 -16
- package/dist/module/src/components/pure/FeaturesReporterView.test/implementation.js +0 -81
- package/dist/module/src/components/pure/FeaturesReporterView.test/index.js +0 -9
- package/dist/module/src/components/pure/FeaturesReporterView.test/specification.js +0 -23
- package/dist/module/src/components/pure/FeaturesReporterView.test/types.js +0 -1
- package/dist/module/src/components/pure/FileTree.js +0 -27
- package/dist/module/src/components/pure/FileTreeItem.js +0 -22
- package/dist/module/src/components/pure/GitHubLoginButton.js +0 -11
- package/dist/module/src/components/pure/GitIntegrationView.js +0 -305
- package/dist/module/src/components/pure/ModalContent.js +0 -79
- package/dist/module/src/components/pure/ModalContent.test/implementation.js +0 -32
- package/dist/module/src/components/pure/ModalContent.test/index.js +0 -53
- package/dist/module/src/components/pure/ModalContent.test/specification.js +0 -15
- package/dist/module/src/components/pure/ModalContent.test/types.js +0 -3
- package/dist/module/src/components/pure/NavBar.js +0 -37
- package/dist/module/src/components/pure/ProcessManager.js +0 -76
- package/dist/module/src/components/pure/ProcessManagerView.js +0 -199
- package/dist/module/src/components/pure/ProjectPageView.js +0 -61
- package/dist/module/src/components/pure/ProjectPageView.test/implementation.js +0 -181
- package/dist/module/src/components/pure/ProjectPageView.test/index.js +0 -9
- package/dist/module/src/components/pure/ProjectPageView.test/specification.js +0 -28
- package/dist/module/src/components/pure/ProjectPageView.test/types.js +0 -3
- package/dist/module/src/components/pure/ProjectsPageView.js +0 -65
- package/dist/module/src/components/pure/Settings.js +0 -84
- package/dist/module/src/components/pure/Settings.test.js +0 -29
- package/dist/module/src/components/pure/SettingsButton.js +0 -6
- package/dist/module/src/components/pure/SignIn.js +0 -15
- package/dist/module/src/components/pure/SingleProcessView.js +0 -130
- package/dist/module/src/components/pure/TestPageView.js +0 -336
- package/dist/module/src/components/pure/TestPageView.test/implementation.js +0 -121
- package/dist/module/src/components/pure/TestPageView.test/index.js +0 -10
- package/dist/module/src/components/pure/TestPageView.test/specification.js +0 -22
- package/dist/module/src/components/pure/TestPageView.test/types.js +0 -3
- package/dist/module/src/components/pure/TestPageView_utils.js +0 -109
- package/dist/module/src/components/pure/TestTable.js +0 -26
- package/dist/module/src/components/pure/ThemeCard.js +0 -8
- package/dist/module/src/components/pure/ToastNotification.js +0 -7
- package/dist/module/src/components/pure/UserProfile.js +0 -20
- package/dist/module/src/components/stateful/AuthCallbackPage.js +0 -14
- package/dist/module/src/components/stateful/FeaturesReporter.js +0 -23
- package/dist/module/src/components/stateful/FileTree.js +0 -59
- package/dist/module/src/components/stateful/GitIntegrationPage.js +0 -5
- package/dist/module/src/components/stateful/ProcessManagerPage.js +0 -73
- package/dist/module/src/components/stateful/ProjectPage.js +0 -65
- package/dist/module/src/components/stateful/ProjectsPage.js +0 -79
- package/dist/module/src/components/stateful/SettingsPage.js +0 -35
- package/dist/module/src/components/stateful/SingleProcessPage.js +0 -100
- package/dist/module/src/components/stateful/TestPage.js +0 -233
- package/dist/module/src/components/stateful/TextEditorPage.js +0 -117
- package/dist/module/src/defaultConfig.js +0 -17
- package/dist/module/src/esbuildConfigs/consoleDetectorPlugin.js +0 -32
- package/dist/module/src/esbuildConfigs/eslint-formatter-testeranto.js +0 -18
- package/dist/module/src/esbuildConfigs/featuresPlugin.js +0 -34
- package/dist/module/src/esbuildConfigs/index.js +0 -19
- package/dist/module/src/esbuildConfigs/inputFilesPlugin.js +0 -25
- package/dist/module/src/esbuildConfigs/nativeImportDetectorPlugin.js +0 -21
- package/dist/module/src/esbuildConfigs/node.js +0 -19
- package/dist/module/src/esbuildConfigs/pure.js +0 -37
- package/dist/module/src/esbuildConfigs/rebuildPlugin.js +0 -14
- package/dist/module/src/esbuildConfigs/web.js +0 -43
- package/dist/module/src/hooks/useGitMode.js +0 -17
- package/dist/module/src/init-docs.js +0 -4
- package/dist/module/src/lib/BaseGiven.js +0 -95
- package/dist/module/src/lib/BaseSuite.js +0 -87
- package/dist/module/src/lib/BaseSuite.test/mock.js +0 -61
- package/dist/module/src/lib/BaseSuite.test/node.test.js +0 -5
- package/dist/module/src/lib/BaseSuite.test/pure.test.js +0 -5
- package/dist/module/src/lib/BaseSuite.test/test.js +0 -225
- package/dist/module/src/lib/BaseSuite.test/web.test.js +0 -5
- package/dist/module/src/lib/BaseThen.js +0 -60
- package/dist/module/src/lib/BaseWhen.js +0 -41
- package/dist/module/src/lib/Sidecar.js +0 -3
- package/dist/module/src/lib/Tiposkripto.js +0 -170
- package/dist/module/src/lib/Tiposkripto.test/MockTiposkripto.js +0 -173
- package/dist/module/src/lib/Tiposkripto.test/Tiposkripto.adapter.js +0 -26
- package/dist/module/src/lib/Tiposkripto.test/Tiposkripto.implementation.js +0 -210
- package/dist/module/src/lib/Tiposkripto.test/Tiposkripto.js +0 -6
- package/dist/module/src/lib/Tiposkripto.test/Tiposkripto.specification.js +0 -46
- package/dist/module/src/lib/Tiposkripto.test/Tiposkripto.types.js +0 -1
- package/dist/module/src/lib/abstractBase.test/MockGiven.js +0 -20
- package/dist/module/src/lib/abstractBase.test/MockThen.js +0 -12
- package/dist/module/src/lib/abstractBase.test/MockWhen.js +0 -16
- package/dist/module/src/lib/abstractBase.test/adapter.js +0 -21
- package/dist/module/src/lib/abstractBase.test/implementation.js +0 -35
- package/dist/module/src/lib/abstractBase.test/index.js +0 -13
- package/dist/module/src/lib/abstractBase.test/specification.js +0 -15
- package/dist/module/src/lib/abstractBase.test/types.js +0 -1
- package/dist/module/src/lib/index.js +0 -26
- package/dist/module/src/lib/pmProxy.js +0 -284
- package/dist/module/src/lib/pmProxy.test/adapter.js +0 -51
- package/dist/module/src/lib/pmProxy.test/implementation.js +0 -134
- package/dist/module/src/lib/pmProxy.test/index.js +0 -10
- package/dist/module/src/lib/pmProxy.test/mockPM.js +0 -30
- package/dist/module/src/lib/pmProxy.test/mockPMBase.js +0 -127
- package/dist/module/src/lib/pmProxy.test/specification.js +0 -175
- package/dist/module/src/lib/pmProxy.test/types.js +0 -1
- package/dist/module/src/lib/types.js +0 -2
- package/dist/module/src/mothership/index.js +0 -16
- package/dist/module/src/mothership/test.js +0 -78
- package/dist/module/src/run.js +0 -49
- package/dist/module/src/services/FileService.js +0 -468
- package/dist/module/src/services/GitHubAuthService.js +0 -180
- package/dist/module/src/testeranto.js +0 -186
- package/dist/module/src/types/features.js +0 -31
- package/dist/module/src/utils/api.js +0 -87
- package/dist/module/src/utils/buildTemplates.js +0 -33
- package/dist/module/src/utils/featureUtils.js +0 -24
- package/dist/module/src/utils/gitTest.js +0 -23
- package/dist/module/src/utils/golingvuMetafile.js +0 -109
- package/dist/module/src/utils/logFiles.js +0 -47
- package/dist/module/src/utils/makePrompt.js +0 -109
- package/dist/module/src/utils/pitonoMetafile.js +0 -60
- package/dist/module/src/utils/queue.js +0 -32
- package/dist/module/src/utils.js +0 -130
- package/dist/module/src/web.html.js +0 -16
- package/dist/module/testeranto.config.js +0 -100
- package/dist/module/tsconfig.module.tsbuildinfo +0 -1
- package/dist/types/design-editor/DesignEditor.d.ts +0 -1
- package/dist/types/src/App.d.ts +0 -19
- package/dist/types/src/CoreTypes.d.ts +0 -52
- package/dist/types/src/Init.d.ts +0 -2
- package/dist/types/src/Node.d.ts +0 -9
- package/dist/types/src/NodeSidecar.d.ts +0 -6
- package/dist/types/src/PM/PM_WithBuild.d.ts +0 -13
- package/dist/types/src/PM/PM_WithEslintAndTsc.d.ts +0 -22
- package/dist/types/src/PM/PM_WithGit.d.ts +0 -27
- package/dist/types/src/PM/PM_WithProcesses.d.ts +0 -29
- package/dist/types/src/PM/PM_WithWebSocket.d.ts +0 -108
- package/dist/types/src/PM/__tests__/nodeSidecar.testeranto.d.ts +0 -2
- package/dist/types/src/PM/__tests__/pureSidecar.testeranto.d.ts +0 -2
- package/dist/types/src/PM/__tests__/webSidecar.testeranto.d.ts +0 -2
- package/dist/types/src/PM/base.d.ts +0 -35
- package/dist/types/src/PM/index.d.ts +0 -35
- package/dist/types/src/PM/main.d.ts +0 -8
- package/dist/types/src/PM/node.d.ts +0 -38
- package/dist/types/src/PM/nodeSidecar.d.ts +0 -13
- package/dist/types/src/PM/pitonoRunner.d.ts +0 -7
- package/dist/types/src/PM/pure.d.ts +0 -41
- package/dist/types/src/PM/pureSidecar.d.ts +0 -11
- package/dist/types/src/PM/sidecar.d.ts +0 -8
- package/dist/types/src/PM/types.d.ts +0 -118
- package/dist/types/src/PM/utils.d.ts +0 -35
- package/dist/types/src/PM/web.d.ts +0 -41
- package/dist/types/src/PM/webSidecar.d.ts +0 -11
- package/dist/types/src/Pure.d.ts +0 -14
- package/dist/types/src/Pure.test.d.ts +0 -2
- package/dist/types/src/PureSidecar.d.ts +0 -8
- package/dist/types/src/ReportServer.test.ts/index.d.ts +0 -2
- package/dist/types/src/Types.d.ts +0 -119
- package/dist/types/src/Web.d.ts +0 -9
- package/dist/types/src/WebSidecar.d.ts +0 -8
- package/dist/types/src/components/DesignEditorPage.d.ts +0 -1
- package/dist/types/src/components/SunriseAnimation.d.ts +0 -5
- package/dist/types/src/components/SunriseAnimation.test/interface.d.ts +0 -11
- package/dist/types/src/components/SunriseAnimation.test/types.d.ts +0 -39
- package/dist/types/src/components/TestStatusBadge.d.ts +0 -15
- package/dist/types/src/components/pure/AppFrame.d.ts +0 -11
- package/dist/types/src/components/pure/AppFrame.test/implementation.d.ts +0 -3
- package/dist/types/src/components/pure/AppFrame.test/index.d.ts +0 -3
- package/dist/types/src/components/pure/AppFrame.test/specification.d.ts +0 -3
- package/dist/types/src/components/pure/AppFrame.test/types.d.ts +0 -33
- package/dist/types/src/components/pure/BuildLogViewer.d.ts +0 -7
- package/dist/types/src/components/pure/DebugEnv.d.ts +0 -2
- package/dist/types/src/components/pure/FeaturesReporterView.d.ts +0 -7
- package/dist/types/src/components/pure/FeaturesReporterView.test/implementation.d.ts +0 -3
- package/dist/types/src/components/pure/FeaturesReporterView.test/index.d.ts +0 -2
- package/dist/types/src/components/pure/FeaturesReporterView.test/specification.d.ts +0 -3
- package/dist/types/src/components/pure/FeaturesReporterView.test/types.d.ts +0 -54
- package/dist/types/src/components/pure/FileTree.d.ts +0 -6
- package/dist/types/src/components/pure/FileTreeItem.d.ts +0 -8
- package/dist/types/src/components/pure/GitHubLoginButton.d.ts +0 -8
- package/dist/types/src/components/pure/GitIntegrationView.d.ts +0 -1
- package/dist/types/src/components/pure/ModalContent.d.ts +0 -7
- package/dist/types/src/components/pure/ModalContent.test/implementation.d.ts +0 -3
- package/dist/types/src/components/pure/ModalContent.test/index.d.ts +0 -2
- package/dist/types/src/components/pure/ModalContent.test/specification.d.ts +0 -3
- package/dist/types/src/components/pure/ModalContent.test/types.d.ts +0 -45
- package/dist/types/src/components/pure/NavBar.d.ts +0 -23
- package/dist/types/src/components/pure/ProcessManager.d.ts +0 -8
- package/dist/types/src/components/pure/ProcessManagerView.d.ts +0 -20
- package/dist/types/src/components/pure/ProjectPageView.d.ts +0 -14
- package/dist/types/src/components/pure/ProjectPageView.test/implementation.d.ts +0 -3
- package/dist/types/src/components/pure/ProjectPageView.test/index.d.ts +0 -2
- package/dist/types/src/components/pure/ProjectPageView.test/specification.d.ts +0 -3
- package/dist/types/src/components/pure/ProjectPageView.test/types.d.ts +0 -57
- package/dist/types/src/components/pure/ProjectsPageView.d.ts +0 -29
- package/dist/types/src/components/pure/Settings.d.ts +0 -1
- package/dist/types/src/components/pure/Settings.test.d.ts +0 -1
- package/dist/types/src/components/pure/SettingsButton.d.ts +0 -2
- package/dist/types/src/components/pure/SignIn.d.ts +0 -1
- package/dist/types/src/components/pure/SingleProcessView.d.ts +0 -10
- package/dist/types/src/components/pure/TestPageView.d.ts +0 -16
- package/dist/types/src/components/pure/TestPageView.test/implementation.d.ts +0 -12
- package/dist/types/src/components/pure/TestPageView.test/index.d.ts +0 -3
- package/dist/types/src/components/pure/TestPageView.test/specification.d.ts +0 -11
- package/dist/types/src/components/pure/TestPageView.test/types.d.ts +0 -65
- package/dist/types/src/components/pure/TestPageView_utils.d.ts +0 -23
- package/dist/types/src/components/pure/TestTable.d.ts +0 -16
- package/dist/types/src/components/pure/ThemeCard.d.ts +0 -9
- package/dist/types/src/components/pure/ToastNotification.d.ts +0 -6
- package/dist/types/src/components/pure/UserProfile.d.ts +0 -2
- package/dist/types/src/components/stateful/AuthCallbackPage.d.ts +0 -2
- package/dist/types/src/components/stateful/FeaturesReporter.d.ts +0 -2
- package/dist/types/src/components/stateful/GitIntegrationPage.d.ts +0 -1
- package/dist/types/src/components/stateful/ProcessManagerPage.d.ts +0 -2
- package/dist/types/src/components/stateful/ProjectPage.d.ts +0 -1
- package/dist/types/src/components/stateful/ProjectsPage.d.ts +0 -1
- package/dist/types/src/components/stateful/SettingsPage.d.ts +0 -2
- package/dist/types/src/components/stateful/SingleProcessPage.d.ts +0 -2
- package/dist/types/src/components/stateful/TestPage.d.ts +0 -1
- package/dist/types/src/components/stateful/TextEditorPage.d.ts +0 -1
- package/dist/types/src/defaultConfig.d.ts +0 -3
- package/dist/types/src/esbuildConfigs/consoleDetectorPlugin.d.ts +0 -2
- package/dist/types/src/esbuildConfigs/eslint-formatter-testeranto.d.ts +0 -2
- package/dist/types/src/esbuildConfigs/featuresPlugin.d.ts +0 -5
- package/dist/types/src/esbuildConfigs/index.d.ts +0 -4
- package/dist/types/src/esbuildConfigs/inputFilesPlugin.d.ts +0 -7
- package/dist/types/src/esbuildConfigs/nativeImportDetectorPlugin.d.ts +0 -2
- package/dist/types/src/esbuildConfigs/node.d.ts +0 -4
- package/dist/types/src/esbuildConfigs/pure.d.ts +0 -4
- package/dist/types/src/esbuildConfigs/rebuildPlugin.d.ts +0 -6
- package/dist/types/src/esbuildConfigs/web.d.ts +0 -4
- package/dist/types/src/hooks/useGitMode.d.ts +0 -7
- package/dist/types/src/init-docs.d.ts +0 -1
- package/dist/types/src/lib/BaseGiven.d.ts +0 -44
- package/dist/types/src/lib/BaseSuite.d.ts +0 -46
- package/dist/types/src/lib/BaseSuite.test/mock.d.ts +0 -21
- package/dist/types/src/lib/BaseSuite.test/node.test.d.ts +0 -2
- package/dist/types/src/lib/BaseSuite.test/pure.test.d.ts +0 -2
- package/dist/types/src/lib/BaseSuite.test/test.d.ts +0 -37
- package/dist/types/src/lib/BaseSuite.test/web.test.d.ts +0 -2
- package/dist/types/src/lib/BaseThen.d.ts +0 -27
- package/dist/types/src/lib/BaseWhen.d.ts +0 -27
- package/dist/types/src/lib/Sidecar.d.ts +0 -5
- package/dist/types/src/lib/Tiposkripto.d.ts +0 -37
- package/dist/types/src/lib/Tiposkripto.test/MockTiposkripto.d.ts +0 -18
- package/dist/types/src/lib/Tiposkripto.test/Tiposkripto.adapter.d.ts +0 -3
- package/dist/types/src/lib/Tiposkripto.test/Tiposkripto.d.ts +0 -2
- package/dist/types/src/lib/Tiposkripto.test/Tiposkripto.implementation.d.ts +0 -3
- package/dist/types/src/lib/Tiposkripto.test/Tiposkripto.specification.d.ts +0 -3
- package/dist/types/src/lib/Tiposkripto.test/Tiposkripto.types.d.ts +0 -58
- package/dist/types/src/lib/abstractBase.test/MockGiven.d.ts +0 -9
- package/dist/types/src/lib/abstractBase.test/MockThen.d.ts +0 -6
- package/dist/types/src/lib/abstractBase.test/MockWhen.d.ts +0 -6
- package/dist/types/src/lib/abstractBase.test/adapter.d.ts +0 -3
- package/dist/types/src/lib/abstractBase.test/implementation.d.ts +0 -3
- package/dist/types/src/lib/abstractBase.test/index.d.ts +0 -2
- package/dist/types/src/lib/abstractBase.test/specification.d.ts +0 -3
- package/dist/types/src/lib/abstractBase.test/types.d.ts +0 -39
- package/dist/types/src/lib/index.d.ts +0 -73
- package/dist/types/src/lib/pmProxy.d.ts +0 -12
- package/dist/types/src/lib/pmProxy.test/adapter.d.ts +0 -3
- package/dist/types/src/lib/pmProxy.test/implementation.d.ts +0 -3
- package/dist/types/src/lib/pmProxy.test/index.d.ts +0 -6
- package/dist/types/src/lib/pmProxy.test/mockPM.d.ts +0 -10
- package/dist/types/src/lib/pmProxy.test/mockPMBase.d.ts +0 -40
- package/dist/types/src/lib/pmProxy.test/specification.d.ts +0 -3
- package/dist/types/src/lib/pmProxy.test/types.d.ts +0 -42
- package/dist/types/src/lib/types.d.ts +0 -24
- package/dist/types/src/mothership/index.d.ts +0 -2
- package/dist/types/src/mothership/test.d.ts +0 -2
- package/dist/types/src/services/FileService.d.ts +0 -34
- package/dist/types/src/services/GitHubAuthService.d.ts +0 -32
- package/dist/types/src/testeranto.d.ts +0 -1
- package/dist/types/src/types/features.d.ts +0 -7
- package/dist/types/src/utils/api.d.ts +0 -10
- package/dist/types/src/utils/buildTemplates.d.ts +0 -1
- package/dist/types/src/utils/featureUtils.d.ts +0 -6
- package/dist/types/src/utils/gitTest.d.ts +0 -11
- package/dist/types/src/utils/golingvuMetafile.d.ts +0 -19
- package/dist/types/src/utils/logFiles.d.ts +0 -75
- package/dist/types/src/utils/makePrompt.d.ts +0 -2
- package/dist/types/src/utils/pitonoMetafile.d.ts +0 -7
- package/dist/types/src/utils/queue.d.ts +0 -11
- package/dist/types/src/utils.d.ts +0 -20
- package/dist/types/src/web.html.d.ts +0 -2
- package/dist/types/tsconfig.types.tsbuildinfo +0 -1
- package/example/__pycache__/Calculator.cpython-313.pyc +0 -0
- package/example/vendor/github.com/adamwong246/testeranto/src/golingvu/README.md +0 -187
- package/example/vendor/github.com/adamwong246/testeranto/src/golingvu/base_given.go +0 -163
- package/example/vendor/github.com/adamwong246/testeranto/src/golingvu/base_suite.go +0 -85
- package/example/vendor/github.com/adamwong246/testeranto/src/golingvu/base_then.go +0 -21
- package/example/vendor/github.com/adamwong246/testeranto/src/golingvu/base_when.go +0 -21
- package/example/vendor/github.com/adamwong246/testeranto/src/golingvu/golingvu.go +0 -554
- package/example/vendor/github.com/adamwong246/testeranto/src/golingvu/test_adapter.go +0 -33
- package/example/vendor/github.com/adamwong246/testeranto/src/golingvu/types.go +0 -72
- package/example/vendor/modules.txt +0 -5
- package/pitono/__init__.py +0 -54
- package/pitono/types.py +0 -78
- package/src/PM/metafileOutputs.ts +0 -90
- package/src/golingvu/base_suite_test.go +0 -197
- package/src/pitono/PM/__pycache__/python.cpython-313.pyc +0 -0
- package/src/pitono/__pycache__/Pitono.cpython-313.pyc +0 -0
- package/src/pitono/__pycache__/__init__.cpython-313.pyc +0 -0
- package/src/pitono/__pycache__/base_given.cpython-313.pyc +0 -0
- package/src/pitono/__pycache__/base_suite.cpython-313.pyc +0 -0
- package/src/pitono/__pycache__/base_then.cpython-313.pyc +0 -0
- package/src/pitono/__pycache__/base_when.cpython-313.pyc +0 -0
- package/src/pitono/__pycache__/core_generator.cpython-313.pyc +0 -0
- package/src/pitono/__pycache__/simple_adapter.cpython-313.pyc +0 -0
- package/src/pitono/__pycache__/types.cpython-313.pyc +0 -0
- package/src/templates/frontpage.html +0 -340
- package/src/templates/frontpage.md +0 -79
- package/testeranto/bundles/golang/core/Calculator.golingvu.golingvu.go +0 -53
- package/testeranto/bundles/node/core/chunk-VXVF7WFO.mjs +0 -4321
- package/testeranto/bundles/node/core/example/Calculator.test.mjs +0 -503
- package/testeranto/bundles/python/core/Calculator.pitono.test.py +0 -24
- package/testeranto/bundles/python/core/test_example.py +0 -24
- package/testeranto/bundles/web/core/chunk-DFRN4SYZ.mjs +0 -2297
- package/testeranto/bundles/web/core/chunk-Q5TONB2Z.mjs +0 -6874
- package/testeranto/bundles/web/core/src/components/pure/ModalContent.test/index.css +0 -11697
- package/testeranto/bundles/web/core/src/components/pure/ModalContent.test/index.mjs +0 -336
- package/testeranto/reports/core/src/components/pure/FeaturesReporterView.test/index/web/tests.json +0 -68
- package/testeranto/reports/core/src/components/pure/ProjectPageView.test/index/web/tests.json +0 -88
- package/testeranto/reports/core/src/lib/BaseSuite.test/web.test/web/tests.json +0 -29
- /package/{pitono → src/pitono}/core_generator.py +0 -0
- /package/{pitono → src/pitono}/pitono.egg-info/dependency_links.txt +0 -0
- /package/{pitono → src/pitono}/pitono.egg-info/entry_points.txt +0 -0
- /package/{pitono → src/pitono}/pitono.egg-info/top_level.txt +0 -0
- /package/{pitono → src/pitono}/pyproject.toml +0 -0
- /package/{pitono → src/pitono}/setup.py +0 -0
- /package/{pitono → src/pitono}/simple_adapter.py +0 -0
- /package/{dist/types/src/PM/metafileOutputs.d.ts → testeranto/helpo_chat_message.txt} +0 -0
- /package/{dist/types/src/ReportServer.d.ts → testeranto/reports/core/example/test_example/python/stdout.log} +0 -0
- /package/{dist/types/src/ReportServerLib.d.ts → testeranto/reports/core/src/components/pure/FeaturesReporterView.test/index/web/lint_errors.txt} +0 -0
- /package/{dist/types/src/components/SunriseAnimation.test/implementation.d.ts → testeranto/reports/core/src/components/pure/ModalContent.test/index/web/debug.log} +0 -0
- /package/{dist/types/src/components/SunriseAnimation.test/index.d.ts → testeranto/reports/core/src/components/pure/ModalContent.test/index/web/error.log} +0 -0
- /package/{dist/types/src/components/SunriseAnimation.test/specification.d.ts → testeranto/reports/core/src/components/pure/ModalContent.test/index/web/exit.log} +0 -0
- /package/{dist/types/src/components/pure/ArtifactTree.d.ts → testeranto/reports/core/src/components/pure/ModalContent.test/index/web/info.log} +0 -0
- /package/{dist/types/src/components/stateful/FileTree.d.ts → testeranto/reports/core/src/components/pure/ModalContent.test/index/web/warn.log} +0 -0
- /package/{dist/types/src/run.d.ts → testeranto/reports/core/src/lib/BaseSuite.test/web.test/web/lint_errors.txt} +0 -0
package/src/PM/main.ts
CHANGED
|
@@ -10,18 +10,189 @@ import fs from "fs";
|
|
|
10
10
|
import { ConsoleMessage } from "puppeteer-core";
|
|
11
11
|
import ansiC from "ansi-colors";
|
|
12
12
|
|
|
13
|
-
import {
|
|
13
|
+
import {
|
|
14
|
+
IFinalResults,
|
|
15
|
+
ITTestResourceConfiguration,
|
|
16
|
+
IRunTime,
|
|
17
|
+
} from "../lib/index.js";
|
|
14
18
|
import { webEvaluator } from "../utils";
|
|
15
19
|
import { Queue } from "../utils/queue.js";
|
|
16
20
|
|
|
17
21
|
import { createLogStreams, statusMessagePretty } from "./utils.js";
|
|
18
|
-
import {
|
|
22
|
+
import { PM_WithHelpo } from "./PM_WithHelpo.js";
|
|
23
|
+
import path from "node:path";
|
|
19
24
|
|
|
20
25
|
const files: Record<string, Set<string>> = {};
|
|
21
26
|
const screenshots: Record<string, Promise<Uint8Array>[]> = {};
|
|
22
27
|
|
|
23
|
-
export class PM_Main extends
|
|
28
|
+
export class PM_Main extends PM_WithHelpo {
|
|
29
|
+
private async setupTestEnvironment(
|
|
30
|
+
src: string,
|
|
31
|
+
runtime: IRunTime
|
|
32
|
+
): Promise<{
|
|
33
|
+
reportDest: string;
|
|
34
|
+
testConfig: any;
|
|
35
|
+
testConfigResource: any;
|
|
36
|
+
portsToUse: string[];
|
|
37
|
+
testResources: string;
|
|
38
|
+
}> {
|
|
39
|
+
this.bddTestIsRunning(src);
|
|
40
|
+
|
|
41
|
+
const reportDest = `testeranto/reports/${this.name}/${src
|
|
42
|
+
.split(".")
|
|
43
|
+
.slice(0, -1)
|
|
44
|
+
.join(".")}/${runtime}`;
|
|
45
|
+
|
|
46
|
+
if (!fs.existsSync(reportDest)) {
|
|
47
|
+
fs.mkdirSync(reportDest, { recursive: true });
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
const testConfig = this.configs.tests.find((t) => t[0] === src);
|
|
51
|
+
if (!testConfig) {
|
|
52
|
+
console.log(
|
|
53
|
+
ansiC.inverse(`missing test config! Exiting ungracefully for '${src}'`)
|
|
54
|
+
);
|
|
55
|
+
process.exit(-1);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
const testConfigResource = testConfig[2];
|
|
59
|
+
const portsToUse: string[] = [];
|
|
60
|
+
let testResources = "";
|
|
61
|
+
|
|
62
|
+
if (testConfigResource.ports === 0) {
|
|
63
|
+
testResources = JSON.stringify({
|
|
64
|
+
name: src,
|
|
65
|
+
ports: [],
|
|
66
|
+
fs: reportDest,
|
|
67
|
+
browserWSEndpoint: this.browser.wsEndpoint(),
|
|
68
|
+
});
|
|
69
|
+
} else if (testConfigResource.ports > 0) {
|
|
70
|
+
const openPorts = Object.entries(this.ports).filter(
|
|
71
|
+
([, status]) => status === ""
|
|
72
|
+
);
|
|
73
|
+
|
|
74
|
+
if (openPorts.length >= testConfigResource.ports) {
|
|
75
|
+
for (let i = 0; i < testConfigResource.ports; i++) {
|
|
76
|
+
portsToUse.push(openPorts[i][0]);
|
|
77
|
+
this.ports[openPorts[i][0]] = src;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
testResources = JSON.stringify({
|
|
81
|
+
scheduled: true,
|
|
82
|
+
name: src,
|
|
83
|
+
ports: portsToUse,
|
|
84
|
+
fs: reportDest,
|
|
85
|
+
browserWSEndpoint: this.browser.wsEndpoint(),
|
|
86
|
+
});
|
|
87
|
+
} else {
|
|
88
|
+
console.log(
|
|
89
|
+
ansiC.red(
|
|
90
|
+
`${runtime}: cannot run ${src} because there are no open ports ATM. This job will be enqueued and run again when a port is available`
|
|
91
|
+
)
|
|
92
|
+
);
|
|
93
|
+
this.queue.push(src);
|
|
94
|
+
throw new Error("No ports available");
|
|
95
|
+
}
|
|
96
|
+
} else {
|
|
97
|
+
console.error("negative port makes no sense", src);
|
|
98
|
+
process.exit(-1);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
return {
|
|
102
|
+
reportDest,
|
|
103
|
+
testConfig,
|
|
104
|
+
testConfigResource,
|
|
105
|
+
portsToUse,
|
|
106
|
+
testResources,
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
private cleanupPorts(portsToUse: string[]) {
|
|
111
|
+
portsToUse.forEach((port) => {
|
|
112
|
+
this.ports[port] = "";
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
private createIpcServer(
|
|
117
|
+
onData: (data: Buffer) => void,
|
|
118
|
+
ipcfile: string
|
|
119
|
+
): Promise<net.Server> {
|
|
120
|
+
return new Promise((resolve, reject) => {
|
|
121
|
+
const server = net.createServer((socket) => {
|
|
122
|
+
socket.on("data", onData);
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
server.listen(ipcfile, (err) => {
|
|
126
|
+
if (err) reject(err);
|
|
127
|
+
else resolve(server);
|
|
128
|
+
});
|
|
129
|
+
|
|
130
|
+
server.on("error", reject);
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
private handleChildProcess(
|
|
135
|
+
child: ChildProcess,
|
|
136
|
+
logs: LogStreams,
|
|
137
|
+
reportDest: string,
|
|
138
|
+
src: string,
|
|
139
|
+
runtime: IRunTime
|
|
140
|
+
): Promise<void> {
|
|
141
|
+
return new Promise((resolve, reject) => {
|
|
142
|
+
child.stdout?.on("data", (data) => {
|
|
143
|
+
logs.stdout?.write(data);
|
|
144
|
+
});
|
|
145
|
+
|
|
146
|
+
child.stderr?.on("data", (data) => {
|
|
147
|
+
logs.stderr?.write(data);
|
|
148
|
+
});
|
|
149
|
+
|
|
150
|
+
child.on("close", (code) => {
|
|
151
|
+
const exitCode = code === null ? -1 : code;
|
|
152
|
+
if (exitCode < 0) {
|
|
153
|
+
logs.writeExitCode(
|
|
154
|
+
exitCode,
|
|
155
|
+
new Error("Process crashed or was terminated")
|
|
156
|
+
);
|
|
157
|
+
} else {
|
|
158
|
+
logs.writeExitCode(exitCode);
|
|
159
|
+
}
|
|
160
|
+
logs.closeAll();
|
|
161
|
+
|
|
162
|
+
if (exitCode === 0) {
|
|
163
|
+
this.bddTestIsNowDone(src, 0);
|
|
164
|
+
statusMessagePretty(0, src, runtime);
|
|
165
|
+
resolve();
|
|
166
|
+
} else {
|
|
167
|
+
console.log(
|
|
168
|
+
ansiColors.red(
|
|
169
|
+
`${runtime} ! ${src} failed to execute. Check ${reportDest}/stderr.log for more info`
|
|
170
|
+
)
|
|
171
|
+
);
|
|
172
|
+
this.bddTestIsNowDone(src, exitCode);
|
|
173
|
+
statusMessagePretty(exitCode, src, runtime);
|
|
174
|
+
reject(new Error(`Process exited with code ${exitCode}`));
|
|
175
|
+
}
|
|
176
|
+
});
|
|
177
|
+
|
|
178
|
+
child.on("error", (e) => {
|
|
179
|
+
console.log(
|
|
180
|
+
ansiC.red(
|
|
181
|
+
ansiC.inverse(
|
|
182
|
+
`${src} errored with: ${e.name}. Check error logs for more info`
|
|
183
|
+
)
|
|
184
|
+
)
|
|
185
|
+
);
|
|
186
|
+
this.bddTestIsNowDone(src, -1);
|
|
187
|
+
statusMessagePretty(-1, src, runtime);
|
|
188
|
+
reject(e);
|
|
189
|
+
});
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
|
|
24
193
|
launchPure = async (src: string, dest: string) => {
|
|
194
|
+
console.log(ansiC.green(ansiC.inverse(`pure < ${src}`)));
|
|
195
|
+
|
|
25
196
|
const processId = `pure-${src}-${Date.now()}`;
|
|
26
197
|
const command = `pure test: ${src}`;
|
|
27
198
|
|
|
@@ -102,6 +273,8 @@ export class PM_Main extends PM_WithProcesses {
|
|
|
102
273
|
return defaultModule
|
|
103
274
|
.receiveTestResourceConfig(argz)
|
|
104
275
|
.then(async (results: IFinalResults) => {
|
|
276
|
+
// Ensure the test results are properly processed
|
|
277
|
+
// The receiveTestResourceConfig should handle creating tests.json
|
|
105
278
|
statusMessagePretty(results.fails, src, "pure");
|
|
106
279
|
this.bddTestIsNowDone(src, results.fails);
|
|
107
280
|
return results.fails;
|
|
@@ -114,6 +287,24 @@ export class PM_Main extends PM_WithProcesses {
|
|
|
114
287
|
)
|
|
115
288
|
);
|
|
116
289
|
|
|
290
|
+
// Create a minimal tests.json even on failure
|
|
291
|
+
const testsJsonPath = `${reportDest}/tests.json`;
|
|
292
|
+
if (!fs.existsSync(testsJsonPath)) {
|
|
293
|
+
fs.writeFileSync(
|
|
294
|
+
testsJsonPath,
|
|
295
|
+
JSON.stringify(
|
|
296
|
+
{
|
|
297
|
+
tests: [],
|
|
298
|
+
features: [],
|
|
299
|
+
givens: [],
|
|
300
|
+
fullPath: src,
|
|
301
|
+
},
|
|
302
|
+
null,
|
|
303
|
+
2
|
|
304
|
+
)
|
|
305
|
+
);
|
|
306
|
+
}
|
|
307
|
+
|
|
117
308
|
logs.exit.write(e2.stack);
|
|
118
309
|
logs.exit.write(-1);
|
|
119
310
|
this.bddTestIsNowDone(src, -1);
|
|
@@ -122,6 +313,24 @@ export class PM_Main extends PM_WithProcesses {
|
|
|
122
313
|
});
|
|
123
314
|
});
|
|
124
315
|
} catch (e3) {
|
|
316
|
+
// Create a minimal tests.json even on uncaught errors
|
|
317
|
+
const testsJsonPath = `${reportDest}/tests.json`;
|
|
318
|
+
if (!fs.existsSync(testsJsonPath)) {
|
|
319
|
+
fs.writeFileSync(
|
|
320
|
+
testsJsonPath,
|
|
321
|
+
JSON.stringify(
|
|
322
|
+
{
|
|
323
|
+
tests: [],
|
|
324
|
+
features: [],
|
|
325
|
+
givens: [],
|
|
326
|
+
fullPath: src,
|
|
327
|
+
},
|
|
328
|
+
null,
|
|
329
|
+
2
|
|
330
|
+
)
|
|
331
|
+
);
|
|
332
|
+
}
|
|
333
|
+
|
|
125
334
|
logs.writeExitCode(-1, e3);
|
|
126
335
|
console.log(
|
|
127
336
|
ansiC.red(
|
|
@@ -137,6 +346,9 @@ export class PM_Main extends PM_WithProcesses {
|
|
|
137
346
|
statusMessagePretty(-1, src, "pure");
|
|
138
347
|
throw e3;
|
|
139
348
|
} finally {
|
|
349
|
+
// Generate prompt files for Pure tests
|
|
350
|
+
await this.generatePromptFiles(reportDest, src);
|
|
351
|
+
|
|
140
352
|
for (let i = 0; i <= portsToUse.length; i++) {
|
|
141
353
|
if (portsToUse[i]) {
|
|
142
354
|
this.ports[portsToUse[i]] = ""; // port is open again
|
|
@@ -157,211 +369,84 @@ export class PM_Main extends PM_WithProcesses {
|
|
|
157
369
|
};
|
|
158
370
|
|
|
159
371
|
launchNode = async (src: string, dest: string) => {
|
|
372
|
+
console.log(ansiC.green(ansiC.inverse(`node < ${src}`)));
|
|
373
|
+
|
|
160
374
|
const processId = `node-${src}-${Date.now()}`;
|
|
161
375
|
const command = `node test: ${src}`;
|
|
162
376
|
|
|
163
|
-
// Create the promise
|
|
164
377
|
const nodePromise = (async () => {
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
.split(".")
|
|
169
|
-
.slice(0, -1)
|
|
170
|
-
.join(".")}/node`;
|
|
171
|
-
|
|
172
|
-
if (!fs.existsSync(reportDest)) {
|
|
173
|
-
fs.mkdirSync(reportDest, { recursive: true });
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
let testResources = "";
|
|
177
|
-
|
|
178
|
-
const testConfig = this.configs.tests.find((t) => {
|
|
179
|
-
return t[0] === src;
|
|
180
|
-
});
|
|
181
|
-
|
|
182
|
-
if (!testConfig) {
|
|
183
|
-
console.log(
|
|
184
|
-
ansiC.inverse(
|
|
185
|
-
`missing test config! Exiting ungracefully for '${src}'`
|
|
186
|
-
)
|
|
187
|
-
);
|
|
188
|
-
process.exit(-1);
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
const testConfigResource = testConfig[2];
|
|
192
|
-
|
|
193
|
-
const portsToUse: string[] = [];
|
|
194
|
-
|
|
195
|
-
if (testConfigResource.ports === 0) {
|
|
196
|
-
const t: ITTestResourceConfiguration = {
|
|
197
|
-
name: src,
|
|
198
|
-
ports: [],
|
|
199
|
-
fs: reportDest,
|
|
200
|
-
browserWSEndpoint: this.browser.wsEndpoint(),
|
|
201
|
-
};
|
|
202
|
-
|
|
203
|
-
testResources = JSON.stringify(t);
|
|
204
|
-
} else if (testConfigResource.ports > 0) {
|
|
205
|
-
const openPorts: [string, string][] = Object.entries(this.ports).filter(
|
|
206
|
-
([portnumber, portopen]) => portopen === ""
|
|
207
|
-
);
|
|
208
|
-
|
|
209
|
-
if (openPorts.length >= testConfigResource.ports) {
|
|
210
|
-
for (let i = 0; i < testConfigResource.ports; i++) {
|
|
211
|
-
portsToUse.push(openPorts[i][0]);
|
|
212
|
-
|
|
213
|
-
this.ports[openPorts[i][0]] = src; // port is now claimed
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
testResources = JSON.stringify({
|
|
217
|
-
scheduled: true,
|
|
218
|
-
name: src,
|
|
219
|
-
ports: portsToUse,
|
|
220
|
-
fs: reportDest,
|
|
221
|
-
browserWSEndpoint: this.browser.wsEndpoint(),
|
|
222
|
-
});
|
|
223
|
-
} else {
|
|
224
|
-
console.log(
|
|
225
|
-
ansiC.red(
|
|
226
|
-
`node: cannot run ${src} because there are no open ports ATM. This job will be enqueued and run again run a port is available`
|
|
227
|
-
)
|
|
228
|
-
);
|
|
229
|
-
this.queue.push(src);
|
|
230
|
-
return [Math.random(), testResources];
|
|
231
|
-
}
|
|
232
|
-
} else {
|
|
233
|
-
console.error("negative port makes no sense", src);
|
|
234
|
-
process.exit(-1);
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
const builtfile = dest;
|
|
238
|
-
|
|
239
|
-
let haltReturns = false;
|
|
240
|
-
|
|
241
|
-
const ipcfile = "/tmp/tpipe_" + Math.random();
|
|
242
|
-
const child = spawn("node", [builtfile, testResources, ipcfile], {
|
|
243
|
-
stdio: ["pipe", "pipe", "pipe", "ipc"],
|
|
244
|
-
});
|
|
378
|
+
try {
|
|
379
|
+
const { reportDest, testResources, portsToUse } =
|
|
380
|
+
await this.setupTestEnvironment(src, "node");
|
|
245
381
|
|
|
246
|
-
|
|
382
|
+
const builtfile = dest;
|
|
383
|
+
const ipcfile = "/tmp/tpipe_" + Math.random();
|
|
384
|
+
const logs = createLogStreams(reportDest, "node");
|
|
247
385
|
|
|
248
|
-
|
|
386
|
+
let buffer = Buffer.from("");
|
|
249
387
|
const queue = new Queue<string[]>();
|
|
250
388
|
|
|
251
|
-
|
|
389
|
+
const onData = (data: Buffer) => {
|
|
252
390
|
buffer = Buffer.concat([buffer, data]);
|
|
253
391
|
|
|
392
|
+
// Process complete JSON messages
|
|
254
393
|
for (let b = 0; b < buffer.length + 1; b++) {
|
|
255
394
|
const c = buffer.slice(0, b);
|
|
256
|
-
let d;
|
|
257
395
|
try {
|
|
258
|
-
d = JSON.parse(c.toString());
|
|
259
|
-
|
|
396
|
+
const d = JSON.parse(c.toString());
|
|
260
397
|
queue.enqueue(d);
|
|
261
|
-
buffer = buffer.slice(b
|
|
398
|
+
buffer = buffer.slice(b);
|
|
262
399
|
b = 0;
|
|
263
400
|
} catch (e) {
|
|
264
|
-
//
|
|
401
|
+
// Continue processing
|
|
265
402
|
}
|
|
266
403
|
}
|
|
267
404
|
|
|
405
|
+
// Process messages
|
|
268
406
|
while (queue.size() > 0) {
|
|
269
407
|
const message = queue.dequeue();
|
|
270
|
-
|
|
271
408
|
if (message) {
|
|
272
|
-
// set up the "node" listeners
|
|
273
409
|
this.mapping().forEach(async ([command, func]) => {
|
|
274
410
|
if (message[0] === command) {
|
|
275
|
-
const
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
if (!haltReturns) {
|
|
411
|
+
const args = message.slice(1, -1);
|
|
412
|
+
try {
|
|
413
|
+
const result = await (this as any)[command](...args);
|
|
279
414
|
child.send(
|
|
280
415
|
JSON.stringify({
|
|
281
|
-
payload:
|
|
416
|
+
payload: result,
|
|
282
417
|
key: message[message.length - 1],
|
|
283
418
|
})
|
|
284
419
|
);
|
|
420
|
+
} catch (error) {
|
|
421
|
+
console.error(`Error handling command ${command}:`, error);
|
|
285
422
|
}
|
|
286
423
|
}
|
|
287
424
|
});
|
|
288
425
|
}
|
|
289
426
|
}
|
|
290
|
-
}
|
|
291
|
-
});
|
|
292
|
-
|
|
293
|
-
const logs = createLogStreams(reportDest, "node");
|
|
294
|
-
|
|
295
|
-
return new Promise<void>((resolve, reject) => {
|
|
296
|
-
server.listen(ipcfile, () => {
|
|
297
|
-
child.stdout?.on("data", (data) => {
|
|
298
|
-
logs.stdout?.write(data);
|
|
299
|
-
});
|
|
300
|
-
|
|
301
|
-
child.stderr?.on("data", (data) => {
|
|
302
|
-
logs.stderr?.write(data);
|
|
303
|
-
});
|
|
304
|
-
|
|
305
|
-
child.on("close", (code) => {
|
|
306
|
-
const exitCode = code === null ? -1 : code;
|
|
307
|
-
if (exitCode < 0) {
|
|
308
|
-
logs.writeExitCode(
|
|
309
|
-
exitCode,
|
|
310
|
-
new Error("Process crashed or was terminated")
|
|
311
|
-
);
|
|
312
|
-
} else {
|
|
313
|
-
logs.writeExitCode(exitCode);
|
|
314
|
-
}
|
|
315
|
-
logs.closeAll();
|
|
316
|
-
server.close();
|
|
427
|
+
};
|
|
317
428
|
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
)
|
|
323
|
-
);
|
|
324
|
-
this.bddTestIsNowDone(src, -1);
|
|
325
|
-
statusMessagePretty(-1, src, "node");
|
|
326
|
-
reject(new Error(`Process exited with code ${exitCode}`));
|
|
327
|
-
} else if (exitCode === 0) {
|
|
328
|
-
this.bddTestIsNowDone(src, 0);
|
|
329
|
-
statusMessagePretty(0, src, "node");
|
|
330
|
-
resolve();
|
|
331
|
-
} else {
|
|
332
|
-
this.bddTestIsNowDone(src, exitCode);
|
|
333
|
-
statusMessagePretty(exitCode, src, "node");
|
|
334
|
-
reject(new Error(`Process exited with code ${exitCode}`));
|
|
335
|
-
}
|
|
429
|
+
const server = await this.createIpcServer(onData, ipcfile);
|
|
430
|
+
const child = spawn("node", [builtfile, testResources, ipcfile], {
|
|
431
|
+
stdio: ["pipe", "pipe", "pipe", "ipc"],
|
|
432
|
+
});
|
|
336
433
|
|
|
337
|
-
|
|
338
|
-
|
|
434
|
+
try {
|
|
435
|
+
await this.handleChildProcess(child, logs, reportDest, src, "node");
|
|
339
436
|
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
ansiC.inverse(
|
|
346
|
-
`${src} errored with: ${e.name}. Check error logs for more info`
|
|
347
|
-
)
|
|
348
|
-
)
|
|
349
|
-
);
|
|
350
|
-
this.bddTestIsNowDone(src, -1);
|
|
351
|
-
statusMessagePretty(-1, src, "node");
|
|
352
|
-
reject(e);
|
|
353
|
-
});
|
|
354
|
-
});
|
|
355
|
-
}).finally(() => {
|
|
356
|
-
for (let i = 0; i <= portsToUse.length; i++) {
|
|
357
|
-
if (portsToUse[i]) {
|
|
358
|
-
this.ports[portsToUse[i]] = ""; //port is open again
|
|
359
|
-
}
|
|
437
|
+
// Generate prompt files for Node tests
|
|
438
|
+
await this.generatePromptFiles(reportDest, src);
|
|
439
|
+
} finally {
|
|
440
|
+
server.close();
|
|
441
|
+
this.cleanupPorts(portsToUse);
|
|
360
442
|
}
|
|
361
|
-
})
|
|
443
|
+
} catch (error) {
|
|
444
|
+
if (error.message !== "No ports available") {
|
|
445
|
+
throw error;
|
|
446
|
+
}
|
|
447
|
+
}
|
|
362
448
|
})();
|
|
363
449
|
|
|
364
|
-
// Add to process manager
|
|
365
450
|
this.addPromiseProcess(
|
|
366
451
|
processId,
|
|
367
452
|
nodePromise,
|
|
@@ -373,6 +458,8 @@ export class PM_Main extends PM_WithProcesses {
|
|
|
373
458
|
};
|
|
374
459
|
|
|
375
460
|
launchWeb = async (src: string, dest: string) => {
|
|
461
|
+
console.log(ansiC.green(ansiC.inverse(`web < ${src}`)));
|
|
462
|
+
|
|
376
463
|
const processId = `web-${src}-${Date.now()}`;
|
|
377
464
|
const command = `web test: ${src}`;
|
|
378
465
|
|
|
@@ -491,10 +578,31 @@ export class PM_Main extends PM_WithProcesses {
|
|
|
491
578
|
)
|
|
492
579
|
)
|
|
493
580
|
);
|
|
581
|
+
|
|
582
|
+
// Create a minimal tests.json even on failure
|
|
583
|
+
const testsJsonPath = `${reportDest}/tests.json`;
|
|
584
|
+
if (!fs.existsSync(testsJsonPath)) {
|
|
585
|
+
fs.writeFileSync(
|
|
586
|
+
testsJsonPath,
|
|
587
|
+
JSON.stringify(
|
|
588
|
+
{
|
|
589
|
+
tests: [],
|
|
590
|
+
features: [],
|
|
591
|
+
givens: [],
|
|
592
|
+
fullPath: src,
|
|
593
|
+
},
|
|
594
|
+
null,
|
|
595
|
+
2
|
|
596
|
+
)
|
|
597
|
+
);
|
|
598
|
+
}
|
|
599
|
+
|
|
494
600
|
this.bddTestIsNowDone(src, -1);
|
|
495
601
|
reject(e);
|
|
496
602
|
})
|
|
497
|
-
.finally(() => {
|
|
603
|
+
.finally(async () => {
|
|
604
|
+
// Generate prompt files for Web tests
|
|
605
|
+
await this.generatePromptFiles(reportDest, src);
|
|
498
606
|
close();
|
|
499
607
|
});
|
|
500
608
|
})
|
|
@@ -516,138 +624,87 @@ export class PM_Main extends PM_WithProcesses {
|
|
|
516
624
|
};
|
|
517
625
|
|
|
518
626
|
launchPython = async (src: string, dest: string) => {
|
|
627
|
+
console.log(ansiC.green(ansiC.inverse(`python < ${src}`)));
|
|
628
|
+
|
|
519
629
|
const processId = `python-${src}-${Date.now()}`;
|
|
520
630
|
const command = `python test: ${src}`;
|
|
521
631
|
|
|
522
632
|
const pythonPromise = (async () => {
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
.split(".")
|
|
527
|
-
.slice(0, -1)
|
|
528
|
-
.join(".")}/python`;
|
|
529
|
-
|
|
530
|
-
if (!fs.existsSync(reportDest)) {
|
|
531
|
-
fs.mkdirSync(reportDest, { recursive: true });
|
|
532
|
-
}
|
|
533
|
-
|
|
534
|
-
let testResources = "";
|
|
633
|
+
try {
|
|
634
|
+
const { reportDest, testResources, portsToUse } =
|
|
635
|
+
await this.setupTestEnvironment(src, "python");
|
|
535
636
|
|
|
536
|
-
|
|
537
|
-
if (!testConfig) {
|
|
538
|
-
console.log(
|
|
539
|
-
ansiColors.inverse(
|
|
540
|
-
`missing test config! Exiting ungracefully for '${src}'`
|
|
541
|
-
)
|
|
542
|
-
);
|
|
543
|
-
process.exit(-1);
|
|
544
|
-
}
|
|
637
|
+
const logs = createLogStreams(reportDest, "python");
|
|
545
638
|
|
|
546
|
-
|
|
547
|
-
|
|
639
|
+
// Determine Python command
|
|
640
|
+
const venvPython = `./venv/bin/python3`;
|
|
641
|
+
const pythonCommand = fs.existsSync(venvPython)
|
|
642
|
+
? venvPython
|
|
643
|
+
: "python3";
|
|
548
644
|
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
name: src,
|
|
553
|
-
ports: portsToUse,
|
|
554
|
-
fs: reportDest,
|
|
555
|
-
browserWSEndpoint: this.browser.wsEndpoint(),
|
|
645
|
+
const ipcfile = "/tmp/tpipe_python_" + Math.random();
|
|
646
|
+
const child = spawn(pythonCommand, [src, testResources, ipcfile], {
|
|
647
|
+
stdio: ["pipe", "pipe", "pipe", "ipc"],
|
|
556
648
|
});
|
|
557
|
-
} else if (testConfigResource.ports > 0) {
|
|
558
|
-
const openPorts = Object.entries(this.ports).filter(
|
|
559
|
-
([, status]) => status === ""
|
|
560
|
-
);
|
|
561
649
|
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
this.ports[openPorts[i][0]] = src;
|
|
566
|
-
}
|
|
567
|
-
|
|
568
|
-
testResources = JSON.stringify({
|
|
569
|
-
scheduled: true,
|
|
570
|
-
name: src,
|
|
571
|
-
ports: portsToUse,
|
|
572
|
-
fs: reportDest,
|
|
573
|
-
browserWSEndpoint: this.browser.wsEndpoint(),
|
|
574
|
-
});
|
|
575
|
-
} else {
|
|
576
|
-
console.log(
|
|
577
|
-
ansiColors.red(
|
|
578
|
-
`python: cannot run ${src} because there are no open ports ATM. This job will be enqueued and run again when a port is available`
|
|
579
|
-
)
|
|
580
|
-
);
|
|
581
|
-
this.queue.push(src);
|
|
582
|
-
return;
|
|
583
|
-
}
|
|
584
|
-
} else {
|
|
585
|
-
console.error("negative port makes no sense", src);
|
|
586
|
-
process.exit(-1);
|
|
587
|
-
}
|
|
650
|
+
// IPC server setup is similar to Node
|
|
651
|
+
let buffer = Buffer.from("");
|
|
652
|
+
const queue = new Queue<string[]>();
|
|
588
653
|
|
|
589
|
-
|
|
654
|
+
const onData = (data: Buffer) => {
|
|
655
|
+
buffer = Buffer.concat([buffer, data]);
|
|
590
656
|
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
657
|
+
for (let b = 0; b < buffer.length + 1; b++) {
|
|
658
|
+
const c = buffer.slice(0, b);
|
|
659
|
+
try {
|
|
660
|
+
const d = JSON.parse(c.toString());
|
|
661
|
+
queue.enqueue(d);
|
|
662
|
+
buffer = buffer.slice(b);
|
|
663
|
+
b = 0;
|
|
664
|
+
} catch (e) {
|
|
665
|
+
// Continue processing
|
|
666
|
+
}
|
|
667
|
+
}
|
|
596
668
|
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
669
|
+
while (queue.size() > 0) {
|
|
670
|
+
const message = queue.dequeue();
|
|
671
|
+
if (message) {
|
|
672
|
+
this.mapping().forEach(async ([command, func]) => {
|
|
673
|
+
if (message[0] === command) {
|
|
674
|
+
const args = message.slice(1, -1);
|
|
675
|
+
try {
|
|
676
|
+
const result = await (this as any)[command](...args);
|
|
677
|
+
child.send(
|
|
678
|
+
JSON.stringify({
|
|
679
|
+
payload: result,
|
|
680
|
+
key: message[message.length - 1],
|
|
681
|
+
})
|
|
682
|
+
);
|
|
683
|
+
} catch (error) {
|
|
684
|
+
console.error(`Error handling command ${command}:`, error);
|
|
685
|
+
}
|
|
686
|
+
}
|
|
687
|
+
});
|
|
688
|
+
}
|
|
689
|
+
}
|
|
690
|
+
};
|
|
601
691
|
|
|
602
|
-
|
|
603
|
-
logs.stderr?.write(data);
|
|
604
|
-
});
|
|
692
|
+
const server = await this.createIpcServer(onData, ipcfile);
|
|
605
693
|
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
if (exitCode < 0) {
|
|
609
|
-
logs.writeExitCode(
|
|
610
|
-
exitCode,
|
|
611
|
-
new Error("Process crashed or was terminated")
|
|
612
|
-
);
|
|
613
|
-
} else {
|
|
614
|
-
logs.writeExitCode(exitCode);
|
|
615
|
-
}
|
|
616
|
-
logs.closeAll();
|
|
617
|
-
|
|
618
|
-
if (exitCode === 0) {
|
|
619
|
-
this.bddTestIsNowDone(src, 0);
|
|
620
|
-
statusMessagePretty(0, src, "python");
|
|
621
|
-
resolve();
|
|
622
|
-
} else {
|
|
623
|
-
console.log(
|
|
624
|
-
ansiColors.red(
|
|
625
|
-
`python ! ${src} failed to execute. Check ${reportDest}/stderr.log for more info`
|
|
626
|
-
)
|
|
627
|
-
);
|
|
628
|
-
this.bddTestIsNowDone(src, exitCode);
|
|
629
|
-
statusMessagePretty(exitCode, src, "python");
|
|
630
|
-
reject(new Error(`Process exited with code ${exitCode}`));
|
|
631
|
-
}
|
|
632
|
-
});
|
|
694
|
+
try {
|
|
695
|
+
await this.handleChildProcess(child, logs, reportDest, src, "python");
|
|
633
696
|
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
});
|
|
646
|
-
}).finally(() => {
|
|
647
|
-
portsToUse.forEach(port => {
|
|
648
|
-
this.ports[port] = "";
|
|
649
|
-
});
|
|
650
|
-
});
|
|
697
|
+
// Generate prompt files for Python tests
|
|
698
|
+
await this.generatePromptFiles(reportDest, src);
|
|
699
|
+
} finally {
|
|
700
|
+
server.close();
|
|
701
|
+
this.cleanupPorts(portsToUse);
|
|
702
|
+
}
|
|
703
|
+
} catch (error) {
|
|
704
|
+
if (error.message !== "No ports available") {
|
|
705
|
+
throw error;
|
|
706
|
+
}
|
|
707
|
+
}
|
|
651
708
|
})();
|
|
652
709
|
|
|
653
710
|
this.addPromiseProcess(
|
|
@@ -661,180 +718,124 @@ export class PM_Main extends PM_WithProcesses {
|
|
|
661
718
|
};
|
|
662
719
|
|
|
663
720
|
launchGolang = async (src: string, dest: string) => {
|
|
721
|
+
console.log(ansiC.green(ansiC.inverse(`goland < ${src}`)));
|
|
722
|
+
|
|
664
723
|
const processId = `golang-${src}-${Date.now()}`;
|
|
665
724
|
const command = `golang test: ${src}`;
|
|
666
725
|
|
|
667
726
|
const golangPromise = (async () => {
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
.split(".")
|
|
672
|
-
.slice(0, -1)
|
|
673
|
-
.join(".")}/golang`;
|
|
727
|
+
try {
|
|
728
|
+
const { reportDest, testResources, portsToUse } =
|
|
729
|
+
await this.setupTestEnvironment(src, "golang");
|
|
674
730
|
|
|
675
|
-
|
|
676
|
-
fs.mkdirSync(reportDest, { recursive: true });
|
|
677
|
-
}
|
|
731
|
+
const logs = createLogStreams(reportDest, "golang");
|
|
678
732
|
|
|
679
|
-
|
|
733
|
+
// Create IPC file path
|
|
734
|
+
const ipcfile =
|
|
735
|
+
"/tmp/tpipe_golang_" + Math.random().toString(36).substring(2);
|
|
680
736
|
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
console.log(
|
|
684
|
-
ansiColors.inverse(
|
|
685
|
-
`golang: missing test config! Exiting ungracefully for '${src}'`
|
|
686
|
-
)
|
|
687
|
-
);
|
|
688
|
-
process.exit(-1);
|
|
689
|
-
}
|
|
690
|
-
|
|
691
|
-
const testConfigResource = testConfig[2];
|
|
692
|
-
const portsToUse: string[] = [];
|
|
737
|
+
let buffer = Buffer.from("");
|
|
738
|
+
const queue = new Queue<string[]>();
|
|
693
739
|
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
scheduled: true,
|
|
697
|
-
name: src,
|
|
698
|
-
ports: portsToUse,
|
|
699
|
-
fs: reportDest,
|
|
700
|
-
browserWSEndpoint: this.browser.wsEndpoint(),
|
|
701
|
-
});
|
|
702
|
-
} else if (testConfigResource.ports > 0) {
|
|
703
|
-
const openPorts = Object.entries(this.ports).filter(
|
|
704
|
-
([, status]) => status === ""
|
|
705
|
-
);
|
|
740
|
+
const onData = (data: Buffer) => {
|
|
741
|
+
buffer = Buffer.concat([buffer, data]);
|
|
706
742
|
|
|
707
|
-
|
|
708
|
-
for (let
|
|
709
|
-
|
|
710
|
-
|
|
743
|
+
// Process complete JSON messages
|
|
744
|
+
for (let b = 0; b < buffer.length + 1; b++) {
|
|
745
|
+
const c = buffer.slice(0, b);
|
|
746
|
+
try {
|
|
747
|
+
const d = JSON.parse(c.toString());
|
|
748
|
+
queue.enqueue(d);
|
|
749
|
+
buffer = buffer.slice(b);
|
|
750
|
+
b = 0;
|
|
751
|
+
} catch (e) {
|
|
752
|
+
// Continue processing
|
|
753
|
+
}
|
|
711
754
|
}
|
|
712
755
|
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
}
|
|
733
|
-
|
|
734
|
-
// Compile the Go test first
|
|
735
|
-
const buildDir = path.dirname(dest);
|
|
736
|
-
const binaryName = path.basename(dest, '.go');
|
|
737
|
-
const binaryPath = path.join(buildDir, binaryName);
|
|
738
|
-
|
|
739
|
-
const logs = createLogStreams(reportDest, "golang");
|
|
756
|
+
// Process messages
|
|
757
|
+
while (queue.size() > 0) {
|
|
758
|
+
const message = queue.dequeue();
|
|
759
|
+
if (message) {
|
|
760
|
+
this.mapping().forEach(async ([command, func]) => {
|
|
761
|
+
if (message[0] === command) {
|
|
762
|
+
const args = message.slice(1, -1);
|
|
763
|
+
try {
|
|
764
|
+
const result = await (this as any)[command](...args);
|
|
765
|
+
// Send response back through IPC
|
|
766
|
+
// This would need to be implemented based on your IPC protocol
|
|
767
|
+
} catch (error) {
|
|
768
|
+
console.error(`Error handling command ${command}:`, error);
|
|
769
|
+
}
|
|
770
|
+
}
|
|
771
|
+
});
|
|
772
|
+
}
|
|
773
|
+
}
|
|
774
|
+
};
|
|
740
775
|
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
return new Promise<void>((resolve, reject) => {
|
|
745
|
-
compileProcess.stdout?.on("data", (data) => {
|
|
746
|
-
logs.stdout?.write(data);
|
|
747
|
-
});
|
|
776
|
+
// Create IPC server like in launchNode
|
|
777
|
+
const server = await this.createIpcServer(onData, ipcfile);
|
|
748
778
|
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
779
|
+
// For Go tests, we need to run from the directory containing the go.mod file
|
|
780
|
+
// Find the nearest go.mod file by walking up the directory tree
|
|
781
|
+
let currentDir = path.dirname(src);
|
|
782
|
+
let goModDir = null;
|
|
752
783
|
|
|
753
|
-
|
|
754
|
-
if (
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
`golang ! ${src} failed to compile. Check ${reportDest}/stderr.log for more info`
|
|
758
|
-
)
|
|
759
|
-
);
|
|
760
|
-
this.bddTestIsNowDone(src, compileCode || -1);
|
|
761
|
-
statusMessagePretty(compileCode || -1, src, "golang");
|
|
762
|
-
reject(new Error(`Compilation failed with code ${compileCode}`));
|
|
763
|
-
return;
|
|
784
|
+
while (currentDir !== path.parse(currentDir).root) {
|
|
785
|
+
if (fs.existsSync(path.join(currentDir, "go.mod"))) {
|
|
786
|
+
goModDir = currentDir;
|
|
787
|
+
break;
|
|
764
788
|
}
|
|
789
|
+
currentDir = path.dirname(currentDir);
|
|
790
|
+
}
|
|
765
791
|
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
792
|
+
if (!goModDir) {
|
|
793
|
+
console.error(`Could not find go.mod file for test ${src}`);
|
|
794
|
+
// Try running from the test file's directory as a fallback
|
|
795
|
+
goModDir = path.dirname(src);
|
|
796
|
+
console.error(`Falling back to: ${goModDir}`);
|
|
797
|
+
}
|
|
770
798
|
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
});
|
|
799
|
+
// Get the relative path to the test file from the go.mod directory
|
|
800
|
+
const relativeTestPath = path.relative(goModDir, src);
|
|
774
801
|
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
802
|
+
// Run go test from the directory containing go.mod
|
|
803
|
+
const child = spawn(
|
|
804
|
+
"go",
|
|
805
|
+
["test", "-v", "-json", "./" + path.dirname(relativeTestPath)],
|
|
806
|
+
{
|
|
807
|
+
stdio: ["pipe", "pipe", "pipe"],
|
|
808
|
+
env: {
|
|
809
|
+
...process.env,
|
|
810
|
+
TEST_RESOURCES: testResources,
|
|
811
|
+
IPC_FILE: ipcfile,
|
|
812
|
+
GO111MODULE: "on",
|
|
813
|
+
},
|
|
814
|
+
cwd: goModDir,
|
|
815
|
+
}
|
|
816
|
+
);
|
|
778
817
|
|
|
779
|
-
|
|
780
|
-
const exitCode = code === null ? -1 : code;
|
|
781
|
-
if (exitCode < 0) {
|
|
782
|
-
logs.writeExitCode(
|
|
783
|
-
exitCode,
|
|
784
|
-
new Error("Process crashed or was terminated")
|
|
785
|
-
);
|
|
786
|
-
} else {
|
|
787
|
-
logs.writeExitCode(exitCode);
|
|
788
|
-
}
|
|
789
|
-
logs.closeAll();
|
|
818
|
+
await this.handleChildProcess(child, logs, reportDest, src, "golang");
|
|
790
819
|
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
statusMessagePretty(0, src, "golang");
|
|
794
|
-
resolve();
|
|
795
|
-
} else {
|
|
796
|
-
console.log(
|
|
797
|
-
ansiColors.red(
|
|
798
|
-
`golang ! ${src} failed to execute. Check ${reportDest}/stderr.log for more info`
|
|
799
|
-
)
|
|
800
|
-
);
|
|
801
|
-
this.bddTestIsNowDone(src, exitCode);
|
|
802
|
-
statusMessagePretty(exitCode, src, "golang");
|
|
803
|
-
reject(new Error(`Process exited with code ${exitCode}`));
|
|
804
|
-
}
|
|
805
|
-
});
|
|
820
|
+
// Generate prompt files for Golang tests
|
|
821
|
+
await this.generatePromptFiles(reportDest, src);
|
|
806
822
|
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
ansiColors.red(
|
|
810
|
-
ansiColors.inverse(
|
|
811
|
-
`golang: ${src} errored with: ${e.name}. Check error logs for more info`
|
|
812
|
-
)
|
|
813
|
-
)
|
|
814
|
-
);
|
|
815
|
-
this.bddTestIsNowDone(src, -1);
|
|
816
|
-
statusMessagePretty(-1, src, "golang");
|
|
817
|
-
reject(e);
|
|
818
|
-
});
|
|
819
|
-
});
|
|
823
|
+
// Ensure tests.json exists by parsing the go test JSON output
|
|
824
|
+
await this.processGoTestOutput(reportDest, src);
|
|
820
825
|
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
}
|
|
833
|
-
}
|
|
834
|
-
portsToUse.forEach(port => {
|
|
835
|
-
this.ports[port] = "";
|
|
836
|
-
});
|
|
837
|
-
});
|
|
826
|
+
// Clean up
|
|
827
|
+
server.close();
|
|
828
|
+
try {
|
|
829
|
+
fs.unlinkSync(ipcfile);
|
|
830
|
+
} catch (e) {
|
|
831
|
+
// Ignore errors during cleanup
|
|
832
|
+
}
|
|
833
|
+
this.cleanupPorts(portsToUse);
|
|
834
|
+
} catch (error) {
|
|
835
|
+
if (error.message !== "No ports available") {
|
|
836
|
+
throw error;
|
|
837
|
+
}
|
|
838
|
+
}
|
|
838
839
|
})();
|
|
839
840
|
|
|
840
841
|
this.addPromiseProcess(
|
|
@@ -846,4 +847,135 @@ export class PM_Main extends PM_WithProcesses {
|
|
|
846
847
|
"golang"
|
|
847
848
|
);
|
|
848
849
|
};
|
|
850
|
+
|
|
851
|
+
private async processGoTestOutput(
|
|
852
|
+
reportDest: string,
|
|
853
|
+
src: string
|
|
854
|
+
): Promise<void> {
|
|
855
|
+
const testsJsonPath = `${reportDest}/tests.json`;
|
|
856
|
+
|
|
857
|
+
// Parse the stdout.log to extract test results from JSON output
|
|
858
|
+
const stdoutPath = `${reportDest}/stdout.log`;
|
|
859
|
+
if (fs.existsSync(stdoutPath)) {
|
|
860
|
+
try {
|
|
861
|
+
const stdoutContent = fs.readFileSync(stdoutPath, "utf-8");
|
|
862
|
+
const lines = stdoutContent.split("\n").filter((line) => line.trim());
|
|
863
|
+
|
|
864
|
+
const testResults = {
|
|
865
|
+
tests: [],
|
|
866
|
+
features: [],
|
|
867
|
+
givens: [],
|
|
868
|
+
fullPath: path.resolve(process.cwd(), src),
|
|
869
|
+
};
|
|
870
|
+
|
|
871
|
+
// Parse each JSON line from go test output
|
|
872
|
+
for (const line of lines) {
|
|
873
|
+
try {
|
|
874
|
+
const event = JSON.parse(line);
|
|
875
|
+
if (event.Action === "pass" || event.Action === "fail") {
|
|
876
|
+
testResults.tests.push({
|
|
877
|
+
name: event.Test || event.Package,
|
|
878
|
+
status: event.Action === "pass" ? "passed" : "failed",
|
|
879
|
+
time: event.Elapsed ? `${event.Elapsed}s` : "0s",
|
|
880
|
+
});
|
|
881
|
+
}
|
|
882
|
+
} catch (e) {
|
|
883
|
+
// Skip non-JSON lines
|
|
884
|
+
}
|
|
885
|
+
}
|
|
886
|
+
|
|
887
|
+
fs.writeFileSync(testsJsonPath, JSON.stringify(testResults, null, 2));
|
|
888
|
+
return;
|
|
889
|
+
} catch (error) {
|
|
890
|
+
console.error("Error processing go test output:", error);
|
|
891
|
+
}
|
|
892
|
+
}
|
|
893
|
+
|
|
894
|
+
// Fallback: create a basic tests.json if processing fails
|
|
895
|
+
const basicTestResult = {
|
|
896
|
+
tests: [],
|
|
897
|
+
features: [],
|
|
898
|
+
givens: [],
|
|
899
|
+
fullPath: path.resolve(process.cwd(), src),
|
|
900
|
+
};
|
|
901
|
+
fs.writeFileSync(testsJsonPath, JSON.stringify(basicTestResult, null, 2));
|
|
902
|
+
}
|
|
903
|
+
|
|
904
|
+
private async generatePromptFiles(
|
|
905
|
+
reportDest: string,
|
|
906
|
+
src: string
|
|
907
|
+
): Promise<void> {
|
|
908
|
+
try {
|
|
909
|
+
// Ensure the report directory exists
|
|
910
|
+
if (!fs.existsSync(reportDest)) {
|
|
911
|
+
fs.mkdirSync(reportDest, { recursive: true });
|
|
912
|
+
}
|
|
913
|
+
|
|
914
|
+
// Create message.txt
|
|
915
|
+
const messagePath = `${reportDest}/message.txt`;
|
|
916
|
+
const messageContent = `There are 3 types of test reports.
|
|
917
|
+
1) bdd (highest priority)
|
|
918
|
+
2) type checker
|
|
919
|
+
3) static analysis (lowest priority)
|
|
920
|
+
|
|
921
|
+
"tests.json" is the detailed result of the bdd tests.
|
|
922
|
+
if these files do not exist, then something has gone badly wrong and needs to be addressed.
|
|
923
|
+
|
|
924
|
+
"type_errors.txt" is the result of the type checker.
|
|
925
|
+
if this file does not exist, then type check passed without errors;
|
|
926
|
+
|
|
927
|
+
"lint_errors.txt" is the result of the static analysis.
|
|
928
|
+
if this file does not exist, then static analysis passed without errors;
|
|
929
|
+
|
|
930
|
+
BDD failures are the highest priority. Focus on passing BDD tests before addressing other concerns.
|
|
931
|
+
Do not add error throwing/catching to the tests themselves.`;
|
|
932
|
+
|
|
933
|
+
fs.writeFileSync(messagePath, messageContent);
|
|
934
|
+
|
|
935
|
+
// Create prompt.txt
|
|
936
|
+
const promptPath = `${reportDest}/prompt.txt`;
|
|
937
|
+
|
|
938
|
+
const promptContent = `/read node_modules/testeranto/docs/index.md
|
|
939
|
+
/read node_modules/testeranto/docs/style.md
|
|
940
|
+
/read node_modules/testeranto/docs/testing.ai.txt
|
|
941
|
+
/read node_modules/testeranto/src/CoreTypes.ts
|
|
942
|
+
|
|
943
|
+
/read ${reportDest}/tests.json
|
|
944
|
+
/read ${reportDest}/type_errors.txt
|
|
945
|
+
/read ${reportDest}/lint_errors.txt
|
|
946
|
+
|
|
947
|
+
/read ${reportDest}/stdout.log
|
|
948
|
+
/read ${reportDest}/stderr.log
|
|
949
|
+
/read ${reportDest}/exit.log
|
|
950
|
+
/read ${reportDest}/message.txt`;
|
|
951
|
+
|
|
952
|
+
fs.writeFileSync(promptPath, promptContent);
|
|
953
|
+
} catch (error) {
|
|
954
|
+
console.error(`Failed to generate prompt files for ${src}:`, error);
|
|
955
|
+
}
|
|
956
|
+
}
|
|
957
|
+
|
|
958
|
+
private getGolangSourceFiles(src: string): string[] {
|
|
959
|
+
// Get all .go files in the same directory as the test
|
|
960
|
+
const testDir = path.dirname(src);
|
|
961
|
+
const files: string[] = [];
|
|
962
|
+
|
|
963
|
+
try {
|
|
964
|
+
const dirContents = fs.readdirSync(testDir);
|
|
965
|
+
dirContents.forEach((file) => {
|
|
966
|
+
if (file.endsWith(".go")) {
|
|
967
|
+
files.push(path.join(testDir, file));
|
|
968
|
+
}
|
|
969
|
+
});
|
|
970
|
+
} catch (error) {
|
|
971
|
+
console.error(`Error reading directory ${testDir}:`, error);
|
|
972
|
+
}
|
|
973
|
+
|
|
974
|
+
// Always include the main test file
|
|
975
|
+
if (!files.includes(src)) {
|
|
976
|
+
files.push(src);
|
|
977
|
+
}
|
|
978
|
+
|
|
979
|
+
return files;
|
|
980
|
+
}
|
|
849
981
|
}
|