sxy-test-runner 2.4.9 → 2.4.12
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 +6 -0
- package/dist/checkMeta.js.map +1 -1
- package/dist/cli/cliTypes.d.ts +12 -0
- package/dist/cli/cliTypes.js +3 -0
- package/dist/cli/cliTypes.js.map +1 -0
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/init.js +32 -9
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/lib/addBasePath.js.map +1 -1
- package/dist/cli/lib/addExports.js +6 -1
- package/dist/cli/lib/addExports.js.map +1 -1
- package/dist/cli/lib/agentReport.d.ts +2 -1
- package/dist/cli/lib/agentReport.js.map +1 -1
- package/dist/cli/lib/alwaysCacheBust.d.ts +2 -0
- package/dist/cli/lib/alwaysCacheBust.js +3 -0
- package/dist/cli/lib/alwaysCacheBust.js.map +1 -0
- 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.js.map +1 -1
- package/dist/cli/lib/defaultConfig.js.map +1 -1
- package/dist/cli/lib/doUserSetup.js +1 -1
- package/dist/cli/lib/doUserSetup.js.map +1 -1
- package/dist/cli/lib/doUserTeardown.js +1 -1
- package/dist/cli/lib/doUserTeardown.js.map +1 -1
- package/dist/cli/lib/exitCodes.js.map +1 -1
- package/dist/cli/lib/failureEntries.d.ts +2 -1
- package/dist/cli/lib/failureEntries.js +2 -0
- package/dist/cli/lib/failureEntries.js.map +1 -1
- package/dist/cli/lib/failureLines.d.ts +2 -1
- package/dist/cli/lib/failureLines.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.d.ts +1 -1
- package/dist/cli/lib/findingTestsMessage.js.map +1 -1
- package/dist/cli/lib/getAllowedFlags.d.ts +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.d.ts +2 -2
- package/dist/cli/lib/handleUserInput.js +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.d.ts +1 -1
- package/dist/cli/lib/isTest.js +2 -1
- package/dist/cli/lib/isTest.js.map +1 -1
- package/dist/cli/lib/listenToUser.d.ts +3 -3
- package/dist/cli/lib/listenToUser.js +33 -8
- package/dist/cli/lib/listenToUser.js.map +1 -1
- package/dist/cli/lib/loadConfig.js.map +1 -1
- package/dist/cli/lib/loadTestFile.d.ts +9 -1
- package/dist/cli/lib/loadTestFile.js +0 -1
- package/dist/cli/lib/loadTestFile.js.map +1 -1
- package/dist/cli/lib/makeWatchRunState.js.map +1 -1
- package/dist/cli/lib/parseCommandLineArguments.d.ts +1 -1
- package/dist/cli/lib/parseCommandLineArguments.js.map +1 -1
- package/dist/cli/lib/parseDescribe.js +29 -9
- package/dist/cli/lib/parseDescribe.js.map +1 -1
- package/dist/cli/lib/reRunManager.d.ts +2 -2
- package/dist/cli/lib/reRunManager.js +2 -1
- package/dist/cli/lib/reRunManager.js.map +1 -1
- package/dist/cli/lib/reservedExportKeys.js.map +1 -1
- package/dist/cli/lib/resolveCommand.js.map +1 -1
- package/dist/cli/lib/runDescribe.d.ts +16 -1
- package/dist/cli/lib/runDescribe.js.map +1 -1
- package/dist/cli/lib/runDescribeRun.d.ts +2 -1
- package/dist/cli/lib/runDescribeRun.js +1 -1
- package/dist/cli/lib/runDescribeRun.js.map +1 -1
- package/dist/cli/lib/runIt.d.ts +9 -1
- package/dist/cli/lib/runIt.js +11 -7
- package/dist/cli/lib/runIt.js.map +1 -1
- package/dist/cli/lib/runTasks.d.ts +1 -1
- package/dist/cli/lib/runTasks.js +6 -4
- package/dist/cli/lib/runTasks.js.map +1 -1
- package/dist/cli/lib/runTest.d.ts +18 -1
- package/dist/cli/lib/runTest.js +3 -3
- package/dist/cli/lib/runTest.js.map +1 -1
- package/dist/cli/lib/runTests.d.ts +18 -3
- package/dist/cli/lib/runTests.js +25 -8
- package/dist/cli/lib/runTests.js.map +1 -1
- package/dist/cli/lib/showTestLoadingError.d.ts +2 -1
- package/dist/cli/lib/showTestLoadingError.js.map +1 -1
- package/dist/cli/lib/showTestResult.d.ts +2 -1
- package/dist/cli/lib/showTestResult.js +47 -44
- 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 +1 -1
- package/dist/cli/lib/shutdown.js +11 -3
- package/dist/cli/lib/shutdown.js.map +1 -1
- package/dist/cli/lib/statusFile.js.map +1 -1
- package/dist/cli/lib/stopSignal.js.map +1 -1
- 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 +3 -3
- package/dist/cli/lib/watchFilesAndRunTestsChokidar.js.map +1 -1
- package/dist/cli/lib/watchFilesAndRunTestsNodeWatch.d.ts +5 -3
- package/dist/cli/lib/watchFilesAndRunTestsNodeWatch.js +19 -12
- package/dist/cli/lib/watchFilesAndRunTestsNodeWatch.js.map +1 -1
- package/dist/cli/lib/watchFilesChokidar.d.ts +1 -3
- package/dist/cli/lib/watchFilesChokidar.js +52 -43
- package/dist/cli/lib/watchFilesChokidar.js.map +1 -1
- package/dist/cli/lib/watchFilesNodeWatch.d.ts +2 -3
- package/dist/cli/lib/watchFilesNodeWatch.js +3 -3
- package/dist/cli/lib/watchFilesNodeWatch.js.map +1 -1
- package/dist/cli/once.js +5 -2
- package/dist/cli/once.js.map +1 -1
- package/dist/cli/version.js.map +1 -1
- package/dist/cli/watch.d.ts +2 -0
- package/dist/cli/watch.js +48 -20
- package/dist/cli/watch.js.map +1 -1
- package/dist/config.js +2 -9
- package/dist/config.js.map +1 -1
- package/dist/describe.js +1 -1
- package/dist/describe.js.map +1 -1
- package/dist/envFlag.d.ts +2 -0
- package/dist/envFlag.js +14 -0
- package/dist/envFlag.js.map +1 -0
- package/dist/indexNumberToLetters.js.map +1 -1
- package/dist/meta.js.map +1 -1
- package/dist/output.js +2 -0
- 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.d.ts +13 -81
- package/dist/types.js.map +1 -1
- package/package.json +5 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"findingTestsMessage.js","sourceRoot":"","sources":["../../../src/cli/lib/findingTestsMessage.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"findingTestsMessage.js","sourceRoot":"","sources":["../../../src/cli/lib/findingTestsMessage.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,yBAAyB,CAAA;AAC3C,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 type { FinalConfig } from '../../types.js'\r\nimport chalk from '../../packages/chalk.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"]}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type { AllowedArguments, AllowedFlags } from '
|
|
1
|
+
import type { AllowedArguments, AllowedFlags } from '../cliTypes.js';
|
|
2
2
|
export declare function getAllowedFlags(allowedArguments: AllowedArguments): AllowedFlags;
|
|
3
3
|
//# sourceMappingURL=getAllowedFlags.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getAllowedFlags.js","sourceRoot":"","sources":["../../../src/cli/lib/getAllowedFlags.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"getAllowedFlags.js","sourceRoot":"","sources":["../../../src/cli/lib/getAllowedFlags.ts"],"names":[],"mappings":"AAIA,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":["\nimport type { AllowedArguments, AllowedFlags } from '../cliTypes.js'\n\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":"
|
|
1
|
+
{"version":3,"file":"globArgCombine.js","sourceRoot":"","sources":["../../../src/cli/lib/globArgCombine.ts"],"names":[],"mappings":"AAIA,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":["\nimport type { GlobPattern } from '../../types.js'\n\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,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import type { ReRunManager } from './reRunManager.js';
|
|
2
|
+
import type { RerunTestsFactory } from './listenToUser.js';
|
|
3
3
|
export declare function handleUserInput(input: string, reRunManager: ReRunManager, rerunTestsCallback: RerunTestsFactory): void;
|
|
4
4
|
//# sourceMappingURL=handleUserInput.d.ts.map
|
|
@@ -27,6 +27,6 @@ export function handleUserInput(input, reRunManager, rerunTestsCallback) {
|
|
|
27
27
|
out('No suitable test files to run');
|
|
28
28
|
return;
|
|
29
29
|
}
|
|
30
|
-
reRunManager.requestRun(type, rerunTestsCallback(new Set(testFiles))); /// CHECK is it appropriate to copy here?
|
|
30
|
+
void reRunManager.requestRun(type, rerunTestsCallback(new Set(testFiles))); /// CHECK is it appropriate to copy here?
|
|
31
31
|
}
|
|
32
32
|
//# sourceMappingURL=handleUserInput.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handleUserInput.js","sourceRoot":"","sources":["../../../src/cli/lib/handleUserInput.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"handleUserInput.js","sourceRoot":"","sources":["../../../src/cli/lib/handleUserInput.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAA;AAGrC,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,KAAK,YAAY,CAAC,UAAU,CAAC,IAAI,EAAE,kBAAkB,CAAC,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA,CAAC,yCAAyC;AAExH,CAAC","sourcesContent":["\r\nimport type { ReRunManager, RunType } from './reRunManager.js'\r\nimport type { RerunTestsFactory } from './listenToUser.js'\r\nimport { out } from '../../output.js'\r\n\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 void 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":"
|
|
1
|
+
{"version":3,"file":"injectProperties.js","sourceRoot":"","sources":["../../../src/cli/lib/injectProperties.ts"],"names":[],"mappings":"AAEA,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":["\nimport type { OutFn, TaskExports } from '../../types.js'\nimport { out as mainOut } from '../../output.js'\nimport { reservedExportKeys } from './reservedExportKeys.js'\n\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"]}
|
package/dist/cli/lib/isTest.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export
|
|
1
|
+
export {};
|
|
2
2
|
//# sourceMappingURL=isTest.d.ts.map
|
package/dist/cli/lib/isTest.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isTest.js","sourceRoot":"","sources":["../../../src/cli/lib/isTest.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"isTest.js","sourceRoot":"","sources":["../../../src/cli/lib/isTest.ts"],"names":[],"mappings":";AACA,yDAAyD","sourcesContent":["\r\n//export const isTest = (process.env.NODE_ENV === 'test')\r\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { ReRunManager } from './reRunManager.js';
|
|
2
|
-
import { RunTestsPromise } from './runTests.js';
|
|
3
1
|
import type { OutFn } from '../../types.js';
|
|
2
|
+
import { type ReRunManager } from './reRunManager.js';
|
|
3
|
+
import type { RunTestsPromise } from './runTests.js';
|
|
4
4
|
export type RerunTestsFactory = (testFiles: Set<string>) => () => RunTestsPromise;
|
|
5
|
-
export declare function listenToUser(rerunManager: ReRunManager, rerunTestsCallback: RerunTestsFactory, ttyActionsOnKeypress: boolean | undefined, initialTestRun: Promise<boolean | null> | null, input?: NodeJS.ReadStream, customOut?: OutFn):
|
|
5
|
+
export declare function listenToUser(rerunManager: ReRunManager, rerunTestsCallback: RerunTestsFactory, ttyActionsOnKeypress: boolean | undefined, initialTestRun: Promise<boolean | null> | null, input?: NodeJS.ReadStream, customOut?: OutFn): () => void;
|
|
6
6
|
//# sourceMappingURL=listenToUser.d.ts.map
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { createInterface, emitKeypressEvents } from 'node:readline';
|
|
2
2
|
import { showTtyHelp } from './showTtyHelp.js';
|
|
3
3
|
import { handleUserInput } from './handleUserInput.js';
|
|
4
|
-
import { out as mainOut } from '../../output.js';
|
|
5
|
-
export
|
|
4
|
+
import { out as mainOut, error as printError } from '../../output.js';
|
|
5
|
+
export function listenToUser(
|
|
6
6
|
//allTestFiles: Set<string>,
|
|
7
7
|
//failingTests: Set<string>,
|
|
8
8
|
rerunManager, rerunTestsCallback, ttyActionsOnKeypress = false, initialTestRun, input = process.stdin, customOut) {
|
|
@@ -12,9 +12,11 @@ rerunManager, rerunTestsCallback, ttyActionsOnKeypress = false, initialTestRun,
|
|
|
12
12
|
//console.log('initia test run', initialTestRun)
|
|
13
13
|
//console.log('listen to user')
|
|
14
14
|
//setInterval(() => console.log('active runs: ', rerunManager.state.activeRuns), 10_000)
|
|
15
|
+
// set by whichever branch attaches listeners below
|
|
16
|
+
let disposeInput = () => { };
|
|
15
17
|
if (!input.isTTY) {
|
|
16
18
|
out('No TTY available, not receiving cli input');
|
|
17
|
-
return
|
|
19
|
+
return () => { };
|
|
18
20
|
}
|
|
19
21
|
if (ttyActionsOnKeypress) {
|
|
20
22
|
//console.log('ttyActionsOnKeypress')
|
|
@@ -36,7 +38,7 @@ rerunManager, rerunTestsCallback, ttyActionsOnKeypress = false, initialTestRun,
|
|
|
36
38
|
input.once('close', restoreRawMode);
|
|
37
39
|
if (input === process.stdin)
|
|
38
40
|
process.once('exit', restoreRawMode);
|
|
39
|
-
|
|
41
|
+
const onKeypress = (keypressInput, key) => {
|
|
40
42
|
//console.log('keypress', keypressInput)
|
|
41
43
|
if (key.ctrl === true && key.name === 'c') {
|
|
42
44
|
restoreRawMode();
|
|
@@ -49,7 +51,17 @@ rerunManager, rerunTestsCallback, ttyActionsOnKeypress = false, initialTestRun,
|
|
|
49
51
|
return;
|
|
50
52
|
}
|
|
51
53
|
handleUserInput(keypressInput, rerunManager, rerunTestsCallback);
|
|
52
|
-
}
|
|
54
|
+
};
|
|
55
|
+
input.on('keypress', onKeypress);
|
|
56
|
+
disposeInput = () => {
|
|
57
|
+
input.off('keypress', onKeypress);
|
|
58
|
+
// a `once` listener that never fired is still attached
|
|
59
|
+
input.off('close', restoreRawMode);
|
|
60
|
+
process.off('exit', restoreRawMode);
|
|
61
|
+
restoreRawMode();
|
|
62
|
+
// undoes the resume above, so stdin stops holding the event loop open
|
|
63
|
+
input.pause();
|
|
64
|
+
};
|
|
53
65
|
}
|
|
54
66
|
else {
|
|
55
67
|
//console.log('no ttyActionsOnKeypress')
|
|
@@ -58,10 +70,23 @@ rerunManager, rerunTestsCallback, ttyActionsOnKeypress = false, initialTestRun,
|
|
|
58
70
|
//console.log('line input', input)
|
|
59
71
|
handleUserInput(input, rerunManager, rerunTestsCallback);
|
|
60
72
|
});
|
|
73
|
+
disposeInput = () => {
|
|
74
|
+
// close() takes readline's own data/end/error listeners off the stream
|
|
75
|
+
userInput.close();
|
|
76
|
+
input.pause();
|
|
77
|
+
};
|
|
61
78
|
}
|
|
79
|
+
let stopped = false;
|
|
62
80
|
//console.log('initialTestRun 2', initialTestRun)
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
81
|
+
initialTestRun
|
|
82
|
+
?.then(() => { if (!stopped)
|
|
83
|
+
showTtyHelp(input.isTTY, out); }, e => printError('Error in initial test run', e))
|
|
84
|
+
.catch(e => { printError('Error showing TTY help', e); });
|
|
85
|
+
return () => {
|
|
86
|
+
if (!stopped) {
|
|
87
|
+
stopped = true;
|
|
88
|
+
disposeInput();
|
|
89
|
+
}
|
|
90
|
+
};
|
|
66
91
|
}
|
|
67
92
|
//# sourceMappingURL=listenToUser.js.map
|
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"listenToUser.js","sourceRoot":"","sources":["../../../src/cli/lib/listenToUser.ts"],"names":[],"mappings":"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","sourcesContent":["\nimport { createInterface, emitKeypressEvents, type Key } from 'node:readline'\n\nimport type { OutFn } from '../../types.js'\nimport { type ReRunManager } from './reRunManager.js'\nimport type { RunTestsPromise } from './runTests.js'\nimport { showTtyHelp } from './showTtyHelp.js'\nimport { handleUserInput } from './handleUserInput.js'\nimport { out as mainOut, error as printError } from '../../output.js'\n\n\nexport type RerunTestsFactory = (testFiles: Set<string>) => () => RunTestsPromise\n\nexport 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 customOut?: OutFn\n): () => void {\n // an agent spawned session has no TTY, so these notices would otherwise be the only\n // lines in agent mode that are not agent events\n const out = customOut ?? mainOut\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 // set by whichever branch attaches listeners below\n let disposeInput = (): void => {}\n\n if (!input.isTTY) {\n out('No TTY available, not receiving cli input')\n return () => {}\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 const onKeypress = (keypressInput: string, key: Key): void => {\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 input.on('keypress', onKeypress)\n\n disposeInput = () => {\n input.off('keypress', onKeypress)\n // a `once` listener that never fired is still attached\n input.off('close', restoreRawMode)\n process.off('exit', restoreRawMode)\n restoreRawMode()\n // undoes the resume above, so stdin stops holding the event loop open\n input.pause()\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 disposeInput = () => {\n // close() takes readline's own data/end/error listeners off the stream\n userInput.close()\n input.pause()\n }\n }\n\n let stopped = false\n\n //console.log('initialTestRun 2', initialTestRun)\n initialTestRun\n ?.then(\n () => { if (!stopped) showTtyHelp(input.isTTY, out) },\n e => printError('Error in initial test run', e)\n )\n .catch(e => { printError('Error showing TTY help', e) })\n\n return () => {\n if (!stopped) {\n stopped = true\n disposeInput()\n }\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loadConfig.js","sourceRoot":"","sources":["../../../src/cli/lib/loadConfig.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"loadConfig.js","sourceRoot":"","sources":["../../../src/cli/lib/loadConfig.ts"],"names":[],"mappings":"AAEA,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":["\nimport type { UserConfig, UserConfigInternal } from '../../types.js'\nimport { 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'\n\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"]}
|
|
@@ -1,4 +1,12 @@
|
|
|
1
|
+
import type { Describe, FinalConfig } from '../../types.js';
|
|
2
|
+
import type { FileMeta } from '../../meta.js';
|
|
1
3
|
import '../../packages/esmReload.js';
|
|
2
|
-
|
|
4
|
+
export type TestFile = {
|
|
5
|
+
file: string;
|
|
6
|
+
describes?: Describe[];
|
|
7
|
+
meta?: FileMeta;
|
|
8
|
+
error?: string | false;
|
|
9
|
+
logs?: unknown[][];
|
|
10
|
+
};
|
|
3
11
|
export declare function loadTestFile(config: FinalConfig, testFile: string, refresh?: 'refresh' | 'cached'): Promise<TestFile>;
|
|
4
12
|
//# sourceMappingURL=loadTestFile.d.ts.map
|
|
@@ -19,7 +19,6 @@ export async function loadTestFile(config, testFile, refresh = 'refresh') {
|
|
|
19
19
|
}
|
|
20
20
|
const loadPromise = timeProfileAsync(`load test ${testFile}`, async () => {
|
|
21
21
|
const projectDir = process.cwd();
|
|
22
|
-
// eslint-disable-next-line camelcase
|
|
23
22
|
global.__sxy_test_runner__ = {
|
|
24
23
|
describes: [],
|
|
25
24
|
describeCounter: 1
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loadTestFile.js","sourceRoot":"","sources":["../../../src/cli/lib/loadTestFile.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"loadTestFile.js","sourceRoot":"","sources":["../../../src/cli/lib/loadTestFile.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAI3B,OAAO,KAAK,MAAM,yBAAyB,CAAA;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;AACnE,OAAO,6BAA6B,CAAA,CAAC,wCAAwC;AAC7E,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;AAUlE,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,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,IAAI,GAAG,MAAM,CAAC,mBAAmB,EAAE,QAAQ,CAAA;gBAChD,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":["\nimport { join } from 'path'\n\nimport type { Describe, FinalConfig } from '../../types.js'\nimport type { FileMeta } from '../../meta.js'\nimport chalk from '../../packages/chalk.js'\nimport { createTimeProfiler } from '../../packages/timeProfiler.js'\nimport '../../packages/esmReload.js' // registers the test module reload hook\nimport { showTimeProfiling } from '../../config.js'\nimport { debug } from '../../output.js'\nimport { captureLogs } from './consoleCapture.js'\n\n\nconst { timeProfileAsync } = createTimeProfiler(showTimeProfiling)\n\nexport type TestFile = {\n file: string\n describes?: Describe[]\n meta?: FileMeta\n error?: string | false\n logs?: unknown[][]\n}\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 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.meta = global.__sxy_test_runner__?.fileMeta\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":"
|
|
1
|
+
{"version":3,"file":"makeWatchRunState.js","sourceRoot":"","sources":["../../../src/cli/lib/makeWatchRunState.ts"],"names":[],"mappings":"AAaA,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\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,3 +1,3 @@
|
|
|
1
|
-
import type { AllowedArguments, ParsedArguments } from '
|
|
1
|
+
import type { AllowedArguments, ParsedArguments } from '../cliTypes.js';
|
|
2
2
|
export declare function parseCommandLineArguments(allowedArguments: AllowedArguments): ParsedArguments;
|
|
3
3
|
//# sourceMappingURL=parseCommandLineArguments.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parseCommandLineArguments.js","sourceRoot":"","sources":["../../../src/cli/lib/parseCommandLineArguments.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"parseCommandLineArguments.js","sourceRoot":"","sources":["../../../src/cli/lib/parseCommandLineArguments.ts"],"names":[],"mappings":"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","sourcesContent":["\n// watch:\n// once:\n// // --config configLocation\n\n\nimport { reduce as objectReduce } from 'sxy-lib/objects.js'\n\nimport type { AllowedArguments, ParsedArguments } from '../cliTypes.js'\nimport { packageName, cliName } from '../../config.js'\nimport { log } from '../../output.js'\nimport { exitCodes } from './exitCodes.js'\nimport { getAllowedFlags } from './getAllowedFlags.js'\nimport chalk from '../../packages/chalk.js'\n\n\nexport function parseCommandLineArguments(allowedArguments: AllowedArguments): ParsedArguments {\n const allowedFlags = getAllowedFlags(allowedArguments)\n\n const returnArgs: ParsedArguments = {}\n // collected rather than reported one at a time, so a mistyped command line is fixed in\n // one go rather than one option per run\n const unknownArgs: string[] = []\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 unknownArgs.push(`--${longFlag}`)\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 unknownArgs.push(`-${shortFlag}`)\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 // stop rather than run something other than what was asked for: an ignored option can\n // mean the wrong tests, or a whole suite where a single filtered test was wanted\n if (unknownArgs.length > 0) {\n log(chalk.orange(`Run \\`${cliName} help\\` to see the available options.`))\n process.exit(exitCodes.usageError)\n }\n\n return returnArgs\n}\n"]}
|
|
@@ -1,6 +1,20 @@
|
|
|
1
1
|
import { timeProfileAsync } from './timeProfier.js';
|
|
2
2
|
import { runTasks } from './runTasks.js';
|
|
3
3
|
import { addExports } from './addExports.js';
|
|
4
|
+
class SxytNotAFunctionError extends Error {
|
|
5
|
+
name = 'SxytNotAFunctionError';
|
|
6
|
+
}
|
|
7
|
+
class SxytAlreadyDefinedError extends Error {
|
|
8
|
+
name = 'SxytAlreadyDefinedError';
|
|
9
|
+
}
|
|
10
|
+
function throwMustBeAFunctionError(fname, func) {
|
|
11
|
+
throw new SxytNotAFunctionError(`${fname}() error, argument passed to ${fname}() must be a function,`
|
|
12
|
+
+ ` received ${typeof func}`);
|
|
13
|
+
}
|
|
14
|
+
function throwAlreadyDefinedError(fname) {
|
|
15
|
+
throw new SxytAlreadyDefinedError(`${fname}() error, ${fname} function is already defined.`
|
|
16
|
+
+ ' Only one function is permitted');
|
|
17
|
+
}
|
|
4
18
|
export function parseDescribe(config, describe, itFilter) {
|
|
5
19
|
return timeProfileAsync(`parse its from describe ${describe.thing}`, async () => {
|
|
6
20
|
let itCounter = 1;
|
|
@@ -10,8 +24,10 @@ export function parseDescribe(config, describe, itFilter) {
|
|
|
10
24
|
let afterDescribeFunc;
|
|
11
25
|
function afterDescribe(func) {
|
|
12
26
|
if (typeof func !== 'function') {
|
|
13
|
-
|
|
14
|
-
|
|
27
|
+
throwMustBeAFunctionError('afterDescribe', func);
|
|
28
|
+
}
|
|
29
|
+
if (afterDescribeFunc !== undefined) {
|
|
30
|
+
throwAlreadyDefinedError('afterDescribe');
|
|
15
31
|
}
|
|
16
32
|
afterDescribeFunc = func;
|
|
17
33
|
}
|
|
@@ -19,8 +35,10 @@ export function parseDescribe(config, describe, itFilter) {
|
|
|
19
35
|
let beforeEachTestFunc;
|
|
20
36
|
function beforeEachTest(func) {
|
|
21
37
|
if (typeof func !== 'function') {
|
|
22
|
-
|
|
23
|
-
|
|
38
|
+
throwMustBeAFunctionError('beforeEachTest', func);
|
|
39
|
+
}
|
|
40
|
+
if (beforeEachTestFunc !== undefined) {
|
|
41
|
+
throwAlreadyDefinedError('beforeEachTest');
|
|
24
42
|
}
|
|
25
43
|
beforeEachTestFunc = func;
|
|
26
44
|
}
|
|
@@ -28,8 +46,10 @@ export function parseDescribe(config, describe, itFilter) {
|
|
|
28
46
|
let afterEachTestFunc;
|
|
29
47
|
function afterEachTest(func) {
|
|
30
48
|
if (typeof func !== 'function') {
|
|
31
|
-
|
|
32
|
-
|
|
49
|
+
throwMustBeAFunctionError('afterEachTest', func);
|
|
50
|
+
}
|
|
51
|
+
if (afterEachTestFunc !== undefined) {
|
|
52
|
+
throwAlreadyDefinedError('afterEachTest');
|
|
33
53
|
}
|
|
34
54
|
afterEachTestFunc = func;
|
|
35
55
|
}
|
|
@@ -47,7 +67,7 @@ export function parseDescribe(config, describe, itFilter) {
|
|
|
47
67
|
const beforeDescribeExports = {};
|
|
48
68
|
await configBeforeEachDescribe(config, beforeDescribeExports);
|
|
49
69
|
const describeParcel = { it, test: it, afterDescribe, beforeEachTest, afterEachTest };
|
|
50
|
-
addExports(describeParcel, beforeDescribeExports);
|
|
70
|
+
addExports(describeParcel, beforeDescribeExports, 'beforeEachDescribe');
|
|
51
71
|
let error;
|
|
52
72
|
try {
|
|
53
73
|
await describe.tests(describeParcel);
|
|
@@ -67,9 +87,9 @@ export function parseDescribe(config, describe, itFilter) {
|
|
|
67
87
|
}
|
|
68
88
|
async function configBeforeEachDescribe(config, exports) {
|
|
69
89
|
if (config.beforeEachDescribe !== undefined) {
|
|
70
|
-
const theExports = await runTasks(config.beforeEachDescribe, undefined);
|
|
90
|
+
const theExports = await runTasks(config.beforeEachDescribe, undefined, 'beforeEachDescribe');
|
|
71
91
|
if (theExports)
|
|
72
|
-
addExports(exports, theExports);
|
|
92
|
+
addExports(exports, theExports, 'beforeEachDescribe');
|
|
73
93
|
}
|
|
74
94
|
}
|
|
75
95
|
//# sourceMappingURL=parseDescribe.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parseDescribe.js","sourceRoot":"","sources":["../../../src/cli/lib/parseDescribe.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"parseDescribe.js","sourceRoot":"","sources":["../../../src/cli/lib/parseDescribe.ts"],"names":[],"mappings":"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","sourcesContent":["\nimport type { FinalConfig, Describe, DescribeParcel, It, ParsedDescribe, TaskExports } from '../../types.js'\nimport { timeProfileAsync } from './timeProfier.js'\nimport { runTasks } from './runTasks.js'\nimport { addExports } from './addExports.js'\n\n\nclass SxytNotAFunctionError extends Error {\n name = 'SxytNotAFunctionError'\n}\nclass SxytAlreadyDefinedError extends Error {\n name = 'SxytAlreadyDefinedError'\n}\n\nfunction throwMustBeAFunctionError(fname: string, func: unknown): never {\n throw new SxytNotAFunctionError(`${fname}() error, argument passed to ${fname}() must be a function,`\n + ` received ${typeof func}`)\n}\n\nfunction throwAlreadyDefinedError(fname: string): never {\n throw new SxytAlreadyDefinedError(`${fname}() error, ${fname} function is already defined.`\n + ' Only one function is permitted')\n}\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 throwMustBeAFunctionError('afterDescribe', func)\n }\n if (afterDescribeFunc !== undefined) {\n throwAlreadyDefinedError('afterDescribe')\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 throwMustBeAFunctionError('beforeEachTest', func)\n }\n if (beforeEachTestFunc !== undefined) {\n throwAlreadyDefinedError('beforeEachTest')\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 throwMustBeAFunctionError('afterEachTest', func)\n }\n if (afterEachTestFunc !== undefined) {\n throwAlreadyDefinedError('afterEachTest')\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, 'beforeEachDescribe')\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, 'beforeEachDescribe')\n if (theExports) addExports(exports, theExports, 'beforeEachDescribe')\n }\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ReRunManageState } from './makeWatchRunState.js';
|
|
1
|
+
import type { ReRunManageState } from './makeWatchRunState.js';
|
|
2
2
|
import type { RunTestsPromise } from './runTests.js';
|
|
3
3
|
import type { OutFn } from '../../types.js';
|
|
4
4
|
export type RunType = 'auto' | 'all' | 'last' | 'failed';
|
|
@@ -8,7 +8,7 @@ type RunReqest = {
|
|
|
8
8
|
};
|
|
9
9
|
export type ReRunManager = {
|
|
10
10
|
state: ReRunManageState;
|
|
11
|
-
requestRun: (type: RunType, callback: () => RunTestsPromise) => void
|
|
11
|
+
requestRun: (type: RunType, callback: () => RunTestsPromise) => Promise<void>;
|
|
12
12
|
__test: {
|
|
13
13
|
waiting: boolean;
|
|
14
14
|
queue: RunReqest[];
|
|
@@ -4,6 +4,7 @@ import { agentSetRunReason } from './agentReport.js';
|
|
|
4
4
|
import chalk from '../../packages/chalk.js';
|
|
5
5
|
export function makeReRunManager(currentRun, state,
|
|
6
6
|
//callback: () => RunTestsPromise
|
|
7
|
+
//concurrency: Concurrency,
|
|
7
8
|
customOut) {
|
|
8
9
|
// agent mode passes a sink - runTests reports the run instead
|
|
9
10
|
const out = customOut ?? mainOut;
|
|
@@ -86,7 +87,7 @@ customOut) {
|
|
|
86
87
|
}
|
|
87
88
|
debug('added to queue', inspect(queue));
|
|
88
89
|
// see if we can run it
|
|
89
|
-
return processQueue()
|
|
90
|
+
return processQueue().catch(err => log(`processQueue threw an error: ${err}`));
|
|
90
91
|
},
|
|
91
92
|
__test
|
|
92
93
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reRunManager.js","sourceRoot":"","sources":["../../../src/cli/lib/reRunManager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"reRunManager.js","sourceRoot":"","sources":["../../../src/cli/lib/reRunManager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAK9B,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,IAAI,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,KAAK,MAAM,yBAAyB,CAAA;AAuB3C,MAAM,UAAU,gBAAgB,CAC5B,UAAkC,EAClC,KAAuB;AACvB,iCAAiC;AACjC,2BAA2B;AAC3B,SAAiB;IAEjB,8DAA8D;IAC9D,MAAM,GAAG,GAAG,SAAS,IAAI,OAAO,CAAA;IAChC,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,6EAA6E;QAC7E,iBAAiB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QAEjC,QAAQ,SAAS,CAAC,IAAI,EAAE,CAAC;YACrB,KAAK,KAAK,CAAC,CAAC,CAAC;gBACT,GAAG,CAAC,KAAK,CAAC,UAAU,CAAA,yBAAyB,CAAC,CAAA;gBAC9C,MAAK;YACT,CAAC;YACD,KAAK,MAAM,CAAC,CAAC,CAAC;gBACV,GAAG,CAAC,KAAK,CAAC,UAAU,CAAA,0BAA0B,CAAC,CAAA;gBAC/C,MAAK;YACT,CAAC;YACD,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACZ,GAAG,CAAC,KAAK,CAAC,UAAU,CAAA,4BAA4B,CAAC,CAAA;gBACjD,MAAK;YACT,CAAC;YACD,KAAK,MAAM,CAAC,CAAC,CAAC;gBACV,GAAG,CAAC,KAAK,CAAC,UAAU,CAAA,mCAAmC,CAAC,CAAA;gBACxD,MAAK;YACT,CAAC;YACD,OAAO,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAA;QACrD,CAAC;QAED,qBAAqB;QACrB,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAA;QAC/C,UAAU,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAA;QACjC,KAAK,CAAC,UAAU,GAAG,UAAU,CAAA;QAC7B,qDAAqD;QACrD,MAAM,UAAU,CAAA;QAChB,mDAAmD;QACnD,mDAAmD;QACnD,mCAAmC;QACnC,YAAY,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,gCAAgC,GAAG,EAAE,CAAC,CAAC,CAAA;IAC3E,CAAC;IAED,OAAO;QACH,KAAK;QACL,UAAU,CAAC,IAAa,EAAE,QAA+B;YAErD,mDAAmD;YACnD,wDAAwD;YAExD,sDAAsD;YACtD,kDAAkD;YAClD,sDAAsD;YACtD,YAAY;YAEZ,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;gBAClB,MAAM,CAAC,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAA;gBAC3D,KAAK,CAAC,IAAI,CAAC;oBACP,IAAI;oBACJ,QAAQ;oBACR,QAAQ;iBACX,CAAC,CAAA;YACN,CAAC;iBAAM,CAAC;gBACJ,MAAM,CAAC,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAA;gBAC3D,MAAM,CAAC,KAAK,GAAG,KAAK,GAAG,CAAC;wBACpB,IAAI;wBACJ,QAAQ;wBACR,QAAQ;qBACX,CAAC,CAAA;YACN,CAAC;YACD,KAAK,CAAC,gBAAgB,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAA;YACvC,uBAAuB;YACvB,OAAO,YAAY,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,gCAAgC,GAAG,EAAE,CAAC,CAAC,CAAA;QAClF,CAAC;QACD,MAAM;KACT,CAAA;AACL,CAAC","sourcesContent":["\nimport { inspect } from 'util'\n\nimport type { ReRunManageState } from './makeWatchRunState.js'\nimport type { RunTestsPromise } from './runTests.js'\nimport type { OutFn } from '../../types.js'\nimport { debug, log, out as mainOut } from '../../output.js'\nimport { agentSetRunReason } from './agentReport.js'\nimport chalk from '../../packages/chalk.js'\n\n\nexport type RunType = 'auto' | 'all' | 'last' | 'failed'\n\ntype RunReqest = {\n type: RunType\n //tests: string[] | Set<string>\n callback: () => RunTestsPromise\n}\n\n//export type ReRunManager = ReturnType<typeof makeReRunManager>\n\nexport type ReRunManager = {\n state: ReRunManageState\n requestRun: (type: RunType, callback: () => RunTestsPromise) => Promise<void>\n __test: {\n waiting: boolean\n queue: RunReqest[]\n }\n}\n\n\nexport function makeReRunManager(\n currentRun: RunTestsPromise | null,\n state: ReRunManageState,\n //callback: () => RunTestsPromise\n //concurrency: Concurrency,\n customOut?: OutFn\n): ReRunManager {\n // agent mode passes a sink - runTests reports the run instead\n const out = customOut ?? mainOut\n let queue: RunReqest[] = []\n let waiting = false\n\n const __test = {\n waiting,\n queue\n }\n\n async function processQueue() {\n \n debug('processing queue')\n\n if (waiting) return // do nothing if another processQueue is already waiting\n __test.waiting = waiting = true // mark that we are waiting\n await currentRun // wait for current run\n __test.waiting = waiting = false\n\n debug('done waitinng')\n\n // see if there is a request waiting\n debug('the queue', inspect(queue))\n const runReqest = queue.shift()\n debug('runReqest', runReqest)\n if (runReqest === undefined) return\n\n // tells the run about to start why it is running, for the agent `why=` field\n agentSetRunReason(runReqest.type)\n\n switch (runReqest.type) {\n case 'all': {\n out(chalk.brightblue`re-running all tests...`)\n break\n }\n case 'last': {\n out(chalk.brightblue`re-running last tests...`)\n break\n }\n case 'failed': {\n out(chalk.brightblue`re-running failed tests...`)\n break\n }\n case 'auto': {\n out(chalk.brightblue`running tests due to file changes`)\n break\n }\n default: throw new Error('Unrecognised run type')\n }\n\n // run it and save it\n debug('calling', runReqest.callback.toString())\n currentRun = runReqest.callback()\n state.currentRun = currentRun\n // wait for the run then trigger another processQueue\n await currentRun\n // if one has already been started by a run request\n // then this won't start a new one. This is used to\n // clear a queue if it has built it\n processQueue().catch(err => log(`processQueue threw an error: ${err}`))\n }\n\n return {\n state,\n requestRun(type: RunType, callback: () => RunTestsPromise) {\n\n // if it's type auto, we only want to keep one, but\n // we want it to include all relevant tests when it runs\n\n // if it's a human triggered type, we'll replace other\n // human requests, but leave the auto, so the user\n // can see update to changed code that would be hidden\n // otherwise\n \n if (type === 'auto') {\n __test.queue = queue = queue.filter(x => x.type !== 'auto')\n queue.push({\n type,\n //tests,\n callback\n })\n } else {\n __test.queue = queue = queue.filter(x => x.type === 'auto')\n __test.queue = queue = [{\n type,\n //tests,\n callback\n }]\n }\n debug('added to queue', inspect(queue))\n // see if we can run it\n return processQueue().catch(err => log(`processQueue threw an error: ${err}`))\n },\n __test\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reservedExportKeys.js","sourceRoot":"","sources":["../../../src/cli/lib/reservedExportKeys.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"reservedExportKeys.js","sourceRoot":"","sources":["../../../src/cli/lib/reservedExportKeys.ts"],"names":[],"mappings":"AACA,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":["\nexport const reservedExportKeys = [\n 'describe',\n 'test',\n 'it',\n 'before',\n 'after',\n 'beforeEach',\n 'afterEach',\n 'beforeAll',\n 'afterAll'\n]\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolveCommand.js","sourceRoot":"","sources":["../../../src/cli/lib/resolveCommand.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"resolveCommand.js","sourceRoot":"","sources":["../../../src/cli/lib/resolveCommand.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,CAAU,CAAA;AAS7E,SAAS,SAAS,CAAC,KAAa;IAC5B,OAAQ,QAA8B,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;AAC1D,CAAC;AAED,4FAA4F;AAC5F,2FAA2F;AAC3F,uEAAuE;AACvE,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC;IAC7B,UAAU,EAAE,IAAI;IAChB,cAAc,EAAE,IAAI;IACpB,UAAU,EAAE,IAAI;IAChB,aAAa,EAAE,IAAI;IACnB,mBAAmB,EAAE,IAAI;IACzB,eAAe,EAAE,IAAI;CACxB,CAAC,CAAA;AAEF,4FAA4F;AAC5F,gDAAgD;AAChD,SAAS,mBAAmB,CAAC,WAAqB;IAC9C,KAAK,IAAI,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,WAAW,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC;QAC/D,MAAM,GAAG,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAA;QACjC,IAAI,GAAG,KAAK,SAAS;YAAE,SAAQ;QAC/B,IAAI,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B,QAAQ,EAAE,CAAA,CAAC,yCAAyC;YACpD,SAAQ;QACZ,CAAC;QACD,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI;YAAE,OAAO,MAAM,CAAA;QACnD,IAAI,GAAG,KAAK,WAAW,IAAI,GAAG,KAAK,IAAI;YAAE,OAAO,SAAS,CAAA;IAC7D,CAAC;IACD,OAAO,SAAS,CAAA;AACpB,CAAC;AAED,4FAA4F;AAC5F,wEAAwE;AACxE,MAAM,UAAU,cAAc,CAAC,IAAc;IACzC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;IAErB,IAAI,KAAK,KAAK,SAAS,IAAI,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1C,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QACjC,OAAO,EAAE,OAAO,EAAE,mBAAmB,CAAC,WAAW,CAAC,IAAI,KAAK,EAAE,WAAW,EAAE,CAAA;IAC9E,CAAC;IAED,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7E,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QACjC,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAY,CAAA;QACzC,OAAO,EAAE,OAAO,EAAE,mBAAmB,CAAC,WAAW,CAAC,IAAI,OAAO,EAAE,WAAW,EAAE,CAAA;IAChF,CAAC;IAED,8DAA8D;IAC9D,OAAO,EAAE,OAAO,EAAE,mBAAmB,CAAC,IAAI,CAAC,IAAI,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,CAAA;AAC/E,CAAC","sourcesContent":["\nexport const commands = ['init', 'once', 'watch', 'help', 'version'] as const\n\nexport type Command = typeof commands[number]\n\nexport interface ResolvedCommand {\n command: Command\n commandArgs: string[]\n}\n\nfunction isCommand(value: string): value is Command {\n return (commands as readonly string[]).includes(value)\n}\n\n// The options that consume the next argument, so `--filter-it -h` is understood as a filter\n// for \"-h\" rather than a request for help. Worst case if this drifts from the option lists\n// in watch.ts and once.ts is that such an argument shows help instead.\nconst valueTakingFlags = new Set([\n '--config', '-c',\n '--test-files', '-t',\n '--filter', '-f',\n '--filter-it', '-i',\n '--filter-describe', '-d',\n '--status-file', '-s'\n])\n\n// --help and --version describe the tool rather than asking it to do anything, so they take\n// over from whatever command they were given to\nfunction interceptingCommand(commandArgs: string[]): Command | undefined {\n for (let position = 0; position < commandArgs.length; position++) {\n const arg = commandArgs[position]\n if (arg === undefined) continue\n if (valueTakingFlags.has(arg)) {\n position++ // skip the value, whatever it looks like\n continue\n }\n if (arg === '--help' || arg === '-h') return 'help'\n if (arg === '--version' || arg === '-v') return 'version'\n }\n return undefined\n}\n\n// Routes the raw argv tail to a command. Extracted from the entry module so the routing can\n// be tested without running a command as a side effect of importing it.\nexport function resolveCommand(args: string[]): ResolvedCommand {\n const first = args[0]\n\n if (first !== undefined && isCommand(first)) {\n const commandArgs = args.slice(1)\n return { command: interceptingCommand(commandArgs) ?? first, commandArgs }\n }\n\n if (first !== undefined && first.startsWith('--') && isCommand(first.slice(2))) {\n const commandArgs = args.slice(1)\n const command = first.slice(2) as Command\n return { command: interceptingCommand(commandArgs) ?? command, commandArgs }\n }\n\n // no command given - everything is an argument to the default\n return { command: interceptingCommand(args) ?? 'watch', commandArgs: args }\n}\n"]}
|
|
@@ -1,4 +1,19 @@
|
|
|
1
|
+
import type { FinalConfig, Describe } from '../../types.js';
|
|
2
|
+
import type { ItResult } from './runIt.js';
|
|
1
3
|
import { type StopSignal } from './stopSignal.js';
|
|
2
|
-
|
|
4
|
+
export type ItResultsSummary = {
|
|
5
|
+
total: number;
|
|
6
|
+
passes: number;
|
|
7
|
+
};
|
|
8
|
+
export type DescribeResult = {
|
|
9
|
+
counter: number;
|
|
10
|
+
thing: string;
|
|
11
|
+
success: boolean | null;
|
|
12
|
+
time: number;
|
|
13
|
+
itResults: ItResult[];
|
|
14
|
+
itResultsSummary: ItResultsSummary;
|
|
15
|
+
logs?: unknown[][];
|
|
16
|
+
error?: unknown;
|
|
17
|
+
};
|
|
3
18
|
export declare function runDescribe(config: FinalConfig, describe: Describe, itFilter?: string, stop?: StopSignal): Promise<DescribeResult>;
|
|
4
19
|
//# sourceMappingURL=runDescribe.d.ts.map
|