sxy-test-runner 2.3.15 → 2.3.17
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/AGENTS.md +2 -1
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/lib/addBasePath.js.map +1 -1
- package/dist/cli/lib/addExports.js.map +1 -1
- package/dist/cli/lib/applyConfigDefaults.js.map +1 -1
- package/dist/cli/lib/buildDependencyTree.js.map +1 -1
- package/dist/cli/lib/buildDependencyTrees.js.map +1 -1
- package/dist/cli/lib/consoleCapture.d.ts +3 -0
- package/dist/cli/lib/consoleCapture.js +36 -0
- package/dist/cli/lib/consoleCapture.js.map +1 -0
- package/dist/cli/lib/defaultConfig.js.map +1 -1
- package/dist/cli/lib/doUserSetup.js.map +1 -1
- package/dist/cli/lib/doUserTeardown.js.map +1 -1
- package/dist/cli/lib/filter.js.map +1 -1
- package/dist/cli/lib/findTestFiles.js.map +1 -1
- package/dist/cli/lib/findingTestsMessage.js.map +1 -1
- package/dist/cli/lib/foundTestsMessage.d.ts +2 -0
- package/dist/cli/lib/foundTestsMessage.js +4 -0
- package/dist/cli/lib/foundTestsMessage.js.map +1 -0
- package/dist/cli/lib/functions.js.map +1 -1
- package/dist/cli/lib/getAllowedFlags.js.map +1 -1
- package/dist/cli/lib/globArgCombine.js.map +1 -1
- package/dist/cli/lib/handleUserInput.js.map +1 -1
- package/dist/cli/lib/injectProperties.js.map +1 -1
- package/dist/cli/lib/isTest.js.map +1 -1
- package/dist/cli/lib/listenToUser.js +6 -1
- package/dist/cli/lib/listenToUser.js.map +1 -1
- package/dist/cli/lib/loadConfig.js.map +1 -1
- package/dist/cli/lib/loadTestFile.js +16 -26
- package/dist/cli/lib/loadTestFile.js.map +1 -1
- package/dist/cli/lib/makeWatchRunState.js.map +1 -1
- package/dist/cli/lib/parseCommandLineArguments.js.map +1 -1
- package/dist/cli/lib/parseDescribe.js.map +1 -1
- package/dist/cli/lib/reRunManager.js.map +1 -1
- package/dist/cli/lib/reservedExportKeys.js.map +1 -1
- package/dist/cli/lib/runDescribe.js +12 -22
- package/dist/cli/lib/runDescribe.js.map +1 -1
- package/dist/cli/lib/runDescribeRun.js.map +1 -1
- package/dist/cli/lib/runIt.js +39 -49
- package/dist/cli/lib/runIt.js.map +1 -1
- package/dist/cli/lib/runTasks.js.map +1 -1
- package/dist/cli/lib/runTest.js.map +1 -1
- package/dist/cli/lib/runTests.js.map +1 -1
- package/dist/cli/lib/setEnv.js.map +1 -1
- package/dist/cli/lib/showTestLoadingError.js.map +1 -1
- package/dist/cli/lib/showTestResult.js +6 -6
- package/dist/cli/lib/showTestResult.js.map +1 -1
- package/dist/cli/lib/showTtyHelp.js.map +1 -1
- package/dist/cli/lib/shutdown.d.ts +9 -0
- package/dist/cli/lib/shutdown.js +59 -0
- package/dist/cli/lib/shutdown.js.map +1 -0
- package/dist/cli/lib/timeProfier.js.map +1 -1
- package/dist/cli/lib/validateConfig.js.map +1 -1
- package/dist/cli/lib/watchFilesAndRunTests.js.map +1 -1
- package/dist/cli/lib/watchFilesAndRunTestsChokidar.js.map +1 -1
- package/dist/cli/lib/watchFilesAndRunTestsNodeWatch.js.map +1 -1
- package/dist/cli/lib/watchFilesChokidar.js.map +1 -1
- package/dist/cli/lib/watchFilesNodeWatch.js.map +1 -1
- package/dist/cli/once.js +16 -13
- package/dist/cli/once.js.map +1 -1
- package/dist/cli/watch.js +12 -4
- package/dist/cli/watch.js.map +1 -1
- package/dist/config.js.map +1 -1
- package/dist/describe.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/indexNumberToLetters.js.map +1 -1
- package/dist/output.js.map +1 -1
- package/dist/packages/chalk.js.map +1 -1
- package/dist/packages/esmReload.js.map +1 -1
- package/dist/packages/figures.js.map +1 -1
- package/dist/packages/loadConfig.js.map +1 -1
- package/dist/packages/mergeStructuredConfig.js.map +1 -1
- package/dist/packages/slash.js.map +1 -1
- package/dist/packages/timeProfiler.js.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +6 -1
- package/dist/cli/help.d.ts.map +0 -1
- package/dist/cli/help.unitTest.d.ts +0 -2
- package/dist/cli/help.unitTest.d.ts.map +0 -1
- package/dist/cli/help.unitTest.js +0 -29
- package/dist/cli/help.unitTest.js.map +0 -1
- package/dist/cli/index.d.ts.map +0 -1
- package/dist/cli/init.d.ts.map +0 -1
- package/dist/cli/lib/addBasePath.d.ts.map +0 -1
- package/dist/cli/lib/addBasePath.unitTest.d.ts +0 -2
- package/dist/cli/lib/addBasePath.unitTest.d.ts.map +0 -1
- package/dist/cli/lib/addBasePath.unitTest.js +0 -55
- package/dist/cli/lib/addBasePath.unitTest.js.map +0 -1
- package/dist/cli/lib/addExports.d.ts.map +0 -1
- package/dist/cli/lib/addExports.unitTest.d.ts +0 -2
- package/dist/cli/lib/addExports.unitTest.d.ts.map +0 -1
- package/dist/cli/lib/addExports.unitTest.js +0 -17
- package/dist/cli/lib/addExports.unitTest.js.map +0 -1
- package/dist/cli/lib/applyConfigDefaults.d.ts.map +0 -1
- package/dist/cli/lib/applyConfigDefaults.unitTest.d.ts +0 -2
- package/dist/cli/lib/applyConfigDefaults.unitTest.d.ts.map +0 -1
- package/dist/cli/lib/applyConfigDefaults.unitTest.js +0 -32
- package/dist/cli/lib/applyConfigDefaults.unitTest.js.map +0 -1
- package/dist/cli/lib/buildDependencyTree.d.ts.map +0 -1
- package/dist/cli/lib/buildDependencyTree.unitTest.d.ts +0 -2
- package/dist/cli/lib/buildDependencyTree.unitTest.d.ts.map +0 -1
- package/dist/cli/lib/buildDependencyTree.unitTest.js +0 -19
- package/dist/cli/lib/buildDependencyTree.unitTest.js.map +0 -1
- package/dist/cli/lib/buildDependencyTrees.d.ts.map +0 -1
- package/dist/cli/lib/buildDependencyTrees.unitTest.d.ts +0 -2
- package/dist/cli/lib/buildDependencyTrees.unitTest.d.ts.map +0 -1
- package/dist/cli/lib/buildDependencyTrees.unitTest.js +0 -23
- package/dist/cli/lib/buildDependencyTrees.unitTest.js.map +0 -1
- package/dist/cli/lib/defaultConfig.d.ts.map +0 -1
- package/dist/cli/lib/defaultConfig.unitTest.d.ts +0 -2
- package/dist/cli/lib/defaultConfig.unitTest.d.ts.map +0 -1
- package/dist/cli/lib/defaultConfig.unitTest.js +0 -7
- package/dist/cli/lib/defaultConfig.unitTest.js.map +0 -1
- package/dist/cli/lib/doUserSetup.d.ts.map +0 -1
- package/dist/cli/lib/doUserSetup.unitTest.d.ts +0 -7
- package/dist/cli/lib/doUserSetup.unitTest.d.ts.map +0 -1
- package/dist/cli/lib/doUserSetup.unitTest.js +0 -46
- package/dist/cli/lib/doUserSetup.unitTest.js.map +0 -1
- package/dist/cli/lib/doUserTeardown.d.ts.map +0 -1
- package/dist/cli/lib/doUserTeardown.unitTest.d.ts +0 -7
- package/dist/cli/lib/doUserTeardown.unitTest.d.ts.map +0 -1
- package/dist/cli/lib/doUserTeardown.unitTest.js +0 -46
- package/dist/cli/lib/doUserTeardown.unitTest.js.map +0 -1
- package/dist/cli/lib/filter.d.ts.map +0 -1
- package/dist/cli/lib/findTestFiles.d.ts.map +0 -1
- package/dist/cli/lib/findTestFiles.unitTest.d.ts +0 -2
- package/dist/cli/lib/findTestFiles.unitTest.d.ts.map +0 -1
- package/dist/cli/lib/findTestFiles.unitTest.js +0 -32
- package/dist/cli/lib/findTestFiles.unitTest.js.map +0 -1
- package/dist/cli/lib/findingTestsMessage.d.ts.map +0 -1
- package/dist/cli/lib/findingTestsMessage.unitTest.d.ts +0 -2
- package/dist/cli/lib/findingTestsMessage.unitTest.d.ts.map +0 -1
- package/dist/cli/lib/findingTestsMessage.unitTest.js +0 -33
- package/dist/cli/lib/findingTestsMessage.unitTest.js.map +0 -1
- package/dist/cli/lib/functions.d.ts.map +0 -1
- package/dist/cli/lib/functions.unitTest.d.ts +0 -2
- package/dist/cli/lib/functions.unitTest.d.ts.map +0 -1
- package/dist/cli/lib/functions.unitTest.js +0 -35
- package/dist/cli/lib/functions.unitTest.js.map +0 -1
- package/dist/cli/lib/getAllowedFlags.d.ts.map +0 -1
- package/dist/cli/lib/getAllowedFlags.unitTest.d.ts +0 -2
- package/dist/cli/lib/getAllowedFlags.unitTest.d.ts.map +0 -1
- package/dist/cli/lib/getAllowedFlags.unitTest.js +0 -23
- package/dist/cli/lib/getAllowedFlags.unitTest.js.map +0 -1
- package/dist/cli/lib/globArgCombine.d.ts.map +0 -1
- package/dist/cli/lib/globArgCombine.unitTest.d.ts +0 -2
- package/dist/cli/lib/globArgCombine.unitTest.d.ts.map +0 -1
- package/dist/cli/lib/globArgCombine.unitTest.js +0 -19
- package/dist/cli/lib/globArgCombine.unitTest.js.map +0 -1
- package/dist/cli/lib/handleUserInput.d.ts.map +0 -1
- package/dist/cli/lib/handleUserInput.unitTest.d.ts +0 -2
- package/dist/cli/lib/handleUserInput.unitTest.d.ts.map +0 -1
- package/dist/cli/lib/handleUserInput.unitTest.js +0 -99
- package/dist/cli/lib/handleUserInput.unitTest.js.map +0 -1
- package/dist/cli/lib/injectProperties.d.ts.map +0 -1
- package/dist/cli/lib/injectProperties.unitTest.d.ts +0 -2
- package/dist/cli/lib/injectProperties.unitTest.d.ts.map +0 -1
- package/dist/cli/lib/injectProperties.unitTest.js +0 -19
- package/dist/cli/lib/injectProperties.unitTest.js.map +0 -1
- package/dist/cli/lib/isTest.d.ts.map +0 -1
- package/dist/cli/lib/listenToUser.d.ts.map +0 -1
- package/dist/cli/lib/listenToUser.unitTest.d.ts +0 -2
- package/dist/cli/lib/listenToUser.unitTest.d.ts.map +0 -1
- package/dist/cli/lib/listenToUser.unitTest.js +0 -52
- package/dist/cli/lib/listenToUser.unitTest.js.map +0 -1
- package/dist/cli/lib/loadConfig.d.ts.map +0 -1
- package/dist/cli/lib/loadConfig.unitTest.d.ts +0 -2
- package/dist/cli/lib/loadConfig.unitTest.d.ts.map +0 -1
- package/dist/cli/lib/loadConfig.unitTest.js +0 -16
- package/dist/cli/lib/loadConfig.unitTest.js.map +0 -1
- package/dist/cli/lib/loadTestFile.d.ts.map +0 -1
- package/dist/cli/lib/loadTestFile.unitTest.d.ts +0 -2
- package/dist/cli/lib/loadTestFile.unitTest.d.ts.map +0 -1
- package/dist/cli/lib/loadTestFile.unitTest.js +0 -26
- package/dist/cli/lib/loadTestFile.unitTest.js.map +0 -1
- package/dist/cli/lib/makeWatchRunState.d.ts.map +0 -1
- package/dist/cli/lib/parseCommandLineArguments.d.ts.map +0 -1
- package/dist/cli/lib/parseCommandLineArguments.unitTest.d.ts +0 -2
- package/dist/cli/lib/parseCommandLineArguments.unitTest.d.ts.map +0 -1
- package/dist/cli/lib/parseCommandLineArguments.unitTest.js +0 -23
- package/dist/cli/lib/parseCommandLineArguments.unitTest.js.map +0 -1
- package/dist/cli/lib/parseDescribe.d.ts.map +0 -1
- package/dist/cli/lib/parseDescribe.unitTest.d.ts +0 -2
- package/dist/cli/lib/parseDescribe.unitTest.d.ts.map +0 -1
- package/dist/cli/lib/parseDescribe.unitTest.js +0 -23
- package/dist/cli/lib/parseDescribe.unitTest.js.map +0 -1
- package/dist/cli/lib/reRunManager.d.ts.map +0 -1
- package/dist/cli/lib/reRunManager.unitTest.d.ts +0 -2
- package/dist/cli/lib/reRunManager.unitTest.d.ts.map +0 -1
- package/dist/cli/lib/reRunManager.unitTest.js +0 -74
- package/dist/cli/lib/reRunManager.unitTest.js.map +0 -1
- package/dist/cli/lib/reservedExportKeys.d.ts.map +0 -1
- package/dist/cli/lib/reservedExportKeys.unitTest.d.ts +0 -2
- package/dist/cli/lib/reservedExportKeys.unitTest.d.ts.map +0 -1
- package/dist/cli/lib/reservedExportKeys.unitTest.js +0 -7
- package/dist/cli/lib/reservedExportKeys.unitTest.js.map +0 -1
- package/dist/cli/lib/runDescribe.d.ts.map +0 -1
- package/dist/cli/lib/runDescribe.unitTest.d.ts +0 -2
- package/dist/cli/lib/runDescribe.unitTest.d.ts.map +0 -1
- package/dist/cli/lib/runDescribe.unitTest.js +0 -25
- package/dist/cli/lib/runDescribe.unitTest.js.map +0 -1
- package/dist/cli/lib/runDescribeRun.d.ts.map +0 -1
- package/dist/cli/lib/runDescribeRun.unitTest.d.ts +0 -2
- package/dist/cli/lib/runDescribeRun.unitTest.d.ts.map +0 -1
- package/dist/cli/lib/runDescribeRun.unitTest.js +0 -48
- package/dist/cli/lib/runDescribeRun.unitTest.js.map +0 -1
- package/dist/cli/lib/runIt.d.ts.map +0 -1
- package/dist/cli/lib/runIt.unitTest.d.ts +0 -2
- package/dist/cli/lib/runIt.unitTest.d.ts.map +0 -1
- package/dist/cli/lib/runIt.unitTest.js +0 -77
- package/dist/cli/lib/runIt.unitTest.js.map +0 -1
- package/dist/cli/lib/runTasks.d.ts.map +0 -1
- package/dist/cli/lib/runTasks.unitTest.d.ts +0 -5
- package/dist/cli/lib/runTasks.unitTest.d.ts.map +0 -1
- package/dist/cli/lib/runTasks.unitTest.js +0 -36
- package/dist/cli/lib/runTasks.unitTest.js.map +0 -1
- package/dist/cli/lib/runTest.d.ts.map +0 -1
- package/dist/cli/lib/runTest.unitTest.d.ts +0 -20
- package/dist/cli/lib/runTest.unitTest.d.ts.map +0 -1
- package/dist/cli/lib/runTest.unitTest.js +0 -290
- package/dist/cli/lib/runTest.unitTest.js.map +0 -1
- package/dist/cli/lib/runTests.d.ts.map +0 -1
- package/dist/cli/lib/runTests.unitTest.d.ts +0 -6
- package/dist/cli/lib/runTests.unitTest.d.ts.map +0 -1
- package/dist/cli/lib/runTests.unitTest.js +0 -129
- package/dist/cli/lib/runTests.unitTest.js.map +0 -1
- package/dist/cli/lib/setEnv.d.ts.map +0 -1
- package/dist/cli/lib/showTestLoadingError.d.ts.map +0 -1
- package/dist/cli/lib/showTestLoadingError.unitTest.d.ts +0 -2
- package/dist/cli/lib/showTestLoadingError.unitTest.d.ts.map +0 -1
- package/dist/cli/lib/showTestLoadingError.unitTest.js +0 -18
- package/dist/cli/lib/showTestLoadingError.unitTest.js.map +0 -1
- package/dist/cli/lib/showTestResult.d.ts.map +0 -1
- package/dist/cli/lib/showTestResult.unitTest.d.ts +0 -2
- package/dist/cli/lib/showTestResult.unitTest.d.ts.map +0 -1
- package/dist/cli/lib/showTestResult.unitTest.js +0 -324
- package/dist/cli/lib/showTestResult.unitTest.js.map +0 -1
- package/dist/cli/lib/showTtyHelp.d.ts.map +0 -1
- package/dist/cli/lib/showTtyHelp.unitTest.d.ts +0 -2
- package/dist/cli/lib/showTtyHelp.unitTest.d.ts.map +0 -1
- package/dist/cli/lib/showTtyHelp.unitTest.js +0 -27
- package/dist/cli/lib/showTtyHelp.unitTest.js.map +0 -1
- package/dist/cli/lib/testHelpers/makeCustomOut.d.ts +0 -7
- package/dist/cli/lib/testHelpers/makeCustomOut.d.ts.map +0 -1
- package/dist/cli/lib/testHelpers/makeCustomOut.js +0 -10
- package/dist/cli/lib/testHelpers/makeCustomOut.js.map +0 -1
- package/dist/cli/lib/timeProfier.d.ts.map +0 -1
- package/dist/cli/lib/validateConfig.d.ts.map +0 -1
- package/dist/cli/lib/validateConfig.unitTest.d.ts +0 -2
- package/dist/cli/lib/validateConfig.unitTest.d.ts.map +0 -1
- package/dist/cli/lib/validateConfig.unitTest.js +0 -34
- package/dist/cli/lib/validateConfig.unitTest.js.map +0 -1
- package/dist/cli/lib/watchFilesAndRunTests.d.ts.map +0 -1
- package/dist/cli/lib/watchFilesAndRunTests.unitTest.d.ts +0 -2
- package/dist/cli/lib/watchFilesAndRunTests.unitTest.d.ts.map +0 -1
- package/dist/cli/lib/watchFilesAndRunTests.unitTest.js +0 -127
- package/dist/cli/lib/watchFilesAndRunTests.unitTest.js.map +0 -1
- package/dist/cli/lib/watchFilesAndRunTestsChokidar.d.ts.map +0 -1
- package/dist/cli/lib/watchFilesAndRunTestsChokidar.unitTest.d.ts +0 -2
- package/dist/cli/lib/watchFilesAndRunTestsChokidar.unitTest.d.ts.map +0 -1
- package/dist/cli/lib/watchFilesAndRunTestsChokidar.unitTest.js +0 -126
- package/dist/cli/lib/watchFilesAndRunTestsChokidar.unitTest.js.map +0 -1
- package/dist/cli/lib/watchFilesAndRunTestsNodeWatch.d.ts.map +0 -1
- package/dist/cli/lib/watchFilesAndRunTestsNodeWatch.unitTest.d.ts +0 -2
- package/dist/cli/lib/watchFilesAndRunTestsNodeWatch.unitTest.d.ts.map +0 -1
- package/dist/cli/lib/watchFilesAndRunTestsNodeWatch.unitTest.js +0 -128
- package/dist/cli/lib/watchFilesAndRunTestsNodeWatch.unitTest.js.map +0 -1
- package/dist/cli/lib/watchFilesChokidar.d.ts.map +0 -1
- package/dist/cli/lib/watchFilesChokidar.unitTest.d.ts +0 -2
- package/dist/cli/lib/watchFilesChokidar.unitTest.d.ts.map +0 -1
- package/dist/cli/lib/watchFilesChokidar.unitTest.js +0 -125
- package/dist/cli/lib/watchFilesChokidar.unitTest.js.map +0 -1
- package/dist/cli/lib/watchFilesNodeWatch.d.ts.map +0 -1
- package/dist/cli/lib/watchFilesNodeWatch.unitTest.d.ts +0 -2
- package/dist/cli/lib/watchFilesNodeWatch.unitTest.d.ts.map +0 -1
- package/dist/cli/lib/watchFilesNodeWatch.unitTest.js +0 -88
- package/dist/cli/lib/watchFilesNodeWatch.unitTest.js.map +0 -1
- package/dist/cli/once-seq-a.unitTest.d.ts +0 -2
- package/dist/cli/once-seq-a.unitTest.d.ts.map +0 -1
- package/dist/cli/once-seq-a.unitTest.js +0 -134
- package/dist/cli/once-seq-a.unitTest.js.map +0 -1
- package/dist/cli/once-seq-d.unitTest.d.ts +0 -2
- package/dist/cli/once-seq-d.unitTest.d.ts.map +0 -1
- package/dist/cli/once-seq-d.unitTest.js +0 -134
- package/dist/cli/once-seq-d.unitTest.js.map +0 -1
- package/dist/cli/once-seq-f.unitTest.d.ts +0 -2
- package/dist/cli/once-seq-f.unitTest.d.ts.map +0 -1
- package/dist/cli/once-seq-f.unitTest.js +0 -134
- package/dist/cli/once-seq-f.unitTest.js.map +0 -1
- package/dist/cli/once-seq-t.unitTest.d.ts +0 -2
- package/dist/cli/once-seq-t.unitTest.d.ts.map +0 -1
- package/dist/cli/once-seq-t.unitTest.js +0 -134
- package/dist/cli/once-seq-t.unitTest.js.map +0 -1
- package/dist/cli/once.d.ts.map +0 -1
- package/dist/cli/once.unitTest.d.ts +0 -2
- package/dist/cli/once.unitTest.d.ts.map +0 -1
- package/dist/cli/once.unitTest.js +0 -138
- package/dist/cli/once.unitTest.js.map +0 -1
- package/dist/cli/watch.d.ts.map +0 -1
- package/dist/cli/watch.unitTest.d.ts +0 -6
- package/dist/cli/watch.unitTest.d.ts.map +0 -1
- package/dist/cli/watch.unitTest.js +0 -107
- package/dist/cli/watch.unitTest.js.map +0 -1
- package/dist/config.d.ts.map +0 -1
- package/dist/describe.d.ts.map +0 -1
- package/dist/describe.unitTest.d.ts +0 -2
- package/dist/describe.unitTest.d.ts.map +0 -1
- package/dist/describe.unitTest.js +0 -22
- package/dist/describe.unitTest.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/indexNumberToLetters.d.ts.map +0 -1
- package/dist/output.d.ts.map +0 -1
- package/dist/packages/chalk.d.ts.map +0 -1
- package/dist/packages/esmReload.d.ts.map +0 -1
- package/dist/packages/esmReload.unitTest.d.ts +0 -2
- package/dist/packages/esmReload.unitTest.d.ts.map +0 -1
- package/dist/packages/esmReload.unitTest.js +0 -50
- package/dist/packages/esmReload.unitTest.js.map +0 -1
- package/dist/packages/figures.d.ts.map +0 -1
- package/dist/packages/loadConfig.d.ts.map +0 -1
- package/dist/packages/mergeStructuredConfig.d.ts.map +0 -1
- package/dist/packages/slash.d.ts.map +0 -1
- package/dist/packages/timeProfiler.d.ts.map +0 -1
- package/dist/testing/makeTestReRunManager.d.ts +0 -4
- package/dist/testing/makeTestReRunManager.d.ts.map +0 -1
- package/dist/testing/makeTestReRunManager.js +0 -6
- package/dist/testing/makeTestReRunManager.js.map +0 -1
- package/dist/types.d.ts.map +0 -1
package/AGENTS.md
CHANGED
|
@@ -19,7 +19,8 @@ For introductory human-facing usage, also see `readme.md`.
|
|
|
19
19
|
4. Import only `describe` from `sxy-test-runner`. Obtain `it`, `test`, and local hooks from
|
|
20
20
|
the `describe` callback.
|
|
21
21
|
5. Run `npx sxy-test-runner once` for finite agent or CI work.
|
|
22
|
-
6.
|
|
22
|
+
6. Exit codes: `0` all tests passed, `3` test failure, `4` no test files matched the `tests`
|
|
23
|
+
pattern, `5` test files ran but `--filter-it`/`--filter-describe` matched nothing.
|
|
23
24
|
|
|
24
25
|
Do not run a test file directly with `node`. `describe()` requires runner-owned global
|
|
25
26
|
state and deliberately throws if the framework has not initialized it.
|
package/dist/cli/help.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/cli/help.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,sBAAsB,CAAA;AACxC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AACrF,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAA;AAElC,MAAM,UAAU,IAAI;IAChB,MAAM,WAAW,GAAG,eAAe;SAC9B,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,eAAe,CAAC;SACnC,IAAI,CAAC,MAAM,CAAC,CAAA;IACjB,MAAM,iBAAiB,GAAG,eAAe;SACpC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,KAAK,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,CAAC;SACtE,IAAI,CAAC,MAAM,CAAC,CAAA;IAEjB,GAAG,CAAC;QACA,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC;QAC7B,EAAE;QACF,QAAQ;QACR,KAAK,OAAO,oBAAoB;QAChC,KAAK,OAAO,iBAAiB;QAC7B,KAAK,OAAO,OAAO;QACnB,KAAK,OAAO,OAAO;QACnB,EAAE;QACF,WAAW;QACX,iEAAiE;QACjE,2CAA2C;QAC3C,+CAA+C;QAC/C,yBAAyB;QACzB,EAAE;QACF,UAAU;QACV,8DAA8D;QAC9D,iEAAiE;QACjE,0EAA0E;QAC1E,mEAAmE;QACnE,yDAAyD;QACzD,EAAE;QACF,iBAAiB;QACjB,sDAAsD;QACtD,0CAA0C;QAC1C,8CAA8C;QAC9C,qEAAqE;QACrE,EAAE;QACF,WAAW;QACX,KAAK,OAAO,EAAE;QACd,KAAK,OAAO,OAAO;QACnB,KAAK,OAAO,4CAA4C;QACxD,KAAK,OAAO,8BAA8B;QAC1C,KAAK,OAAO,sCAAsC;QAClD,EAAE;QACF,kBAAkB,WAAW,OAAO,iBAAiB,GAAG;QACxD,6BAA6B,OAAO,KAAK,WAAW,GAAG;KAC1D,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;AACjB,CAAC"}
|
|
1
|
+
{"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/cli/help.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,sBAAsB,CAAA;AACxC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AACrF,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAA;AAElC,MAAM,UAAU,IAAI;IAChB,MAAM,WAAW,GAAG,eAAe;SAC9B,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,eAAe,CAAC;SACnC,IAAI,CAAC,MAAM,CAAC,CAAA;IACjB,MAAM,iBAAiB,GAAG,eAAe;SACpC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,KAAK,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,CAAC;SACtE,IAAI,CAAC,MAAM,CAAC,CAAA;IAEjB,GAAG,CAAC;QACA,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC;QAC7B,EAAE;QACF,QAAQ;QACR,KAAK,OAAO,oBAAoB;QAChC,KAAK,OAAO,iBAAiB;QAC7B,KAAK,OAAO,OAAO;QACnB,KAAK,OAAO,OAAO;QACnB,EAAE;QACF,WAAW;QACX,iEAAiE;QACjE,2CAA2C;QAC3C,+CAA+C;QAC/C,yBAAyB;QACzB,EAAE;QACF,UAAU;QACV,8DAA8D;QAC9D,iEAAiE;QACjE,0EAA0E;QAC1E,mEAAmE;QACnE,yDAAyD;QACzD,EAAE;QACF,iBAAiB;QACjB,sDAAsD;QACtD,0CAA0C;QAC1C,8CAA8C;QAC9C,qEAAqE;QACrE,EAAE;QACF,WAAW;QACX,KAAK,OAAO,EAAE;QACd,KAAK,OAAO,OAAO;QACnB,KAAK,OAAO,4CAA4C;QACxD,KAAK,OAAO,8BAA8B;QAC1C,KAAK,OAAO,sCAAsC;QAClD,EAAE;QACF,kBAAkB,WAAW,OAAO,iBAAiB,GAAG;QACxD,6BAA6B,OAAO,KAAK,WAAW,GAAG;KAC1D,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;AACjB,CAAC","sourcesContent":["import chalk from '../packages/chalk.js'\nimport { packageName, cliName, configFileNames, configLocations } from '../config.js'\nimport { out } from '../output.js'\n\nexport function help(): void {\n const configNames = configFileNames\n .map(name => `${name}.{js,cjs,mjs}`)\n .join(' or ')\n const configDirectories = configLocations\n .map(location => location === '' ? 'the project root' : `${location}/`)\n .join(' or ')\n\n out([\n chalk.brightblue(packageName),\n '',\n 'Usage:',\n ` ${cliName} [watch] [options]`,\n ` ${cliName} once [options]`,\n ` ${cliName} init`,\n ` ${cliName} help`,\n '',\n 'Commands:',\n ' watch Run tests and watch for related file changes (default)',\n ' once Run the test suite once and exit',\n ' init Create an initial configuration file',\n ' help Show this help',\n '',\n 'Options:',\n ' -c, --config <file> Use a specific configuration file',\n ' -t, --test-files <glob> Override the configured test pattern',\n ' -f, --filter <glob> Further constrain the configured test pattern',\n ' -d, --filter-describe <substring> Run matching describe blocks',\n ' -i, --filter-it <substring> Run matching tests',\n '',\n 'Watch controls:',\n ' r/l + Enter Re-run the last set of tests',\n ' a + Enter Re-run all tests',\n ' f + Enter Re-run failing tests',\n ' Set watch.ttyActionsOnKeypress to true to run these without Enter',\n '',\n 'Examples:',\n ` ${cliName}`,\n ` ${cliName} once`,\n ` ${cliName} watch --test-files \"**/*.focused.test.js\"`,\n ` ${cliName} once --filter \"**/users/**\"`,\n ` ${cliName} once --config config/sxyt.config.js`,\n '',\n `Configuration: ${configNames} in ${configDirectories}.`,\n `Executable aliases: sxyt, ${cliName}, ${packageName}.`\n ].join('\\n'))\n}\n"]}
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAEA,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AAElC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;IAClB,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;IACvB,QAAQ,OAAO,EAAE,CAAC,CAAC,qEAAqE;QACpF,KAAK,MAAM,CAAC;QACZ,KAAK,MAAM,CAAC;QACZ,KAAK,OAAO,CAAC;QACb,KAAK,MAAM;YACP,MAAM,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;YACvC,MAAK;QACT,KAAK,QAAQ,CAAC;QACd,KAAK,QAAQ,CAAC;QACd,KAAK,SAAS,CAAC;QACf,KAAK,QAAQ;YACT,MAAM,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;YACpD,MAAK;QACT;YACI,MAAM,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;IACtC,CAAC;AACL,CAAC;KAAM,CAAC;IACJ,MAAM,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;AAClC,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,OAAe,EAAE,IAAc;IACpD,MAAM,CAAC,2BAA2B,GAAG,IAAI,CAAA;IACzC,0GAA0G;IAC1G,mEAAmE;IACnE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,OAAO,KAAK,CAAC,CAAA;IAC9C,yGAAyG;IACzG,MAAM,MAAM,CAAC,OAAO,CAAC,EAAE,CAAA;IACvB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACnB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAEA,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AAElC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;IAClB,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;IACvB,QAAQ,OAAO,EAAE,CAAC,CAAC,qEAAqE;QACpF,KAAK,MAAM,CAAC;QACZ,KAAK,MAAM,CAAC;QACZ,KAAK,OAAO,CAAC;QACb,KAAK,MAAM;YACP,MAAM,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;YACvC,MAAK;QACT,KAAK,QAAQ,CAAC;QACd,KAAK,QAAQ,CAAC;QACd,KAAK,SAAS,CAAC;QACf,KAAK,QAAQ;YACT,MAAM,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;YACpD,MAAK;QACT;YACI,MAAM,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;IACtC,CAAC;AACL,CAAC;KAAM,CAAC;IACJ,MAAM,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;AAClC,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,OAAe,EAAE,IAAc;IACpD,MAAM,CAAC,2BAA2B,GAAG,IAAI,CAAA;IACzC,0GAA0G;IAC1G,mEAAmE;IACnE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,OAAO,KAAK,CAAC,CAAA;IAC9C,yGAAyG;IACzG,MAAM,MAAM,CAAC,OAAO,CAAC,EAAE,CAAA;IACvB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACnB,CAAC","sourcesContent":["#!/usr/bin/env node\n\nconst args = process.argv.slice(2)\n\nif (args.length > 0) {\n const command = args[0]\n switch (command) { // eslint-disable-line @typescript-eslint/switch-exhaustiveness-check\n case 'init':\n case 'once':\n case 'watch':\n case 'help':\n await doCommand(command, args.slice(1))\n break\n case '--init':\n case '--once':\n case '--watch':\n case '--help':\n await doCommand(command.substring(2), args.slice(1))\n break\n default:\n await doCommand('watch', args)\n }\n} else {\n await doCommand('watch', args)\n}\n\nasync function doCommand(command: string, args: string[]): Promise<void> {\n global.__sxyt_commandLineArguments = args\n // command-named dynamic import - no static type can express \"a module matching an unknown command string\"\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const module = await import(`./${command}.js`)\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n await module[command]()\n process.exit(0)\n}\n"]}
|
package/dist/cli/init.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,KAAK,MAAM,sBAAsB,CAAA;AACxC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AACrF,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAA;AAClC,OAAO,EAAE,MAAM,IAAI,CAAA;AAEnB,MAAM,UAAU,IAAI;IAChB,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;IAEhC,KAAK,MAAM,cAAc,IAAI,eAAe,EAAE,CAAC;QAC3C,KAAK,MAAM,cAAc,IAAI,eAAe,EAAE,CAAC;YAC3C,IAAI,GAAG,CAAA;YACP,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,cAAc,EAAE,cAAc,GAAG,KAAK,CAAC,CAAA;YAC9D,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACrB,mBAAmB,CAAC,GAAG,CAAC,CAAA;YAC5B,CAAC;YACD,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,cAAc,EAAE,cAAc,GAAG,MAAM,CAAC,CAAA;YAC/D,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACrB,mBAAmB,CAAC,GAAG,CAAC,CAAA;YAC5B,CAAC;YACD,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,cAAc,EAAE,cAAc,GAAG,MAAM,CAAC,CAAA;YAC/D,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACrB,mBAAmB,CAAC,GAAG,CAAC,CAAA;YAC5B,CAAC;QACL,CAAC;IACL,CAAC;IAED,SAAS,mBAAmB,CAAC,GAAW;QACpC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAA,IAAI,WAAW,yCAAyC,GAAG,EAAE;cACvE,kEAAkE,OAAO,SAAS,CAAC,CAAA;IAC7F,CAAC;IAED,MAAM,0BAA0B,GAAG,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAA;IACnE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,0BAA0B,CAAC,EAAE,CAAC;QAC7C,GAAG,CAAC,KAAK,CAAC,MAAM,CAAA,IAAI,WAAW,2CAA2C;cACpE,gEAAgE;cAChE,iFAAiF,CAAC,CAAA;IAC5F,CAAC;IAED,MAAM,cAAc,GAAG,EAAE,CAAC,YAAY,CAAC,0BAA0B,EAAE,MAAM,CAAC,CAAA;IAC1E,mEAAmE;IACnE,MAAM,WAAW,GAAsB,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAA;IAEjE,MAAM,gBAAgB,GAAG,CAAC,WAAW,CAAC,IAAI,KAAK,QAAQ,CAAC;QACpD,aAAa;QACb,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;QACxE,SAAS;QACT,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAA;IAE7E,MAAM,aAAa,GACvB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwFE,CAAA;IAEE,EAAE,CAAC,aAAa,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAA;IAEjD,GAAG,CAAC,KAAK,CAAC,WAAW,CAAA,IAAI,WAAW,sBAAsB,GAAG,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAA;AAC9F,CAAC"}
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,KAAK,MAAM,sBAAsB,CAAA;AACxC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AACrF,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAA;AAClC,OAAO,EAAE,MAAM,IAAI,CAAA;AAEnB,MAAM,UAAU,IAAI;IAChB,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;IAEhC,KAAK,MAAM,cAAc,IAAI,eAAe,EAAE,CAAC;QAC3C,KAAK,MAAM,cAAc,IAAI,eAAe,EAAE,CAAC;YAC3C,IAAI,GAAG,CAAA;YACP,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,cAAc,EAAE,cAAc,GAAG,KAAK,CAAC,CAAA;YAC9D,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACrB,mBAAmB,CAAC,GAAG,CAAC,CAAA;YAC5B,CAAC;YACD,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,cAAc,EAAE,cAAc,GAAG,MAAM,CAAC,CAAA;YAC/D,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACrB,mBAAmB,CAAC,GAAG,CAAC,CAAA;YAC5B,CAAC;YACD,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,cAAc,EAAE,cAAc,GAAG,MAAM,CAAC,CAAA;YAC/D,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACrB,mBAAmB,CAAC,GAAG,CAAC,CAAA;YAC5B,CAAC;QACL,CAAC;IACL,CAAC;IAED,SAAS,mBAAmB,CAAC,GAAW;QACpC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAA,IAAI,WAAW,yCAAyC,GAAG,EAAE;cACvE,kEAAkE,OAAO,SAAS,CAAC,CAAA;IAC7F,CAAC;IAED,MAAM,0BAA0B,GAAG,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAA;IACnE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,0BAA0B,CAAC,EAAE,CAAC;QAC7C,GAAG,CAAC,KAAK,CAAC,MAAM,CAAA,IAAI,WAAW,2CAA2C;cACpE,gEAAgE;cAChE,iFAAiF,CAAC,CAAA;IAC5F,CAAC;IAED,MAAM,cAAc,GAAG,EAAE,CAAC,YAAY,CAAC,0BAA0B,EAAE,MAAM,CAAC,CAAA;IAC1E,mEAAmE;IACnE,MAAM,WAAW,GAAsB,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAA;IAEjE,MAAM,gBAAgB,GAAG,CAAC,WAAW,CAAC,IAAI,KAAK,QAAQ,CAAC;QACpD,aAAa;QACb,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;QACxE,SAAS;QACT,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAA;IAE7E,MAAM,aAAa,GACvB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwFE,CAAA;IAEE,EAAE,CAAC,aAAa,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAA;IAEjD,GAAG,CAAC,KAAK,CAAC,WAAW,CAAA,IAAI,WAAW,sBAAsB,GAAG,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAA;AAC9F,CAAC","sourcesContent":["import { join } from 'path'\nimport chalk from '../packages/chalk.js'\nimport { packageName, cliName, configFileNames, configLocations } from '../config.js'\nimport { out } from '../output.js'\nimport fs from 'fs'\n\nexport function init(): void {\n const projectDir = process.cwd()\n\n for (const configLocation of configLocations) {\n for (const configFileName of configFileNames) {\n let loc\n loc = join(projectDir, configLocation, configFileName + '.js')\n if (fs.existsSync(loc)) {\n configAlreadyExists(loc)\n }\n loc = join(projectDir, configLocation, configFileName + '.cjs')\n if (fs.existsSync(loc)) {\n configAlreadyExists(loc)\n }\n loc = join(projectDir, configLocation, configFileName + '.mjs')\n if (fs.existsSync(loc)) {\n configAlreadyExists(loc)\n }\n }\n }\n\n function configAlreadyExists(loc: string): void {\n out(chalk.orange`[${packageName}] A matching config already exists at ${loc}`\n + `\\nPlease remove this config before generating a new one with \\`${cliName} init\\``)\n }\n\n const projectPackageJsonLocation = join(projectDir, 'package.json')\n if (!fs.existsSync(projectPackageJsonLocation)) {\n out(chalk.orange`[${packageName}] No package.json exists in this location`\n + '\\nPlease initialise the package with `yarn init` on `npm init`'\n + ' before running this command, and run this command from the project root folder')\n }\n\n const packageJsonRaw = fs.readFileSync(projectPackageJsonLocation, 'utf8')\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const packageJson: { type?: string } = JSON.parse(packageJsonRaw)\n\n const targetConfigName = (packageJson.type === 'module')\n // ES6 module\n ? join(projectDir, configLocations[0] ?? '', configFileNames[0] + '.js')\n // common\n : join(projectDir, configLocations[0] ?? '', configFileNames[0] + '.mjs')\n\n const defaultConfig =\n`\n// @ts-check\n\n/** @satisfies {import('sxy-test-runner').Config} */\nexport default {\n\n // base folder for tests match and ignore patterns\n testsBase: '.',\n\n // glob pattern or array of glob patterns of test files\n tests: [\n '**/*.sxyt.{js,mjs,jsx}',\n '**/*.test.{js,mjs,jsx}',\n '**/*.spec.{js,mjs,jsx}',\n '**/tests?/*.{js,mjs,jsx}',\n '**/__tests?__/*.{js,mjs,jsx}'\n ],\n\n // glob pattern or array of patterns of test files to ignore\n testsIgnore: ['**/node_modules/**/*'],\n\n // whether to show the full error trace when an error occurs in a test file\n showErrorTrace: false,\n\n // tasks to run on startup\n // accepts a function, file location (relative to project base), or array of functions and or files\n setup: undefined,\n\n // tasks to run before each test file is run\n beforeEachFile: undefined,\n\n // tasks to run after each test file is run\n afterEachFile: undefined,\n\n // tasks to run before each describe block is processed\n // if the function returns an object with named properties, or the file exports named exports,\n // these will be passed to the callback function in argument 0, and can be access by destructruing e.g.\n // describe('thing', ({exportA, exportB}) => { it('should', ...) })\n beforeEachDescribe: undefined,\n\n // tasks to run after each describe block\n afterEachDescribe: undefined,\n\n // tasks to run before each it/test block\n // function returns and file exports will be passed to the it/test block as with describe above, e.g.\n // it('should', ({exportA, exportB}) => { assert('something') })\n beforeEachTest: undefined,\n\n // tasks to run after each it/test block\n afterEachTest: undefined,\n\n // how to execute the different parts of test files\n execution: {\n\n // run test files in 'parallel' or 'sequential'ly\n files: 'sequential',\n\n // run describe blocks within a test file in 'parallel' or 'sequential'ly\n describes: 'sequential',\n\n // run it/test blocks within a describe blocks in 'parallel' or 'sequential'ly\n tests: 'sequential'\n\n },\n\n // watch mode configurations\n watch: {\n\n //// the base directory to watch files in\n watchFilesBase: '.',\n\n //// glob filter or array of glob filters of files to watch\n watchFiles: '**/*.js',\n\n //// glob filter or array of globl filters of files to ignore\n watchFilesIgnore: '**/node_modules/**/*',\n\n // run all tests when starting the watcher\n runAllOnStartup: true,\n\n // re run all previously failed tests on each test run, until they pass\n reRunFailingTests: true,\n\n // run watch mode keyboard commands immediately, without waiting for Enter\n ttyActionsOnKeypress: false,\n\n },\n\n}`\n\n fs.writeFileSync(targetConfigName, defaultConfig)\n\n out(chalk.mediumgreen`[${packageName}] Created config at ` + chalk.blue(targetConfigName))\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"addBasePath.js","sourceRoot":"","sources":["../../../src/cli/lib/addBasePath.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAI9C,MAAM,UAAU,WAAW,CAAC,IAAwB,EAAE,KAAkB;IACpE,OAAO,WAAW,CAAC,mBAAmB,EAAE,GAAG,EAAE;QACzC,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC;YACpD,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;gBACvB,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC;gBACtC,CAAC,CAAC,GAAG,IAAI,IAAI,KAAK,EAAE,CAAA;QAC5B,CAAC;QACD,OAAO,KAAK,CAAA;IAChB,CAAC,CAAC,CAAA;AACN,CAAC"}
|
|
1
|
+
{"version":3,"file":"addBasePath.js","sourceRoot":"","sources":["../../../src/cli/lib/addBasePath.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAI9C,MAAM,UAAU,WAAW,CAAC,IAAwB,EAAE,KAAkB;IACpE,OAAO,WAAW,CAAC,mBAAmB,EAAE,GAAG,EAAE;QACzC,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC;YACpD,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;gBACvB,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC;gBACtC,CAAC,CAAC,GAAG,IAAI,IAAI,KAAK,EAAE,CAAA;QAC5B,CAAC;QACD,OAAO,KAAK,CAAA;IAChB,CAAC,CAAC,CAAA;AACN,CAAC","sourcesContent":["import { timeProfile } from './timeProfier.js'\n\nimport type { GlobPattern } from '../../types.js'\n\nexport function addBasePath(base: string | undefined, items: GlobPattern): GlobPattern {\n return timeProfile('add base to globs', () => {\n if (base !== undefined && base !== '.' && base !== '') {\n return Array.isArray(items)\n ? items.map(item => `${base}/${item}`)\n : `${base}/${items}`\n }\n return items\n })\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"addExports.js","sourceRoot":"","sources":["../../../src/cli/lib/addExports.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAA;AAGrC,MAAM,UAAU,UAAU,CAAC,OAAoB,EAAE,aAA0B,EAAE,KAAc,EAAE,IAAa;IACtG,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;QAC9B,IAAI,GAAG,IAAI,OAAO,EAAE,CAAC;YACjB,MAAM,OAAO,GAAG,kBAAkB,KAAK,wBAAwB,GAAG,6BAA6B,CAAA;YAC/F,GAAG,CAAC,OAAO,CAAC,CAAA;YACZ,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAA;QAC5B,CAAC;aAAM,CAAC;YACJ,OAAO,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC,CAAA;QACrC,CAAC;IACL,CAAC;AACL,CAAC"}
|
|
1
|
+
{"version":3,"file":"addExports.js","sourceRoot":"","sources":["../../../src/cli/lib/addExports.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAA;AAGrC,MAAM,UAAU,UAAU,CAAC,OAAoB,EAAE,aAA0B,EAAE,KAAc,EAAE,IAAa;IACtG,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;QAC9B,IAAI,GAAG,IAAI,OAAO,EAAE,CAAC;YACjB,MAAM,OAAO,GAAG,kBAAkB,KAAK,wBAAwB,GAAG,6BAA6B,CAAA;YAC/F,GAAG,CAAC,OAAO,CAAC,CAAA;YACZ,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAA;QAC5B,CAAC;aAAM,CAAC;YACJ,OAAO,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC,CAAA;QACrC,CAAC;IACL,CAAC;AACL,CAAC","sourcesContent":["import { out } from '../../output.js'\nimport type { TaskExports } from '../../types.js'\n\nexport function addExports(exports: TaskExports, newProperties: TaskExports, event?: string, from?: string): void {\n for (const key in newProperties) {\n if (key in exports) {\n const message = `Error loading '${event}' task exports, key '${key}' has already been exported`\n out(message)\n throw new Error(message)\n } else {\n exports[key] = newProperties[key]\n }\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"applyConfigDefaults.js","sourceRoot":"","sources":["../../../src/cli/lib/applyConfigDefaults.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAA;AAI/E,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAElD,MAAM,UAAU,mBAAmB,CAAC,UAA8B;IAC9D,MAAM,eAAe,GAAG;QACpB,SAAS,EAAE,EAAE;QACb,KAAK,EAAE,EAAE;KACZ,CAAA;IAED,OAAO,qBAAqB,CAAC,eAAe,EAAE,aAAa,EAAE,UAAU,CAAC,CAAA;AAC5E,CAAC"}
|
|
1
|
+
{"version":3,"file":"applyConfigDefaults.js","sourceRoot":"","sources":["../../../src/cli/lib/applyConfigDefaults.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAA;AAI/E,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAElD,MAAM,UAAU,mBAAmB,CAAC,UAA8B;IAC9D,MAAM,eAAe,GAAG;QACpB,SAAS,EAAE,EAAE;QACb,KAAK,EAAE,EAAE;KACZ,CAAA;IAED,OAAO,qBAAqB,CAAC,eAAe,EAAE,aAAa,EAAE,UAAU,CAAC,CAAA;AAC5E,CAAC","sourcesContent":["import { mergeStructuredConfig } from '../../packages/mergeStructuredConfig.js'\n\nimport type { FinalConfig, UserConfig, UserConfigInternal } from '../../types.js'\n\nimport { defaultConfig } from './defaultConfig.js'\n\nexport function applyConfigDefaults(userConfig: UserConfigInternal): FinalConfig {\n const configStructure = {\n execution: {},\n watch: {}\n }\n\n return mergeStructuredConfig(configStructure, defaultConfig, userConfig)\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildDependencyTree.js","sourceRoot":"","sources":["../../../src/cli/lib/buildDependencyTree.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AACvC,OAAO,KAAK,MAAM,yBAAyB,CAAA;AAI3C,MAAM,UAAU,mBAAmB,CAAC,MAAmB,EAAE,QAAgB;IACrE,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAA;IAE1B,MAAM,oBAAoB,GAAG;QACzB,QAAQ;QACR,UAAU,EAAE,IAAI;QAChB,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,cAAc;QACtC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;KAChE,CAAA;IAED,2EAA2E;IAC3E,6EAA6E;IAC7E,MAAM,EAAE,GAAG,cAAc,CAAC,oBAAoB,CAAwB,CAAA;IAEtE,wCAAwC;IACxC,sDAAsD;IACtD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;IACzB,MAAM,SAAS,GAAG,EAAE;SACf,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;SAC9C,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAA,CAAC,0BAA0B;IAEjE,KAAK,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAA;IAElC,OAAO,SAAS,CAAA;AACpB,CAAC"}
|
|
1
|
+
{"version":3,"file":"buildDependencyTree.js","sourceRoot":"","sources":["../../../src/cli/lib/buildDependencyTree.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AACvC,OAAO,KAAK,MAAM,yBAAyB,CAAA;AAI3C,MAAM,UAAU,mBAAmB,CAAC,MAAmB,EAAE,QAAgB;IACrE,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAA;IAE1B,MAAM,oBAAoB,GAAG;QACzB,QAAQ;QACR,UAAU,EAAE,IAAI;QAChB,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,cAAc;QACtC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;KAChE,CAAA;IAED,2EAA2E;IAC3E,6EAA6E;IAC7E,MAAM,EAAE,GAAG,cAAc,CAAC,oBAAoB,CAAwB,CAAA;IAEtE,wCAAwC;IACxC,sDAAsD;IACtD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;IACzB,MAAM,SAAS,GAAG,EAAE;SACf,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;SAC9C,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAA,CAAC,0BAA0B;IAEjE,KAAK,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAA;IAElC,OAAO,SAAS,CAAA;AACpB,CAAC","sourcesContent":["import dependencyTree from 'dependency-tree'\nimport { debug } from '../../output.js'\nimport slash from '../../packages/slash.js'\n\nimport type { FinalConfig } from '../../types.js'\n\nexport function buildDependencyTree(config: FinalConfig, filename: string): string[] {\n filename = slash(filename)\n\n const dependencyTreeConfig = {\n filename,\n isListForm: true,\n directory: config.watch.watchFilesBase,\n filter: (path: string) => path.indexOf('node_modules') === -1\n }\n\n // isListForm:true makes dependency-tree return a flat string[] at runtime,\n // which its shipped types don't model (they only type the tree-object form).\n const dt = dependencyTree(dependencyTreeConfig) as unknown as string[]\n\n // process the results into final format\n // (forward slashes and convert full path to rel path)\n const cwd = process.cwd()\n const processed = dt\n .map(file => slash(file).slice(cwd.length + 1))\n .filter(file => file !== filename) // remove the current file\n\n debug('found dep tree', processed)\n\n return processed\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildDependencyTrees.js","sourceRoot":"","sources":["../../../src/cli/lib/buildDependencyTrees.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAEvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAI9D,MAAM,EAAE,gBAAgB,EAAE,GAAG,kBAAkB,CAAC,iBAAiB,CAAC,CAAA;AAElE,MAAM,UAAU,oBAAoB,CAAC,MAAmB,EAAE,SAAsB;IAC5E,OAAO,gBAAgB,CAAC,wBAAwB,EAAE,GAAG,EAAE;QACnD,MAAM,eAAe,GAAoB,EAAE,CAAA;QAE3C,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YAC/B,MAAM,cAAc,GAAG,mBAAmB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;YAC5D,eAAe,CAAC,QAAQ,CAAC,GAAG,cAAc,CAAA;YAC1C,KAAK,CAAC,gBAAgB,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAA;QACtD,CAAC;QAED,OAAO,eAAe,CAAA;IAC1B,CAAC,CAAC,CAAA;AACN,CAAC"}
|
|
1
|
+
{"version":3,"file":"buildDependencyTrees.js","sourceRoot":"","sources":["../../../src/cli/lib/buildDependencyTrees.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAEvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAI9D,MAAM,EAAE,gBAAgB,EAAE,GAAG,kBAAkB,CAAC,iBAAiB,CAAC,CAAA;AAElE,MAAM,UAAU,oBAAoB,CAAC,MAAmB,EAAE,SAAsB;IAC5E,OAAO,gBAAgB,CAAC,wBAAwB,EAAE,GAAG,EAAE;QACnD,MAAM,eAAe,GAAoB,EAAE,CAAA;QAE3C,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YAC/B,MAAM,cAAc,GAAG,mBAAmB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;YAC5D,eAAe,CAAC,QAAQ,CAAC,GAAG,cAAc,CAAA;YAC1C,KAAK,CAAC,gBAAgB,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAA;QACtD,CAAC;QAED,OAAO,eAAe,CAAA;IAC1B,CAAC,CAAC,CAAA;AACN,CAAC","sourcesContent":["import { createTimeProfiler } from '../../packages/timeProfiler.js'\nimport { showTimeProfiling } from '../../config.js'\nimport { debug } from '../../output.js'\n\nimport { buildDependencyTree } from './buildDependencyTree.js'\n\nimport type { FinalConfig, DependencyTrees } from '../../types.js'\n\nconst { timeProfileAsync } = createTimeProfiler(showTimeProfiling)\n\nexport function buildDependencyTrees(config: FinalConfig, testFiles: Set<string>): Promise<DependencyTrees> {\n return timeProfileAsync('build dependency trees', () => {\n const dependencyTrees: DependencyTrees = {}\n\n for (const testFile of testFiles) {\n const dependencyTree = buildDependencyTree(config, testFile)\n dependencyTrees[testFile] = dependencyTree\n debug('final dep tree', dependencyTrees[testFile])\n }\n\n return dependencyTrees\n })\n}\n"]}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/* eslint-disable no-console */
|
|
2
|
+
// Capturing user console.log by swapping the global and restoring it afterwards only works
|
|
3
|
+
// while nothing runs concurrently - two overlapping tests each save whatever they happen to
|
|
4
|
+
// find and restore it out of order, which strands console.log on a dead buffer.
|
|
5
|
+
//
|
|
6
|
+
// Instead we install one console.log, once, and never reassign it. It asks AsyncLocalStorage
|
|
7
|
+
// which test it is currently inside and appends to that test's buffer. Node propagates the
|
|
8
|
+
// store across awaits, so concurrent tests each see their own, and there is no shared slot
|
|
9
|
+
// for them to fight over.
|
|
10
|
+
import { AsyncLocalStorage } from 'node:async_hooks';
|
|
11
|
+
const logStore = new AsyncLocalStorage();
|
|
12
|
+
let dispatcher;
|
|
13
|
+
// Safe to call repeatedly. Re-installs if something else has replaced console.log since
|
|
14
|
+
// (the unit tests stub it per test case), taking the current console.log as the fallback
|
|
15
|
+
// for output made outside any test.
|
|
16
|
+
export function installConsoleCapture() {
|
|
17
|
+
if (dispatcher !== undefined && console.log === dispatcher)
|
|
18
|
+
return;
|
|
19
|
+
const fallback = console.log;
|
|
20
|
+
dispatcher = (...texts) => {
|
|
21
|
+
const logs = logStore.getStore();
|
|
22
|
+
if (logs)
|
|
23
|
+
logs.push(texts);
|
|
24
|
+
else
|
|
25
|
+
fallback(...texts);
|
|
26
|
+
};
|
|
27
|
+
console.log = dispatcher;
|
|
28
|
+
}
|
|
29
|
+
// Runs body with logs as the active buffer - console.log made anywhere inside, including
|
|
30
|
+
// after awaits, lands in it. Installs the capture on first use, so callers that reach the
|
|
31
|
+
// run* functions directly rather than through the once/watch entry points still capture.
|
|
32
|
+
export function captureLogs(logs, body) {
|
|
33
|
+
installConsoleCapture();
|
|
34
|
+
return logStore.run(logs, body);
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=consoleCapture.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consoleCapture.js","sourceRoot":"","sources":["../../../src/cli/lib/consoleCapture.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAE/B,2FAA2F;AAC3F,4FAA4F;AAC5F,gFAAgF;AAChF,EAAE;AACF,6FAA6F;AAC7F,2FAA2F;AAC3F,2FAA2F;AAC3F,0BAA0B;AAE1B,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAEpD,MAAM,QAAQ,GAAG,IAAI,iBAAiB,EAAe,CAAA;AAErD,IAAI,UAA0C,CAAA;AAE9C,wFAAwF;AACxF,yFAAyF;AACzF,oCAAoC;AACpC,MAAM,UAAU,qBAAqB;IACjC,IAAI,UAAU,KAAK,SAAS,IAAI,OAAO,CAAC,GAAG,KAAK,UAAU;QAAE,OAAM;IAElE,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAA;IAC5B,UAAU,GAAG,CAAC,GAAG,KAAgB,EAAE,EAAE;QACjC,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAA;QAChC,IAAI,IAAI;YAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;;YACrB,QAAQ,CAAC,GAAG,KAAK,CAAC,CAAA;IAC3B,CAAC,CAAA;IACD,OAAO,CAAC,GAAG,GAAG,UAAU,CAAA;AAC5B,CAAC;AAED,yFAAyF;AACzF,0FAA0F;AAC1F,yFAAyF;AACzF,MAAM,UAAU,WAAW,CAAI,IAAiB,EAAE,IAAsB;IACpE,qBAAqB,EAAE,CAAA;IACvB,OAAO,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;AACnC,CAAC","sourcesContent":["/* eslint-disable no-console */\n\n// Capturing user console.log by swapping the global and restoring it afterwards only works\n// while nothing runs concurrently - two overlapping tests each save whatever they happen to\n// find and restore it out of order, which strands console.log on a dead buffer.\n//\n// Instead we install one console.log, once, and never reassign it. It asks AsyncLocalStorage\n// which test it is currently inside and appends to that test's buffer. Node propagates the\n// store across awaits, so concurrent tests each see their own, and there is no shared slot\n// for them to fight over.\n\nimport { AsyncLocalStorage } from 'node:async_hooks'\n\nconst logStore = new AsyncLocalStorage<unknown[][]>()\n\nlet dispatcher: typeof console.log | undefined\n\n// Safe to call repeatedly. Re-installs if something else has replaced console.log since\n// (the unit tests stub it per test case), taking the current console.log as the fallback\n// for output made outside any test.\nexport function installConsoleCapture(): void {\n if (dispatcher !== undefined && console.log === dispatcher) return\n\n const fallback = console.log\n dispatcher = (...texts: unknown[]) => {\n const logs = logStore.getStore()\n if (logs) logs.push(texts)\n else fallback(...texts)\n }\n console.log = dispatcher\n}\n\n// Runs body with logs as the active buffer - console.log made anywhere inside, including\n// after awaits, lands in it. Installs the capture on first use, so callers that reach the\n// run* functions directly rather than through the once/watch entry points still capture.\nexport function captureLogs<T>(logs: unknown[][], body: () => Promise<T>): Promise<T> {\n installConsoleCapture()\n return logStore.run(logs, body)\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaultConfig.js","sourceRoot":"","sources":["../../../src/cli/lib/defaultConfig.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,aAAa,GAAgB;IACtC,SAAS,EAAE,GAAG;IACd,KAAK,EAAE;QACH,wBAAwB;QACxB,wBAAwB;QACxB,wBAAwB;QACxB,0BAA0B;QAC1B,8BAA8B;KACjC;IACD,WAAW,EAAE,CAAC,sBAAsB,CAAC;IACrC,cAAc,EAAE,KAAK;IACrB,OAAO,EAAE,KAAK;IACd,SAAS,EAAE;QACP,KAAK,EAAE,YAAY;QACnB,SAAS,EAAE,YAAY;QACvB,KAAK,EAAE,YAAY;KACtB;IACD,KAAK,EAAE;QACH,cAAc,EAAE,GAAG;QACnB,UAAU,EAAE,SAAS;QACrB,gBAAgB,EAAE,sBAAsB;QACxC,eAAe,EAAE,IAAI;QACrB,iBAAiB,EAAE,IAAI;QACvB,oBAAoB,EAAE,KAAK;KAC9B;CACJ,CAAA"}
|
|
1
|
+
{"version":3,"file":"defaultConfig.js","sourceRoot":"","sources":["../../../src/cli/lib/defaultConfig.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,aAAa,GAAgB;IACtC,SAAS,EAAE,GAAG;IACd,KAAK,EAAE;QACH,wBAAwB;QACxB,wBAAwB;QACxB,wBAAwB;QACxB,0BAA0B;QAC1B,8BAA8B;KACjC;IACD,WAAW,EAAE,CAAC,sBAAsB,CAAC;IACrC,cAAc,EAAE,KAAK;IACrB,OAAO,EAAE,KAAK;IACd,SAAS,EAAE;QACP,KAAK,EAAE,YAAY;QACnB,SAAS,EAAE,YAAY;QACvB,KAAK,EAAE,YAAY;KACtB;IACD,KAAK,EAAE;QACH,cAAc,EAAE,GAAG;QACnB,UAAU,EAAE,SAAS;QACrB,gBAAgB,EAAE,sBAAsB;QACxC,eAAe,EAAE,IAAI;QACrB,iBAAiB,EAAE,IAAI;QACvB,oBAAoB,EAAE,KAAK;KAC9B;CACJ,CAAA","sourcesContent":["import type { FinalConfig } from '../../types.js'\n\nexport const defaultConfig: FinalConfig = {\n testsBase: '.',\n tests: [\n '**/*.sxyt.{js,mjs,jsx}',\n '**/*.test.{js,mjs,jsx}',\n '**/*.spec.{js,mjs,jsx}',\n '**/tests?/*.{js,mjs,jsx}',\n '**/__tests?__/*.{js,mjs,jsx}'\n ],\n testsIgnore: ['**/node_modules/**/*'],\n showErrorTrace: false,\n compact: false,\n execution: {\n files: 'sequential',\n describes: 'sequential',\n tests: 'sequential'\n },\n watch: {\n watchFilesBase: '.',\n watchFiles: '**/*.js',\n watchFilesIgnore: '**/node_modules/**/*',\n runAllOnStartup: true,\n reRunFailingTests: true,\n ttyActionsOnKeypress: false\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doUserSetup.js","sourceRoot":"","sources":["../../../src/cli/lib/doUserSetup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAA;AAGrC,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,MAAmB;IACjD,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS;QAAE,OAAM;IAEtC,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IAC9E,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACjC,QAAQ,OAAO,SAAS,EAAE,CAAC;YACvB,KAAK,UAAU,CAAC,CAAC,CAAC;gBACd,MAAM,SAAS,EAAE,CAAA;gBACjB,MAAK;YACT,CAAC;YACD,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACZ,MAAM,MAAM,CAAC,UAAU,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,EAAE,CAAC,CAAA;gBACxD,MAAK;YACT,CAAC;YACD,OAAO,CAAC,CAAC,CAAC;gBACN,GAAG,CAAC,mGAAmG,CAAC,CAAA;gBACxG,GAAG,CAAC,YAAY,OAAO,SAAS,GAAG,CAAC,CAAA;YACxC,CAAC;QACL,CAAC;IACL,CAAC;AACL,CAAC"}
|
|
1
|
+
{"version":3,"file":"doUserSetup.js","sourceRoot":"","sources":["../../../src/cli/lib/doUserSetup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAA;AAGrC,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,MAAmB;IACjD,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS;QAAE,OAAM;IAEtC,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IAC9E,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACjC,QAAQ,OAAO,SAAS,EAAE,CAAC;YACvB,KAAK,UAAU,CAAC,CAAC,CAAC;gBACd,MAAM,SAAS,EAAE,CAAA;gBACjB,MAAK;YACT,CAAC;YACD,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACZ,MAAM,MAAM,CAAC,UAAU,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,EAAE,CAAC,CAAA;gBACxD,MAAK;YACT,CAAC;YACD,OAAO,CAAC,CAAC,CAAC;gBACN,GAAG,CAAC,mGAAmG,CAAC,CAAA;gBACxG,GAAG,CAAC,YAAY,OAAO,SAAS,GAAG,CAAC,CAAA;YACxC,CAAC;QACL,CAAC;IACL,CAAC;AACL,CAAC","sourcesContent":["import { join } from 'path'\nimport { out } from '../../output.js'\nimport type { FinalConfig } from '../../types.js'\n\nexport async function doUserSetup(config: FinalConfig): Promise<void> {\n if (config.setup === undefined) return\n\n const setupTasks = Array.isArray(config.setup) ? config.setup : [config.setup]\n for (const setupTask of setupTasks) {\n switch (typeof setupTask) {\n case 'function': {\n await setupTask()\n break\n }\n case 'string': {\n await import(`file://${join(process.cwd(), setupTask)}`)\n break\n }\n default: {\n out('Error: setup entry has an invalid type, expected \\'function\\' or \\'string\\' of an file to import.')\n out(`Received ${typeof setupTask}.`)\n }\n }\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doUserTeardown.js","sourceRoot":"","sources":["../../../src/cli/lib/doUserTeardown.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAA;AAGrC,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,MAAmB;IACpD,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS;QAAE,OAAM;IAEzC,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;IAC1F,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;QACvC,QAAQ,OAAO,YAAY,EAAE,CAAC;YAC1B,KAAK,UAAU,CAAC,CAAC,CAAC;gBACd,MAAM,YAAY,EAAE,CAAA;gBACpB,MAAK;YACT,CAAC;YACD,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACZ,MAAM,MAAM,CAAC,UAAU,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,YAAY,CAAC,EAAE,CAAC,CAAA;gBAC3D,MAAK;YACT,CAAC;YACD,OAAO,CAAC,CAAC,CAAC;gBACN,GAAG,CACC,gFAAgF;sBAC9E,wBAAwB,CAC7B,CAAA;gBACD,GAAG,CAAC,YAAY,OAAO,YAAY,GAAG,CAAC,CAAA;YAC3C,CAAC;QACL,CAAC;IACL,CAAC;AACL,CAAC"}
|
|
1
|
+
{"version":3,"file":"doUserTeardown.js","sourceRoot":"","sources":["../../../src/cli/lib/doUserTeardown.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAA;AAGrC,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,MAAmB;IACpD,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS;QAAE,OAAM;IAEzC,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;IAC1F,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;QACvC,QAAQ,OAAO,YAAY,EAAE,CAAC;YAC1B,KAAK,UAAU,CAAC,CAAC,CAAC;gBACd,MAAM,YAAY,EAAE,CAAA;gBACpB,MAAK;YACT,CAAC;YACD,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACZ,MAAM,MAAM,CAAC,UAAU,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,YAAY,CAAC,EAAE,CAAC,CAAA;gBAC3D,MAAK;YACT,CAAC;YACD,OAAO,CAAC,CAAC,CAAC;gBACN,GAAG,CACC,gFAAgF;sBAC9E,wBAAwB,CAC7B,CAAA;gBACD,GAAG,CAAC,YAAY,OAAO,YAAY,GAAG,CAAC,CAAA;YAC3C,CAAC;QACL,CAAC;IACL,CAAC;AACL,CAAC","sourcesContent":["import { join } from 'path'\nimport { out } from '../../output.js'\nimport type { FinalConfig } from '../../types.js'\n\nexport async function doUserTeardown(config: FinalConfig): Promise<void> {\n if (config.teardown === undefined) return\n\n const teardownTasks = Array.isArray(config.teardown) ? config.teardown : [config.teardown]\n for (const teardownTask of teardownTasks) {\n switch (typeof teardownTask) {\n case 'function': {\n await teardownTask()\n break\n }\n case 'string': {\n await import(`file://${join(process.cwd(), teardownTask)}`)\n break\n }\n default: {\n out(\n 'Error: teardown entry has an invalid type, expected \\'function\\' or \\'string\\''\n + ' of an file to import.'\n )\n out(`Received ${typeof teardownTask}.`)\n }\n }\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter.js","sourceRoot":"","sources":["../../../src/cli/lib/filter.ts"],"names":[],"mappings":"AACA,OAAO,SAAS,MAAM,WAAW,CAAA;AAEjC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEpD,MAAM,UAAU,MAAM,CAClB,SAAiB,EACjB,UAAkB,EAClB,QAAgB;IAEhB,MAAM,UAAU,GAAG,WAAW,CAAC,SAAS,EAAE,UAAU,CAAC,CAAA;IACrD,OAAO,SAAS,CAAC,QAAQ,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC,CAAA;AAC1D,CAAC"}
|
|
1
|
+
{"version":3,"file":"filter.js","sourceRoot":"","sources":["../../../src/cli/lib/filter.ts"],"names":[],"mappings":"AACA,OAAO,SAAS,MAAM,WAAW,CAAA;AAEjC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEpD,MAAM,UAAU,MAAM,CAClB,SAAiB,EACjB,UAAkB,EAClB,QAAgB;IAEhB,MAAM,UAAU,GAAG,WAAW,CAAC,SAAS,EAAE,UAAU,CAAC,CAAA;IACrD,OAAO,SAAS,CAAC,QAAQ,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC,CAAA;AAC1D,CAAC","sourcesContent":["\nimport minimatch from 'minimatch'\n\nimport { addBasePath } from './addBasePath.js'\nimport { globArgCombine } from './globArgCombine.js'\n\nexport function filter(\n testsBase: string,\n testFilter: string,\n testFile: string,\n): boolean {\n const filterGlob = addBasePath(testsBase, testFilter)\n return minimatch(testFile, globArgCombine(filterGlob))\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"findTestFiles.js","sourceRoot":"","sources":["../../../src/cli/lib/findTestFiles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAClC,OAAO,KAAK,MAAM,yBAAyB,CAAA;AAG3C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,MAAmB;IACnD,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;IAC9D,MAAM,gBAAgB,GAAG,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC,CAAA;IAG1E,mFAAmF;IACnF,kFAAkF;IAClF,qFAAqF;IACrF,MAAM,KAAK,GAAG,IAAI,GAAW,CAAA;IAC7B,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE;QACtC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC;KACnF,CAAC,EAAE,CAAC;QACD,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,CAAA;QAC5B,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS,IAAI,MAAM,CAAC,WAAW,KAAK,EAAE,EAAE,CAAC;YAChE,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC;gBAAE,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QACnF,CAAC;aAAM,CAAC;YACJ,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QACvB,CAAC;IAEL,CAAC;IAED,OAAO,KAAK,CAAA;AAChB,CAAC"}
|
|
1
|
+
{"version":3,"file":"findTestFiles.js","sourceRoot":"","sources":["../../../src/cli/lib/findTestFiles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAClC,OAAO,KAAK,MAAM,yBAAyB,CAAA;AAG3C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,MAAmB;IACnD,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;IAC9D,MAAM,gBAAgB,GAAG,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC,CAAA;IAG1E,mFAAmF;IACnF,kFAAkF;IAClF,qFAAqF;IACrF,MAAM,KAAK,GAAG,IAAI,GAAW,CAAA;IAC7B,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE;QACtC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC;KACnF,CAAC,EAAE,CAAC;QACD,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,CAAA;QAC5B,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS,IAAI,MAAM,CAAC,WAAW,KAAK,EAAE,EAAE,CAAC;YAChE,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC;gBAAE,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QACnF,CAAC;aAAM,CAAC;YACJ,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QACvB,CAAC;IAEL,CAAC;IAED,OAAO,KAAK,CAAA;AAChB,CAAC","sourcesContent":["import { glob } from 'fs/promises'\nimport slash from '../../packages/slash.js'\nimport type { FinalConfig } from '../../types.js'\n\nimport { addBasePath } from './addBasePath.js'\nimport { filter } from './filter.js'\n\nexport async function findTestFiles(config: FinalConfig): Promise<Set<string>> {\n const testsGlobs = addBasePath(config.testsBase, config.tests)\n const testsIgnoreGlobs = addBasePath(config.testsBase, config.testsIgnore)\n\n \n // Node's built-in glob replaces the globby/tinyglobby dependency (no import cost).\n // It yields OS-native separators, so slash() restores the forward-slash paths the\n // rest of the runner relies on (watch-mode minimatch filters, dependency-tree keys).\n const files = new Set<string>\n for await (const file of glob(testsGlobs, {\n exclude: Array.isArray(testsIgnoreGlobs) ? testsIgnoreGlobs : [testsIgnoreGlobs]\n })) {\n const testFile = slash(file)\n if (config.testsFilter !== undefined && config.testsFilter !== '') {\n if (filter(config.testsBase, config.testsFilter, testFile)) files.add(testFile)\n } else {\n files.add(testFile)\n }\n \n }\n\n return files\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"findingTestsMessage.js","sourceRoot":"","sources":["../../../src/cli/lib/findingTestsMessage.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,yBAAyB,CAAA;AAE3C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAGzC,yGAAyG;AACzG,8CAA8C;AAC9C,QAAQ;AAER,qCAAqC;AACrC,4CAA4C;AAC5C,6DAA6D;AAC7D,kFAAkF;AAClF,YAAY;AACZ,oGAAoG;AAGpG,MAAM,UAAU,mBAAmB,CAAC,MAAmB;IACnD,MAAM,YAAY,GAAG,kBAAkB,CAAA;IACvC,IAAI,UAAU,GAAG,EAAE,CAAA;IACnB,IAAI,MAAM,CAAC,SAAS,KAAK,EAAE;QAAE,UAAU,IAAI,iBAAiB,MAAM,CAAC,SAAS,GAAG,CAAA;IAC/E,UAAU,IAAI,UAAU,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;QAC/C,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;QACxB,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,CAAA;IACrB,IAAI,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;QAC/B,UAAU,IAAI,kBAAkB,MAAM,CAAC,WAAW,GAAG,CAAA;IACzD,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;QAC/B,UAAU,IAAI,eAAe,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC;YAC1D,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;YAC9B,CAAC,CAAC,MAAM,CAAC,WAAW,GAAG,CAAA;IAC/B,CAAC;IACD,OAAO,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;AAChD,CAAC"}
|
|
1
|
+
{"version":3,"file":"findingTestsMessage.js","sourceRoot":"","sources":["../../../src/cli/lib/findingTestsMessage.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,yBAAyB,CAAA;AAE3C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAGzC,yGAAyG;AACzG,8CAA8C;AAC9C,QAAQ;AAER,qCAAqC;AACrC,4CAA4C;AAC5C,6DAA6D;AAC7D,kFAAkF;AAClF,YAAY;AACZ,oGAAoG;AAGpG,MAAM,UAAU,mBAAmB,CAAC,MAAmB;IACnD,MAAM,YAAY,GAAG,kBAAkB,CAAA;IACvC,IAAI,UAAU,GAAG,EAAE,CAAA;IACnB,IAAI,MAAM,CAAC,SAAS,KAAK,EAAE;QAAE,UAAU,IAAI,iBAAiB,MAAM,CAAC,SAAS,GAAG,CAAA;IAC/E,UAAU,IAAI,UAAU,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;QAC/C,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;QACxB,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,CAAA;IACrB,IAAI,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;QAC/B,UAAU,IAAI,kBAAkB,MAAM,CAAC,WAAW,GAAG,CAAA;IACzD,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;QAC/B,UAAU,IAAI,eAAe,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC;YAC1D,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;YAC9B,CAAC,CAAC,MAAM,CAAC,WAAW,GAAG,CAAA;IAC/B,CAAC;IACD,OAAO,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;AAChD,CAAC","sourcesContent":["\r\nimport chalk from '../../packages/chalk.js'\r\nimport { FinalConfig } from '../../types.js'\r\nimport { notEmpty } from './functions.js'\r\n\r\n\r\n// console.log('Looking for tests using pattern: ' + testFilesPattern) // eslint-disable-line no-console\r\n// userConfig.tests = testFilesPattern\r\n// }\r\n\r\n// if ('filter' in clArguments) {\r\n// const filter = clArguments.filter\r\n// if (typeof filter !== 'string' || filter === '') {\r\n// throw new Error('No pattern specified for --filter or -f argument')\r\n// }\r\n// console.log('Filtering tests using pattern: ' + filter) // eslint-disable-line no-console\r\n\r\n\r\nexport function findingTestsMessage(config: FinalConfig): string {\r\n const messageStart = 'finding tests...'\r\n let messageEnd = ''\r\n if (config.testsBase !== '') messageEnd += `\\nlooking in '${config.testsBase}'`\r\n messageEnd += `\\nfor '${Array.isArray(config.tests)\r\n ? config.tests.join(',')\r\n : config.tests}'`\r\n if (notEmpty(config.testsFilter)) {\r\n messageEnd += `\\nfiltered by '${config.testsFilter}'`\r\n }\r\n if (notEmpty(config.testsIgnore)) {\r\n messageEnd += `\\nignoring '${Array.isArray(config.testsIgnore)\r\n ? config.testsIgnore.join(',')\r\n : config.testsIgnore}'`\r\n }\r\n return messageStart + chalk.grey(messageEnd)\r\n}\r\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"foundTestsMessage.js","sourceRoot":"","sources":["../../../src/cli/lib/foundTestsMessage.ts"],"names":[],"mappings":"AACA,MAAM,UAAU,iBAAiB,CAAC,aAAqB;IACnD,OAAO,SAAS,aAAa,aAAa,aAAa,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAA;AAC9E,CAAC","sourcesContent":["\nexport function foundTestsMessage(testFileCount: number): string {\n return `found ${testFileCount} test file${testFileCount === 1 ? '' : 's'}`\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"functions.js","sourceRoot":"","sources":["../../../src/cli/lib/functions.ts"],"names":[],"mappings":"AACA,MAAM,UAAU,QAAQ,CAAI,CAAI;IAC5B,OAAO,CACH,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;QACnB,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC;QACzC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,oEAAoE;KACjF,CAAA;AACL,CAAC"}
|
|
1
|
+
{"version":3,"file":"functions.js","sourceRoot":"","sources":["../../../src/cli/lib/functions.ts"],"names":[],"mappings":"AACA,MAAM,UAAU,QAAQ,CAAI,CAAI;IAC5B,OAAO,CACH,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;QACnB,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC;QACzC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,oEAAoE;KACjF,CAAA;AACL,CAAC","sourcesContent":["\r\nexport function notEmpty<T>(v: T): v is T & NonNullable<unknown> {\r\n return (\r\n (typeof v === 'object')\r\n ? v !== null && Object.keys(v).length > 0\r\n : !!v // eslint-disable-line @typescript-eslint/strict-boolean-expressions\r\n )\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getAllowedFlags.js","sourceRoot":"","sources":["../../../src/cli/lib/getAllowedFlags.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,eAAe,CAAC,gBAAkC;IAC9D,MAAM,YAAY,GAAiB,EAAE,CAAA;IACrC,KAAK,MAAM,MAAM,IAAI,gBAAgB,EAAE,CAAC;QACpC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAA;QACzC,IAAI,OAAO,QAAQ,EAAE,IAAI,KAAK,QAAQ,EAAE,CAAC;YACrC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAA;QACxC,CAAC;IACL,CAAC;IACD,OAAO,YAAY,CAAA;AACvB,CAAC"}
|
|
1
|
+
{"version":3,"file":"getAllowedFlags.js","sourceRoot":"","sources":["../../../src/cli/lib/getAllowedFlags.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,eAAe,CAAC,gBAAkC;IAC9D,MAAM,YAAY,GAAiB,EAAE,CAAA;IACrC,KAAK,MAAM,MAAM,IAAI,gBAAgB,EAAE,CAAC;QACpC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAA;QACzC,IAAI,OAAO,QAAQ,EAAE,IAAI,KAAK,QAAQ,EAAE,CAAC;YACrC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAA;QACxC,CAAC;IACL,CAAC;IACD,OAAO,YAAY,CAAA;AACvB,CAAC","sourcesContent":["import type { AllowedArguments, AllowedFlags } from '../../types.js'\n\nexport function getAllowedFlags(allowedArguments: AllowedArguments): AllowedFlags {\n const allowedFlags: AllowedFlags = {}\n for (const option in allowedArguments) {\n const argument = allowedArguments[option]\n if (typeof argument?.flag === 'string') {\n allowedFlags[argument.flag] = option\n }\n }\n return allowedFlags\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"globArgCombine.js","sourceRoot":"","sources":["../../../src/cli/lib/globArgCombine.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,cAAc,CAAC,QAAqB;IAChD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAA;IAC7C,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;QACxB,CAAC,CAAC,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG;QAChC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;AAC7B,CAAC"}
|
|
1
|
+
{"version":3,"file":"globArgCombine.js","sourceRoot":"","sources":["../../../src/cli/lib/globArgCombine.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,cAAc,CAAC,QAAqB;IAChD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAA;IAC7C,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;QACxB,CAAC,CAAC,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG;QAChC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;AAC7B,CAAC","sourcesContent":["import type { GlobPattern } from '../../types.js'\n\nexport function globArgCombine(patterns: GlobPattern): string {\n if (!Array.isArray(patterns)) return patterns\n return (patterns.length > 1)\n ? '{' + patterns.join(',') + '}'\n : (patterns[0] ?? '')\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handleUserInput.js","sourceRoot":"","sources":["../../../src/cli/lib/handleUserInput.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAA;AAIrC,MAAM,UAAU,eAAe,CAC3B,KAAa,EACb,YAA0B,EAC1B,kBAAqC;IAErC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;IAE1C,iCAAiC;IAEjC,mEAAmE;IACnE,wDAAwD;IAExD,IAAI,IAAa,CAAA;IACjB,IAAI,SAAsB,CAAA;IAC1B,IAAI,OAAO,KAAK,GAAG,IAAI,OAAO,KAAK,GAAG,EAAE,CAAC;QACrC,IAAI,GAAG,MAAM,CAAA;QACb,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,aAAa,CAAA;IAChD,CAAC;SAAM,IAAI,OAAO,KAAK,GAAG,EAAE,CAAC;QACzB,IAAI,GAAG,KAAK,CAAA;QACZ,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,YAAY,CAAA;IAC/C,CAAC;SAAM,IAAI,OAAO,KAAK,GAAG,EAAE,CAAC;QACzB,IAAI,GAAG,QAAQ,CAAA;QACf,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,eAAe,CAAA;IAClD,CAAC;SAAM,CAAC;QACJ,OAAM;IACV,CAAC;IAED,2BAA2B;IAC3B,qCAAqC;IAErC,IAAI,SAAS,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACvB,GAAG,CAAC,+BAA+B,CAAC,CAAA;QACpC,OAAM;IACV,CAAC;IACD,YAAY,CAAC,UAAU,CAAC,IAAI,EAAE,kBAAkB,CAAC,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA,CAAC,yCAAyC;AAEnH,CAAC"}
|
|
1
|
+
{"version":3,"file":"handleUserInput.js","sourceRoot":"","sources":["../../../src/cli/lib/handleUserInput.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAA;AAIrC,MAAM,UAAU,eAAe,CAC3B,KAAa,EACb,YAA0B,EAC1B,kBAAqC;IAErC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;IAE1C,iCAAiC;IAEjC,mEAAmE;IACnE,wDAAwD;IAExD,IAAI,IAAa,CAAA;IACjB,IAAI,SAAsB,CAAA;IAC1B,IAAI,OAAO,KAAK,GAAG,IAAI,OAAO,KAAK,GAAG,EAAE,CAAC;QACrC,IAAI,GAAG,MAAM,CAAA;QACb,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,aAAa,CAAA;IAChD,CAAC;SAAM,IAAI,OAAO,KAAK,GAAG,EAAE,CAAC;QACzB,IAAI,GAAG,KAAK,CAAA;QACZ,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,YAAY,CAAA;IAC/C,CAAC;SAAM,IAAI,OAAO,KAAK,GAAG,EAAE,CAAC;QACzB,IAAI,GAAG,QAAQ,CAAA;QACf,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,eAAe,CAAA;IAClD,CAAC;SAAM,CAAC;QACJ,OAAM;IACV,CAAC;IAED,2BAA2B;IAC3B,qCAAqC;IAErC,IAAI,SAAS,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACvB,GAAG,CAAC,+BAA+B,CAAC,CAAA;QACpC,OAAM;IACV,CAAC;IACD,YAAY,CAAC,UAAU,CAAC,IAAI,EAAE,kBAAkB,CAAC,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA,CAAC,yCAAyC;AAEnH,CAAC","sourcesContent":["import { out } from '../../output.js'\r\nimport { RerunTestsFactory } from './listenToUser.js'\r\nimport { ReRunManager, RunType } from './reRunManager.js'\r\n\r\nexport function handleUserInput(\r\n input: string,\r\n reRunManager: ReRunManager,\r\n rerunTestsCallback: RerunTestsFactory\r\n): void {\r\n const command = input.trim().toLowerCase()\r\n\r\n //console.log('command', command)\r\n\r\n //console.log('watchRunState.activeRuns', watchRunState.activeRuns)\r\n // if (rerunManager.watchRunState.activeRuns > 0) return\r\n\r\n let type: RunType\r\n let testFiles: Set<string>\r\n if (command === 'r' || command === 'l') {\r\n type = 'last'\r\n testFiles = reRunManager.state.lastTestFiles\r\n } else if (command === 'a') {\r\n type = 'all'\r\n testFiles = reRunManager.state.allTestFiles\r\n } else if (command === 'f') {\r\n type = 'failed'\r\n testFiles = reRunManager.state.failedTestFiles\r\n } else {\r\n return\r\n }\r\n\r\n //console.log('type', type)\r\n //console.log('testFiles', testFiles)\r\n\r\n if (testFiles.size === 0) {\r\n out('No suitable test files to run')\r\n return\r\n }\r\n reRunManager.requestRun(type, rerunTestsCallback(new Set(testFiles))) /// CHECK is it appropriate to copy here?\r\n \r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"injectProperties.js","sourceRoot":"","sources":["../../../src/cli/lib/injectProperties.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,IAAI,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAG5D,MAAM,UAAU,gBAAgB,CAC5B,WAAoB,EAAE,gBAA6B,EAAE,IAAY,EAAE,SAAiB;IAEpF,MAAM,GAAG,GAAG,SAAS,IAAI,OAAO,CAAA;IAEhC,KAAK,MAAM,GAAG,IAAI,gBAAgB,EAAE,CAAC;QACjC,IAAI,kBAAkB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACnC,GAAG,CAAC,eAAe,GAAG,oDAAoD,IAAI,IAAI,CAAC,CAAA;QACvF,CAAC;IACL,CAAC;AACL,CAAC"}
|
|
1
|
+
{"version":3,"file":"injectProperties.js","sourceRoot":"","sources":["../../../src/cli/lib/injectProperties.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,IAAI,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAG5D,MAAM,UAAU,gBAAgB,CAC5B,WAAoB,EAAE,gBAA6B,EAAE,IAAY,EAAE,SAAiB;IAEpF,MAAM,GAAG,GAAG,SAAS,IAAI,OAAO,CAAA;IAEhC,KAAK,MAAM,GAAG,IAAI,gBAAgB,EAAE,CAAC;QACjC,IAAI,kBAAkB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACnC,GAAG,CAAC,eAAe,GAAG,oDAAoD,IAAI,IAAI,CAAC,CAAA;QACvF,CAAC;IACL,CAAC;AACL,CAAC","sourcesContent":["import { out as mainOut } from '../../output.js'\nimport { reservedExportKeys } from './reservedExportKeys.js'\nimport type { OutFn, TaskExports } from '../../types.js'\n\nexport function injectProperties(\n basePackage: unknown, injectProperties: TaskExports, from: string, customOut?: OutFn\n): void {\n const out = customOut ?? mainOut\n\n for (const key in injectProperties) {\n if (reservedExportKeys.includes(key)) {\n out(`Error: key '${key}' is reserved. Please do not use this key. From '${from}'.`)\n }\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isTest.js","sourceRoot":"","sources":["../../../src/cli/lib/isTest.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAA"}
|
|
1
|
+
{"version":3,"file":"isTest.js","sourceRoot":"","sources":["../../../src/cli/lib/isTest.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAA","sourcesContent":["\r\n\r\nexport const isTest = (process.env.NODE_ENV === 'test')\r\n"]}
|
|
@@ -37,7 +37,12 @@ rerunManager, rerunTestsCallback, ttyActionsOnKeypress = false, initialTestRun,
|
|
|
37
37
|
//console.log('keypress', keypressInput)
|
|
38
38
|
if (key.ctrl === true && key.name === 'c') {
|
|
39
39
|
restoreRawMode();
|
|
40
|
-
process.kill(process.pid, 'SIGINT')
|
|
40
|
+
// process.kill(process.pid, 'SIGINT') terminates unconditionally on Windows
|
|
41
|
+
// rather than raising the event, which skips the shutdown handlers and so
|
|
42
|
+
// skips the user's teardown. Emitting reaches them on every platform.
|
|
43
|
+
// Nothing listening means nobody will exit for us, so do it here.
|
|
44
|
+
if (!process.emit('SIGINT', 'SIGINT'))
|
|
45
|
+
process.exit(130);
|
|
41
46
|
return;
|
|
42
47
|
}
|
|
43
48
|
handleUserInput(keypressInput, rerunManager, rerunTestsCallback);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"listenToUser.js","sourceRoot":"","sources":["../../../src/cli/lib/listenToUser.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAY,MAAM,eAAe,CAAA;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAGtD,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAA;AAKrC,MAAM,CAAC,KAAK,UAAU,YAAY;AAC9B,4BAA4B;AAC5B,4BAA4B;AAC5B,YAA0B,EAC1B,kBAAqC,EACrC,oBAAoB,GAAG,KAAK,EAC5B,cAA8C,EAC9C,QAA2B,OAAO,CAAC,KAAK;IAGxC,gDAAgD;IAChD,+BAA+B;IAE/B,wFAAwF;IAExF,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACf,GAAG,CAAC,2CAA2C,CAAC,CAAA;QAChD,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;IAC5B,CAAC;IAED,IAAI,oBAAoB,EAAE,CAAC;QAEvB,qCAAqC;QAErC,kBAAkB,CAAC,KAAK,CAAC,CAAA;QAEzB,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAA;QAC1B,MAAM,cAAc,GAAG,GAAS,EAAE;YAC9B,+BAA+B;YAC/B,IAAI,KAAK,CAAC,KAAK,KAAK,MAAM;gBAAE,OAAM;YAClC,IAAI,CAAC;gBACD,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;YAC5B,CAAC;YAAC,MAAM,CAAC;gBACL,qEAAqE;YACzE,CAAC;QACL,CAAC,CAAA;QAED,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;QACtB,KAAK,CAAC,MAAM,EAAE,CAAA;QACd,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAA;QACnC,IAAI,KAAK,KAAK,OAAO,CAAC,KAAK;YAAE,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;QAEjE,KAAK,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,aAAqB,EAAE,GAAQ,EAAE,EAAE;YACrD,wCAAwC;YACxC,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;gBACxC,cAAc,EAAE,CAAA;gBAChB,
|
|
1
|
+
{"version":3,"file":"listenToUser.js","sourceRoot":"","sources":["../../../src/cli/lib/listenToUser.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAY,MAAM,eAAe,CAAA;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAGtD,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAA;AAKrC,MAAM,CAAC,KAAK,UAAU,YAAY;AAC9B,4BAA4B;AAC5B,4BAA4B;AAC5B,YAA0B,EAC1B,kBAAqC,EACrC,oBAAoB,GAAG,KAAK,EAC5B,cAA8C,EAC9C,QAA2B,OAAO,CAAC,KAAK;IAGxC,gDAAgD;IAChD,+BAA+B;IAE/B,wFAAwF;IAExF,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACf,GAAG,CAAC,2CAA2C,CAAC,CAAA;QAChD,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;IAC5B,CAAC;IAED,IAAI,oBAAoB,EAAE,CAAC;QAEvB,qCAAqC;QAErC,kBAAkB,CAAC,KAAK,CAAC,CAAA;QAEzB,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAA;QAC1B,MAAM,cAAc,GAAG,GAAS,EAAE;YAC9B,+BAA+B;YAC/B,IAAI,KAAK,CAAC,KAAK,KAAK,MAAM;gBAAE,OAAM;YAClC,IAAI,CAAC;gBACD,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;YAC5B,CAAC;YAAC,MAAM,CAAC;gBACL,qEAAqE;YACzE,CAAC;QACL,CAAC,CAAA;QAED,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;QACtB,KAAK,CAAC,MAAM,EAAE,CAAA;QACd,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAA;QACnC,IAAI,KAAK,KAAK,OAAO,CAAC,KAAK;YAAE,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;QAEjE,KAAK,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,aAAqB,EAAE,GAAQ,EAAE,EAAE;YACrD,wCAAwC;YACxC,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;gBACxC,cAAc,EAAE,CAAA;gBAChB,4EAA4E;gBAC5E,0EAA0E;gBAC1E,sEAAsE;gBACtE,kEAAkE;gBAClE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;oBAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBACxD,OAAM;YACV,CAAC;YAED,eAAe,CAAC,aAAa,EAAE,YAAY,EAAE,kBAAkB,CAAC,CAAA;QACpE,CAAC,CAAC,CAAA;IACN,CAAC;SAAM,CAAC;QACJ,wCAAwC;QAExC,MAAM,SAAS,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;QAE5C,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE;YACzB,kCAAkC;YAClC,eAAe,CAAC,KAAK,EAAE,YAAY,EAAE,kBAAkB,CAAC,CAAA;QAC5D,CAAC,CAAC,CAAA;IACN,CAAC;IAED,iDAAiD;IACjD,MAAM,cAAc,CAAA;IACpB,WAAW,EAAE,CAAA;IAEb,OAAM;AACV,CAAC","sourcesContent":["\nimport { createInterface, emitKeypressEvents, type Key } from 'node:readline'\nimport { showTtyHelp } from './showTtyHelp.js'\nimport { handleUserInput } from './handleUserInput.js'\nimport { ReRunManager } from './reRunManager.js'\nimport { RunTestsPromise } from './runTests.js'\nimport { out } from '../../output.js'\n\nexport type RerunTestsFactory = (testFiles: Set<string>) => () => RunTestsPromise\n\n\nexport async function listenToUser(\n //allTestFiles: Set<string>,\n //failingTests: Set<string>,\n rerunManager: ReRunManager,\n rerunTestsCallback: RerunTestsFactory,\n ttyActionsOnKeypress = false,\n initialTestRun: Promise<boolean | null> | null,\n input: NodeJS.ReadStream = process.stdin\n): Promise<void> {\n \n //console.log('initia test run', initialTestRun)\n //console.log('listen to user')\n\n //setInterval(() => console.log('active runs: ', rerunManager.state.activeRuns), 10_000)\n\n if (!input.isTTY) {\n out('No TTY available, not receiving cli input')\n return Promise.resolve()\n }\n\n if (ttyActionsOnKeypress) {\n \n //console.log('ttyActionsOnKeypress')\n\n emitKeypressEvents(input)\n\n const wasRaw = input.isRaw\n const restoreRawMode = (): void => {\n //console.log('restoreRawMode')\n if (input.isRaw === wasRaw) return\n try {\n input.setRawMode(wasRaw)\n } catch {\n // The terminal stream may already be closed during process shutdown.\n }\n }\n\n input.setRawMode(true)\n input.resume()\n input.once('close', restoreRawMode)\n if (input === process.stdin) process.once('exit', restoreRawMode)\n\n input.on('keypress', (keypressInput: string, key: Key) => {\n //console.log('keypress', keypressInput)\n if (key.ctrl === true && key.name === 'c') {\n restoreRawMode()\n // process.kill(process.pid, 'SIGINT') terminates unconditionally on Windows\n // rather than raising the event, which skips the shutdown handlers and so\n // skips the user's teardown. Emitting reaches them on every platform.\n // Nothing listening means nobody will exit for us, so do it here.\n if (!process.emit('SIGINT', 'SIGINT')) process.exit(130)\n return\n }\n\n handleUserInput(keypressInput, rerunManager, rerunTestsCallback)\n })\n } else {\n //console.log('no ttyActionsOnKeypress')\n\n const userInput = createInterface({ input })\n\n userInput.on('line', input => {\n //console.log('line input', input)\n handleUserInput(input, rerunManager, rerunTestsCallback)\n })\n }\n\n //console.log('initialTestRun 2', initialTestRun)\n await initialTestRun\n showTtyHelp()\n\n return\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loadConfig.js","sourceRoot":"","sources":["../../../src/cli/lib/loadConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,IAAI,aAAa,EAAE,eAAe,IAAI,kBAAkB,EAAE,MAAM,8BAA8B,CAAA;AACjH,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACxF,OAAO,KAAK,MAAM,yBAAyB,CAAA;AAC3C,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAA;AAGrC,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,cAAuB;IACpD,MAAM,YAAY,GAAG,CAAC,cAAc,KAAK,SAAS,CAAC;QAC/C,CAAC,CAAC,MAAM,kBAAkB,CAAa,cAAc,CAAC;QACtD,CAAC,CAAC,MAAM,aAAa,CAAa,eAAe,EAAE,eAAe,CAAC,CAAA;IAEvE,IAAI,CAAC,YAAY,EAAE,CAAC;QAChB,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,WAAW,oBAAoB;cAC9C,qBAAqB,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;cAC/E,+CAA+C;cAC/C,kBAAkB,OAAO,wBAAwB,CAAC,CAAC,CAAA;QACzD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACnB,CAAC;IAED,OAAO,YAAY,CAAA;AACvB,CAAC"}
|
|
1
|
+
{"version":3,"file":"loadConfig.js","sourceRoot":"","sources":["../../../src/cli/lib/loadConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,IAAI,aAAa,EAAE,eAAe,IAAI,kBAAkB,EAAE,MAAM,8BAA8B,CAAA;AACjH,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACxF,OAAO,KAAK,MAAM,yBAAyB,CAAA;AAC3C,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAA;AAGrC,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,cAAuB;IACpD,MAAM,YAAY,GAAG,CAAC,cAAc,KAAK,SAAS,CAAC;QAC/C,CAAC,CAAC,MAAM,kBAAkB,CAAa,cAAc,CAAC;QACtD,CAAC,CAAC,MAAM,aAAa,CAAa,eAAe,EAAE,eAAe,CAAC,CAAA;IAEvE,IAAI,CAAC,YAAY,EAAE,CAAC;QAChB,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,WAAW,oBAAoB;cAC9C,qBAAqB,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;cAC/E,+CAA+C;cAC/C,kBAAkB,OAAO,wBAAwB,CAAC,CAAC,CAAA;QACzD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACnB,CAAC;IAED,OAAO,YAAY,CAAA;AACvB,CAAC","sourcesContent":["import { loadConfig as sxyLoadConfig, loadConfigExact as sxyLoadConfigExact } from '../../packages/loadConfig.js'\nimport { packageName, cliName, configFileNames, configLocations } from '../../config.js'\nimport chalk from '../../packages/chalk.js'\nimport { out } from '../../output.js'\nimport type { UserConfig, UserConfigInternal } from '../../types.js'\n\nexport async function loadConfig(customLocation?: string): Promise<UserConfigInternal> {\n const configOrNull = (customLocation !== undefined)\n ? await sxyLoadConfigExact<UserConfig>(customLocation)\n : await sxyLoadConfig<UserConfig>(configFileNames, configLocations)\n\n if (!configOrNull) {\n out(chalk.orange(`[${packageName}] No config found.`\n + `\\nPlease create a ${configFileNames.map(x => `${x}.js/cjs/mjs`).join(' or ')}`\n + ' file in your project root or /config folder.'\n + `\\nOr run \\`npx ${cliName} init\\` to create one.`))\n process.exit(0)\n }\n\n return configOrNull\n}\n"]}
|
|
@@ -4,6 +4,7 @@ import { createTimeProfiler } from '../../packages/timeProfiler.js';
|
|
|
4
4
|
import '../../packages/esmReload.js'; // registers the test module reload hook
|
|
5
5
|
import { showTimeProfiling } from '../../config.js';
|
|
6
6
|
import { debug } from '../../output.js';
|
|
7
|
+
import { captureLogs } from './consoleCapture.js';
|
|
7
8
|
const { timeProfileAsync } = createTimeProfiler(showTimeProfiling);
|
|
8
9
|
let loading = null;
|
|
9
10
|
let importIteration = 1;
|
|
@@ -25,36 +26,25 @@ export async function loadTestFile(config, testFile, refresh = 'refresh') {
|
|
|
25
26
|
};
|
|
26
27
|
const testFileFullUrl = 'file://' + join(projectDir, testFile);
|
|
27
28
|
const test = { file: testFile };
|
|
28
|
-
const capturingConsoleLog = config.execution.files === 'sequential';
|
|
29
29
|
//// capture console.log output
|
|
30
|
-
let previousConsoleLog;
|
|
31
30
|
const logs = [];
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
await import(testFileFullUrl);
|
|
31
|
+
await captureLogs(logs, async () => {
|
|
32
|
+
try {
|
|
33
|
+
if (refresh === 'refresh') {
|
|
34
|
+
await importFresh(testFileFullUrl);
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
await import(testFileFullUrl);
|
|
38
|
+
}
|
|
39
|
+
test.describes = global.__sxy_test_runner__?.describes ?? [];
|
|
40
|
+
test.error = false;
|
|
43
41
|
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
}
|
|
47
|
-
catch (e) {
|
|
48
|
-
test.error = `Error loading file\n${String(e)}`;
|
|
49
|
-
}
|
|
50
|
-
finally {
|
|
51
|
-
test.logs = logs;
|
|
52
|
-
//// restore previous console.log function
|
|
53
|
-
if (capturingConsoleLog && previousConsoleLog) {
|
|
54
|
-
console.log = previousConsoleLog; // eslint-disable-line no-console
|
|
42
|
+
catch (e) {
|
|
43
|
+
test.error = `Error loading file\n${String(e)}`;
|
|
55
44
|
}
|
|
56
|
-
|
|
57
|
-
|
|
45
|
+
});
|
|
46
|
+
test.logs = logs;
|
|
47
|
+
////
|
|
58
48
|
return test;
|
|
59
49
|
});
|
|
60
50
|
loading = loadPromise;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loadTestFile.js","sourceRoot":"","sources":["../../../src/cli/lib/loadTestFile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,KAAK,MAAM,yBAAyB,CAAA;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;AACnE,OAAO,6BAA6B,CAAA,CAAC,wCAAwC;AAE7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"loadTestFile.js","sourceRoot":"","sources":["../../../src/cli/lib/loadTestFile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,KAAK,MAAM,yBAAyB,CAAA;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;AACnE,OAAO,6BAA6B,CAAA,CAAC,wCAAwC;AAE7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAGjD,MAAM,EAAE,gBAAgB,EAAE,GAAG,kBAAkB,CAAC,iBAAiB,CAAC,CAAA;AAElE,IAAI,OAAO,GAA6B,IAAI,CAAA;AAE5C,IAAI,eAAe,GAAG,CAAC,CAAA;AACvB,SAAS,WAAW,CAAC,MAAc;IAC/B,OAAO,MAAM,CAAC,MAAM,GAAG,kBAAkB,eAAe,EAAE,EAAE,CAAC,CAAA;AACjE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAC9B,MAAmB,EACnB,QAAgB,EAChB,UAAgC,SAAS;IAEzC,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACnB,KAAK,CAAC,KAAK,CAAC,MAAM,CAAA,mEAAmE,CAAC,CAAA;QACtF,MAAM,OAAO,CAAA;QACb,KAAK,CAAC,KAAK,CAAC,MAAM,CAAA,iDAAiD,CAAC,CAAA;IACxE,CAAC;IAED,MAAM,WAAW,GAAG,gBAAgB,CAAC,aAAa,QAAQ,EAAE,EAAE,KAAK,IAAI,EAAE;QACrE,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;QAEhC,qCAAqC;QACrC,MAAM,CAAC,mBAAmB,GAAG;YACzB,SAAS,EAAE,EAAE;YACb,eAAe,EAAE,CAAC;SACrB,CAAA;QAED,MAAM,eAAe,GAAG,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;QAE9D,MAAM,IAAI,GAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAA;QAEzC,+BAA+B;QAC/B,MAAM,IAAI,GAAgB,EAAE,CAAA;QAC5B,MAAM,WAAW,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE;YAC/B,IAAI,CAAC;gBACD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;oBACxB,MAAM,WAAW,CAAC,eAAe,CAAC,CAAA;gBACtC,CAAC;qBAAM,CAAC;oBACJ,MAAM,MAAM,CAAC,eAAe,CAAC,CAAA;gBACjC,CAAC;gBACD,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,mBAAmB,EAAE,SAAS,IAAI,EAAE,CAAA;gBAC5D,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;YACtB,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACT,IAAI,CAAC,KAAK,GAAG,uBAAuB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAA;YACnD,CAAC;QACL,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI;QAEJ,OAAO,IAAI,CAAA;IACf,CAAC,CAAC,CAAA;IAEF,OAAO,GAAG,WAAW,CAAA;IAErB,OAAO,MAAM,WAAW,CAAA;AAC5B,CAAC","sourcesContent":["import { join } from 'path'\nimport chalk from '../../packages/chalk.js'\nimport { createTimeProfiler } from '../../packages/timeProfiler.js'\nimport '../../packages/esmReload.js' // registers the test module reload hook\n\nimport { showTimeProfiling } from '../../config.js'\nimport { debug } from '../../output.js'\nimport { captureLogs } from './consoleCapture.js'\nimport type { FinalConfig, TestFile } from '../../types.js'\n\nconst { timeProfileAsync } = createTimeProfiler(showTimeProfiling)\n\nlet loading: Promise<TestFile> | null = null\n\nlet importIteration = 1\nfunction importFresh(target: string): Promise<unknown> {\n return import(target + `?sxyt-instance=${importIteration++}`)\n}\n\nexport async function loadTestFile(\n config: FinalConfig,\n testFile: string,\n refresh: 'refresh' | 'cached' = 'refresh'\n): Promise<TestFile> {\n if (loading !== null) {\n debug(chalk.yellow`loadTestFile - another file is loading - waiting for it to finish`)\n await loading\n debug(chalk.yellow`previous file complete - will now load the file`)\n }\n\n const loadPromise = timeProfileAsync(`load test ${testFile}`, async () => {\n const projectDir = process.cwd()\n\n // eslint-disable-next-line camelcase\n global.__sxy_test_runner__ = {\n describes: [],\n describeCounter: 1\n }\n\n const testFileFullUrl = 'file://' + join(projectDir, testFile)\n\n const test: TestFile = { file: testFile }\n\n //// capture console.log output\n const logs: unknown[][] = []\n await captureLogs(logs, async () => {\n try {\n if (refresh === 'refresh') {\n await importFresh(testFileFullUrl)\n } else {\n await import(testFileFullUrl)\n }\n test.describes = global.__sxy_test_runner__?.describes ?? []\n test.error = false\n } catch (e) {\n test.error = `Error loading file\\n${String(e)}`\n }\n })\n test.logs = logs\n ////\n\n return test\n })\n\n loading = loadPromise\n\n return await loadPromise\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"makeWatchRunState.js","sourceRoot":"","sources":["../../../src/cli/lib/makeWatchRunState.ts"],"names":[],"mappings":"AAcA,gBAAgB;AAEhB,MAAM,UAAU,mBAAmB,CAAC,YAAuB,EAAE;IACzD,MAAM,CAAC,GAAG;QACN,YAAY,EAAE,IAAI,GAAW;QAC7B,aAAa,EAAE,IAAI,GAAW;QAC9B,eAAe,EAAE,IAAI,GAAW;QAChC,aAAa,EAAE,IAAI,GAAW;QAC9B,UAAU,EAAE,CAAC;QACb,UAAU,EAAE,IAAI;KACnB,CAAA;IAED,IAAI,SAAS,CAAC,YAAY;QAAE,CAAC,CAAC,YAAY,GAAG,SAAS,CAAC,YAAY,CAAA;IACnE,IAAI,SAAS,CAAC,eAAe;QAAE,CAAC,CAAC,eAAe,GAAG,SAAS,CAAC,eAAe,CAAA;IAC5E,IAAI,SAAS,CAAC,aAAa;QAAE,CAAC,CAAC,aAAa,GAAG,SAAS,CAAC,aAAa,CAAA;IAEtE,OAAO,CAAC,CAAA;AACZ,CAAC"}
|
|
1
|
+
{"version":3,"file":"makeWatchRunState.js","sourceRoot":"","sources":["../../../src/cli/lib/makeWatchRunState.ts"],"names":[],"mappings":"AAcA,gBAAgB;AAEhB,MAAM,UAAU,mBAAmB,CAAC,YAAuB,EAAE;IACzD,MAAM,CAAC,GAAG;QACN,YAAY,EAAE,IAAI,GAAW;QAC7B,aAAa,EAAE,IAAI,GAAW;QAC9B,eAAe,EAAE,IAAI,GAAW;QAChC,aAAa,EAAE,IAAI,GAAW;QAC9B,UAAU,EAAE,CAAC;QACb,UAAU,EAAE,IAAI;KACnB,CAAA;IAED,IAAI,SAAS,CAAC,YAAY;QAAE,CAAC,CAAC,YAAY,GAAG,SAAS,CAAC,YAAY,CAAA;IACnE,IAAI,SAAS,CAAC,eAAe;QAAE,CAAC,CAAC,eAAe,GAAG,SAAS,CAAC,eAAe,CAAA;IAC5E,IAAI,SAAS,CAAC,aAAa;QAAE,CAAC,CAAC,aAAa,GAAG,SAAS,CAAC,aAAa,CAAA;IAEtE,OAAO,CAAC,CAAA;AACZ,CAAC","sourcesContent":["\r\n\r\nexport type Overrides = Partial<Pick<ReRunManageState, 'allTestFiles' | 'failedTestFiles' | 'lastTestFiles'>>\r\n\r\nexport type ReRunManageState = {\r\n allTestFiles: Set<string>\r\n lastTestFiles: Set<string>\r\n failedTestFiles: Set<string>\r\n untestedFiles: Set<string>\r\n activeRuns: number // N/A\r\n currentRun: Promise<boolean | null> | null // N/A - manager\r\n}\r\n\r\n\r\n// lastTestFiles\r\n\r\nexport function makeRunManagerState(overrides: Overrides = {}): ReRunManageState {\r\n const s = {\r\n allTestFiles: new Set<string>,\r\n lastTestFiles: new Set<string>,\r\n failedTestFiles: new Set<string>,\r\n untestedFiles: new Set<string>,\r\n activeRuns: 0,\r\n currentRun: null,\r\n }\r\n\r\n if (overrides.allTestFiles) s.allTestFiles = overrides.allTestFiles\r\n if (overrides.failedTestFiles) s.failedTestFiles = overrides.failedTestFiles\r\n if (overrides.lastTestFiles) s.lastTestFiles = overrides.lastTestFiles\r\n\r\n return s\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parseCommandLineArguments.js","sourceRoot":"","sources":["../../../src/cli/lib/parseCommandLineArguments.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"parseCommandLineArguments.js","sourceRoot":"","sources":["../../../src/cli/lib/parseCommandLineArguments.ts"],"names":[],"mappings":"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","sourcesContent":["// watch:\n// once:\n// // --config configLocation\n\n\nimport { reduce as objectReduce } from 'sxy-lib/objects.js'\nimport { packageName } from '../../config.js'\nimport { log } from '../../output.js'\nimport type { AllowedArguments, ParsedArguments } from '../../types.js'\n\nimport { getAllowedFlags } from './getAllowedFlags.js'\nimport chalk from '../../packages/chalk.js'\n\nexport function parseCommandLineArguments(allowedArguments: AllowedArguments): ParsedArguments {\n const allowedFlags = getAllowedFlags(allowedArguments)\n\n const returnArgs: ParsedArguments = {}\n\n for (let position = 0; position < __sxyt_commandLineArguments.length; position++) {\n const arg = __sxyt_commandLineArguments[position]\n if (arg === undefined) continue\n if (arg.slice(0, 2) === '--') {\n const longFlag = arg.slice(2)\n const allowedArgument = allowedArguments[longFlag]\n if (allowedArgument) {\n if (allowedArgument.hasValue) {\n const value = __sxyt_commandLineArguments[++position]\n if (value !== undefined) returnArgs[longFlag] = value\n } else {\n returnArgs[longFlag] = true\n }\n } else {\n log(chalk.mediumred(`[${packageName}] Unknown option --${longFlag}`))\n if (\n longFlag.length === 1\n && objectReduce(\n allowedArguments,\n (prev: boolean, _key: string, value: {\n flag?: string\n hasValue: boolean\n }) => {\n if (value.flag === longFlag) return true\n return prev\n },\n false\n )\n ) {\n log(chalk.mediumred(`I think you meant -${longFlag}`))\n }\n }\n } else if (arg.slice(0, 1) === '-') {\n const shortFlag = arg.slice(1)\n const longFlag = allowedFlags[shortFlag]\n if (longFlag !== undefined) {\n if (longFlag in returnArgs) {\n log(chalk.orange(\n `[${packageName}] Option --${longFlag} already set, being overwritten by -${shortFlag}`\n ))\n }\n\n const allowedArgument = allowedArguments[longFlag]\n if (allowedArgument?.hasValue === true) {\n const value = __sxyt_commandLineArguments[++position]\n if (value !== undefined) returnArgs[longFlag] = value\n } else {\n returnArgs[longFlag] = true\n }\n } else {\n log(chalk.mediumred(`[${packageName}] Unknown flag -${shortFlag}`))\n if (shortFlag.length > 1 && shortFlag in allowedArguments) {\n log(chalk.mediumred(`I think you meant --${shortFlag}`))\n }\n }\n }\n }\n\n return returnArgs\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parseDescribe.js","sourceRoot":"","sources":["../../../src/cli/lib/parseDescribe.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"parseDescribe.js","sourceRoot":"","sources":["../../../src/cli/lib/parseDescribe.ts"],"names":[],"mappings":"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","sourcesContent":["import { timeProfileAsync } from './timeProfier.js'\nimport { runTasks } from './runTasks.js'\nimport { addExports } from './addExports.js'\n\nimport type { FinalConfig, Describe, DescribeParcel, It, ParsedDescribe, TaskExports } from '../../types.js'\n\nexport function parseDescribe(\n config: FinalConfig,\n describe: Describe,\n itFilter?: string\n): Promise<ParsedDescribe> {\n return timeProfileAsync(`parse its from describe ${describe.thing}`, async () => {\n let itCounter = 1\n const its: It[] = []\n\n // create functions to pass back\n\n // afterDescribe\n let afterDescribeFunc: (() => void | Promise<void>) | undefined\n function afterDescribe(func: () => void | Promise<void>): void {\n if (typeof func !== 'function') {\n throw new Error('afterDescribe() error, argument passed to afterDescribe() must be a function,'\n + ` received ${typeof func}`)\n }\n afterDescribeFunc = func\n }\n\n // beforeEachTest\n let beforeEachTestFunc: (() => TaskExports | void | Promise<TaskExports | void>) | undefined\n function beforeEachTest(func: () => TaskExports | void | Promise<TaskExports | void>): void {\n if (typeof func !== 'function') {\n throw new Error('afterDescribe() error, argument passed to afterDescribe() must be a function,'\n + ` received ${typeof func}`)\n }\n beforeEachTestFunc = func\n }\n\n // afterEachTest\n let afterEachTestFunc: (() => void | Promise<void>) | undefined\n function afterEachTest(func: () => void | Promise<void>): void {\n if (typeof func !== 'function') {\n throw new Error('afterDescribe() error, argument passed to afterDescribe() must be a function,'\n + ` received ${typeof func}`)\n }\n afterEachTestFunc = func\n }\n\n // it\n function it(should: string, test: It['test']): void {\n const thisItCounter = itCounter++\n if (itFilter !== undefined && !should.toLowerCase().includes(itFilter.toLowerCase())) return\n its.push({\n counter: thisItCounter,\n should,\n test\n })\n }\n\n const beforeDescribeExports: TaskExports = {}\n await configBeforeEachDescribe(config, beforeDescribeExports)\n\n const describeParcel: DescribeParcel = { it, test: it, afterDescribe, beforeEachTest, afterEachTest }\n addExports(describeParcel, beforeDescribeExports)\n\n let error: unknown\n try {\n await describe.tests(describeParcel)\n } catch (e) {\n error = e\n }\n\n return {\n its,\n beforeDescribeExports,\n afterDescribeFunc,\n beforeEachTestFunc,\n afterEachTestFunc,\n error\n }\n })\n}\n\nasync function configBeforeEachDescribe(config: FinalConfig, exports: TaskExports): Promise<void> {\n if (config.beforeEachDescribe !== undefined) {\n const theExports = await runTasks(config.beforeEachDescribe, undefined)\n if (theExports) addExports(exports, theExports)\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reRunManager.js","sourceRoot":"","sources":["../../../src/cli/lib/reRunManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAC9B,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAA;AAGjD,OAAO,KAAK,MAAM,yBAAyB,CAAA;AAsB3C,MAAM,UAAU,gBAAgB,CAC5B,UAAkC,EAClC,KAAuB;IAGvB,IAAI,KAAK,GAAgB,EAAE,CAAA;IAC3B,IAAI,OAAO,GAAG,KAAK,CAAA;IAEnB,MAAM,MAAM,GAAG;QACX,OAAO;QACP,KAAK;KACR,CAAA;IAED,KAAK,UAAU,YAAY;QAEvB,KAAK,CAAC,kBAAkB,CAAC,CAAA;QAEzB,IAAI,OAAO;YAAE,OAAM,CAAC,wDAAwD;QAC5E,MAAM,CAAC,OAAO,GAAG,OAAO,GAAG,IAAI,CAAA,CAAC,2BAA2B;QAC3D,MAAM,UAAU,CAAA,CAAC,uBAAuB;QACxC,MAAM,CAAC,OAAO,GAAG,OAAO,GAAG,KAAK,CAAA;QAEhC,KAAK,CAAC,eAAe,CAAC,CAAA;QAEtB,oCAAoC;QACpC,KAAK,CAAC,WAAW,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAA;QAClC,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,EAAE,CAAA;QAC/B,KAAK,CAAC,WAAW,EAAE,SAAS,CAAC,CAAA;QAC7B,IAAI,SAAS,KAAK,SAAS;YAAE,OAAM;QAEnC,
|
|
1
|
+
{"version":3,"file":"reRunManager.js","sourceRoot":"","sources":["../../../src/cli/lib/reRunManager.ts"],"names":[],"mappings":"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","sourcesContent":["import { inspect } from 'util'\r\nimport { debug, log, out } from '../../output.js'\r\nimport { ReRunManageState } from './makeWatchRunState.js'\r\nimport type { RunTestsPromise } from './runTests.js'\r\nimport chalk from '../../packages/chalk.js'\r\n\r\nexport type RunType = 'auto' | 'all' | 'last' | 'failed'\r\n\r\ntype RunReqest = {\r\n type: RunType\r\n //tests: string[] | Set<string>\r\n callback: () => RunTestsPromise\r\n}\r\n\r\n//export type ReRunManager = ReturnType<typeof makeReRunManager>\r\n\r\nexport type ReRunManager = {\r\n state: ReRunManageState\r\n requestRun: (type: RunType, callback: () => RunTestsPromise) => void\r\n __test: {\r\n waiting: boolean\r\n queue: RunReqest[]\r\n }\r\n}\r\n\r\n\r\nexport function makeReRunManager(\r\n currentRun: RunTestsPromise | null,\r\n state: ReRunManageState,\r\n //callback: () => RunTestsPromise\r\n): ReRunManager {\r\n let queue: RunReqest[] = []\r\n let waiting = false\r\n\r\n const __test = {\r\n waiting,\r\n queue\r\n }\r\n\r\n async function processQueue() {\r\n \r\n debug('processing queue')\r\n\r\n if (waiting) return // do nothing if another processQueue is already waiting\r\n __test.waiting = waiting = true // mark that we are waiting\r\n await currentRun // wait for current run\r\n __test.waiting = waiting = false\r\n\r\n debug('done waitinng')\r\n\r\n // see if there is a request waiting\r\n debug('the queue', inspect(queue))\r\n const runReqest = queue.shift()\r\n debug('runReqest', runReqest)\r\n if (runReqest === undefined) return\r\n\r\n switch (runReqest.type) {\r\n case 'all': {\r\n out(chalk.brightblue`re-running all tests...`)\r\n break\r\n }\r\n case 'last': {\r\n out(chalk.brightblue`re-running last tests...`)\r\n break\r\n }\r\n case 'failed': {\r\n out(chalk.brightblue`re-running failed tests...`)\r\n break\r\n }\r\n case 'auto': {\r\n out(chalk.brightblue`running tests due to file changes`)\r\n break\r\n }\r\n default: throw new Error('Unrecognised run type')\r\n }\r\n\r\n // run it and save it\r\n debug('calling', runReqest.callback.toString())\r\n currentRun = runReqest.callback()\r\n state.currentRun = currentRun\r\n // wait for the run then trigger another processQueue\r\n await currentRun\r\n // if one has already been started by a run request\r\n // then this won't start a new one. This is used to\r\n // clear a queue if it has built it\r\n processQueue().catch(err => log(`processQueue threw an error: ${err}`))\r\n }\r\n\r\n return {\r\n state,\r\n requestRun(type: RunType, callback: () => RunTestsPromise) {\r\n\r\n // if it's type auto, we only want to keep one, but\r\n // we want it to include all relevant tests when it runs\r\n\r\n // if it's a human triggered type, we'll replace other\r\n // human requests, but leave the auto, so the user\r\n // can see update to changed code that would be hidden\r\n // otherwise\r\n \r\n if (type === 'auto') {\r\n __test.queue = queue = queue.filter(x => x.type !== 'auto')\r\n queue.push({\r\n type,\r\n //tests,\r\n callback\r\n })\r\n } else {\r\n __test.queue = queue = queue.filter(x => x.type === 'auto')\r\n __test.queue = queue = [{\r\n type,\r\n //tests,\r\n callback\r\n }]\r\n }\r\n debug('added to queue', inspect(queue))\r\n // see if we can run it\r\n return processQueue() //.catch(err => log(`processQueue threw an error: ${err}`))\r\n },\r\n __test\r\n }\r\n}\r\n\r\n\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reservedExportKeys.js","sourceRoot":"","sources":["../../../src/cli/lib/reservedExportKeys.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAC9B,UAAU;IACV,MAAM;IACN,IAAI;IACJ,QAAQ;IACR,OAAO;IACP,YAAY;IACZ,WAAW;IACX,WAAW;IACX,UAAU;CACb,CAAA"}
|
|
1
|
+
{"version":3,"file":"reservedExportKeys.js","sourceRoot":"","sources":["../../../src/cli/lib/reservedExportKeys.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAC9B,UAAU;IACV,MAAM;IACN,IAAI;IACJ,QAAQ;IACR,OAAO;IACP,YAAY;IACZ,WAAW;IACX,WAAW;IACX,UAAU;CACb,CAAA","sourcesContent":["export const reservedExportKeys = [\n 'describe',\n 'test',\n 'it',\n 'before',\n 'after',\n 'beforeEach',\n 'afterEach',\n 'beforeAll',\n 'afterAll'\n]\n"]}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { timeProfileAsync } from './timeProfier.js';
|
|
2
2
|
import { parseDescribe } from './parseDescribe.js';
|
|
3
3
|
import { runDescribeRun } from './runDescribeRun.js';
|
|
4
|
+
import { captureLogs } from './consoleCapture.js';
|
|
4
5
|
function createDescribeErrorResult(describe, error) {
|
|
5
6
|
return {
|
|
6
7
|
counter: describe.counter,
|
|
@@ -17,32 +18,21 @@ function createDescribeErrorResult(describe, error) {
|
|
|
17
18
|
}
|
|
18
19
|
export function runDescribe(config, describe, itFilter) {
|
|
19
20
|
return timeProfileAsync(`run describe ${describe.thing}`, async () => {
|
|
20
|
-
// swapping the global console.log is only safe when nothing else can run concurrently,
|
|
21
|
-
// so every enclosing level has to be sequential too, not just this one
|
|
22
|
-
const capturingConsoleLog = config.execution.files === 'sequential'
|
|
23
|
-
&& config.execution.describes === 'sequential';
|
|
24
|
-
let previousConsoleLog;
|
|
25
21
|
const logs = [];
|
|
26
|
-
if (capturingConsoleLog) {
|
|
27
|
-
previousConsoleLog = console.log; // eslint-disable-line no-console
|
|
28
|
-
console.log = (...texts) => { logs.push(texts); }; // eslint-disable-line no-console
|
|
29
|
-
}
|
|
30
|
-
let describeResult;
|
|
31
22
|
const startTime = new Date().getTime();
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
23
|
+
const describeResult = await captureLogs(logs, async () => {
|
|
24
|
+
try {
|
|
25
|
+
const parsedDescribe = await parseDescribe(config, describe, itFilter);
|
|
26
|
+
return parsedDescribe.error !== undefined
|
|
27
|
+
? createDescribeErrorResult(describe, parsedDescribe.error)
|
|
28
|
+
: await runDescribeRun(config, describe, parsedDescribe);
|
|
29
|
+
}
|
|
30
|
+
catch (e) {
|
|
31
|
+
return createDescribeErrorResult(describe, e);
|
|
32
|
+
}
|
|
33
|
+
});
|
|
41
34
|
describeResult.time = new Date().getTime() - startTime;
|
|
42
35
|
describeResult.logs = logs;
|
|
43
|
-
if (capturingConsoleLog && previousConsoleLog) {
|
|
44
|
-
console.log = previousConsoleLog; // eslint-disable-line no-console
|
|
45
|
-
}
|
|
46
36
|
return describeResult;
|
|
47
37
|
});
|
|
48
38
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runDescribe.js","sourceRoot":"","sources":["../../../src/cli/lib/runDescribe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"runDescribe.js","sourceRoot":"","sources":["../../../src/cli/lib/runDescribe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAIjD,SAAS,yBAAyB,CAAC,QAAkB,EAAE,KAAc;IACjE,OAAO;QACH,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,CAAC,EAAE,6BAA6B;QACtC,SAAS,EAAE,EAAE;QACb,gBAAgB,EAAE;YACd,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,CAAC;SACZ;QACD,KAAK;KACR,CAAA;AACL,CAAC;AAED,MAAM,UAAU,WAAW,CACvB,MAAmB,EACnB,QAAkB,EAClB,QAAiB;IAEjB,OAAO,gBAAgB,CAAC,gBAAgB,QAAQ,CAAC,KAAK,EAAE,EAAE,KAAK,IAAI,EAAE;QACjE,MAAM,IAAI,GAAgB,EAAE,CAAA;QAE5B,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAA;QAEtC,MAAM,cAAc,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE;YACtD,IAAI,CAAC;gBACD,MAAM,cAAc,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAA;gBACtE,OAAO,cAAc,CAAC,KAAK,KAAK,SAAS;oBACrC,CAAC,CAAC,yBAAyB,CAAC,QAAQ,EAAE,cAAc,CAAC,KAAK,CAAC;oBAC3D,CAAC,CAAC,MAAM,cAAc,CAAC,MAAM,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAA;YAChE,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACT,OAAO,yBAAyB,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAA;YACjD,CAAC;QACL,CAAC,CAAC,CAAA;QAEF,cAAc,CAAC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,SAAS,CAAA;QACtD,cAAc,CAAC,IAAI,GAAG,IAAI,CAAA;QAE1B,OAAO,cAAc,CAAA;IACzB,CAAC,CAAC,CAAA;AACN,CAAC","sourcesContent":["import { timeProfileAsync } from './timeProfier.js'\nimport { parseDescribe } from './parseDescribe.js'\nimport { runDescribeRun } from './runDescribeRun.js'\nimport { captureLogs } from './consoleCapture.js'\n\nimport type { FinalConfig, Describe, DescribeResult } from '../../types.js'\n\nfunction createDescribeErrorResult(describe: Describe, error: unknown): DescribeResult {\n return {\n counter: describe.counter,\n thing: describe.thing,\n success: false,\n time: 0, // overwritten by runDescribe\n itResults: [],\n itResultsSummary: {\n total: 0,\n passes: 0\n },\n error\n }\n}\n\nexport function runDescribe(\n config: FinalConfig,\n describe: Describe,\n itFilter?: string\n): Promise<DescribeResult> {\n return timeProfileAsync(`run describe ${describe.thing}`, async () => {\n const logs: unknown[][] = []\n\n const startTime = new Date().getTime()\n\n const describeResult = await captureLogs(logs, async () => {\n try {\n const parsedDescribe = await parseDescribe(config, describe, itFilter)\n return parsedDescribe.error !== undefined\n ? createDescribeErrorResult(describe, parsedDescribe.error)\n : await runDescribeRun(config, describe, parsedDescribe)\n } catch (e) {\n return createDescribeErrorResult(describe, e)\n }\n })\n\n describeResult.time = new Date().getTime() - startTime\n describeResult.logs = logs\n\n return describeResult\n })\n}\n"]}
|