@overkill-dev/run 0.0.10 → 0.0.11
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/engine/engine.d.ts +27 -0
- package/engine/engine.d.ts.map +1 -0
- package/engine/engine.js +40 -0
- package/engine/engine.js.map +1 -0
- package/engine/identity.d.ts +1 -1
- package/engine/identity.d.ts.map +1 -1
- package/engine/identity.js +16 -1
- package/engine/identity.js.map +1 -1
- package/engine/run-if-main.d.ts +28 -0
- package/engine/run-if-main.d.ts.map +1 -0
- package/engine/run-if-main.js +46 -0
- package/engine/run-if-main.js.map +1 -0
- package/engine/test-node.d.ts +1 -0
- package/engine/test-node.d.ts.map +1 -1
- package/engine/test-node.js +137 -0
- package/engine/test-node.js.map +1 -0
- package/engine/test-plan.d.ts +11 -1
- package/engine/test-plan.d.ts.map +1 -1
- package/engine/test-plan.js +174 -0
- package/engine/test-plan.js.map +1 -0
- package/package.json +6 -2
- package/packages/engine/engine.entry-point.js +67 -0
- package/packages/engine/engine.entry-point.js.map +1 -0
- package/packages/run/run.entry-point.d.ts +4 -2
- package/packages/run/run.entry-point.d.ts.map +1 -1
- package/packages/run/run.entry-point.js +2 -1
- package/packages/run/run.entry-point.js.map +1 -1
- package/readme.md +11 -5
- package/run/command-line-command.d.ts +1 -3
- package/run/command-line-command.d.ts.map +1 -1
- package/run/command-line-command.js +4 -1
- package/run/command-line-command.js.map +1 -1
- package/run/command-line-runner.d.ts +1 -1
- package/run/command-line-runner.d.ts.map +1 -1
- package/run/command-line-runner.js +4 -3
- package/run/command-line-runner.js.map +1 -1
- package/run/command-line-unimplemented-commands.js +1 -1
- package/run/command-line-unimplemented-commands.js.map +1 -1
- package/run/default-run-engine.js +14 -0
- package/run/default-run-engine.js.map +1 -0
- package/run/run-config.js +1 -1
- package/run/run-config.js.map +1 -1
- package/run/run-discovery.js +75 -0
- package/run/run-discovery.js.map +1 -0
- package/run/run-errors.d.ts +16 -0
- package/run/run-errors.d.ts.map +1 -0
- package/run/run-errors.js +37 -0
- package/run/run-errors.js.map +1 -0
- package/run/run-orchestrator.d.ts +3 -0
- package/run/run-orchestrator.d.ts.map +1 -0
- package/run/run-orchestrator.js +43 -0
- package/run/run-orchestrator.js.map +1 -0
- package/run/run-test-modules.js +53 -0
- package/run/run-test-modules.js.map +1 -0
- package/run/run.d.ts +8 -13
- package/run/run.d.ts.map +1 -1
- package/run/run.js +68 -70
- package/run/run.js.map +1 -1
- package/sbom.cdx.json +4 -4
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { WallClock } from '@enormora/wall-clock';
|
|
2
|
+
import type { Execute } from './execution.ts';
|
|
3
|
+
import { formatCaseId } from './identity.ts';
|
|
4
|
+
import { type RunIfMain } from './run-if-main.ts';
|
|
5
|
+
import { type RootOptions, type Suite, type SuiteOptions, type Table, type TableOptions, type TestCase, type TestCaseOptions, type TestNode, type TestRoot } from './test-node.ts';
|
|
6
|
+
import { type TestPlanFactory, type TestPlanFromTestFilesFactory } from './test-plan.ts';
|
|
7
|
+
export type Engine = {
|
|
8
|
+
readonly createRoot: (options: RootOptions) => TestRoot;
|
|
9
|
+
readonly createSuite: (options: SuiteOptions) => Suite;
|
|
10
|
+
readonly createTable: (options: TableOptions) => Table;
|
|
11
|
+
readonly createTestCase: (options: TestCaseOptions) => TestCase;
|
|
12
|
+
readonly createTestPlan: TestPlanFactory;
|
|
13
|
+
readonly createTestPlanFromTestFiles: TestPlanFromTestFilesFactory;
|
|
14
|
+
readonly execute: Execute;
|
|
15
|
+
readonly formatCaseId: typeof formatCaseId;
|
|
16
|
+
readonly ownsTestNode: (value: unknown) => value is TestNode;
|
|
17
|
+
readonly runIfMain: RunIfMain;
|
|
18
|
+
};
|
|
19
|
+
export type EngineDependencies = {
|
|
20
|
+
readonly execute: Execute;
|
|
21
|
+
readonly nodeVersion: string;
|
|
22
|
+
readonly readExitCode: () => number | string | null | undefined;
|
|
23
|
+
readonly wallClock: WallClock;
|
|
24
|
+
readonly writeExitCode: (exitCode: number) => void;
|
|
25
|
+
};
|
|
26
|
+
export declare function createEngine(dependencies: EngineDependencies): Engine;
|
|
27
|
+
//# sourceMappingURL=engine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../../source/engine/engine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAIH,KAAK,WAAW,EAChB,KAAK,KAAK,EACV,KAAK,YAAY,EACjB,KAAK,KAAK,EACV,KAAK,YAAY,EACjB,KAAK,QAAQ,EACb,KAAK,eAAe,EACpB,KAAK,QAAQ,EACb,KAAK,QAAQ,EAChB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAGH,KAAK,eAAe,EACpB,KAAK,4BAA4B,EACpC,MAAM,gBAAgB,CAAC;AAExB,MAAM,MAAM,MAAM,GAAG;IACjB,QAAQ,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,QAAQ,CAAC;IACxD,QAAQ,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,KAAK,CAAC;IACvD,QAAQ,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,KAAK,CAAC;IACvD,QAAQ,CAAC,cAAc,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,QAAQ,CAAC;IAChE,QAAQ,CAAC,cAAc,EAAE,eAAe,CAAC;IACzC,QAAQ,CAAC,2BAA2B,EAAE,4BAA4B,CAAC;IACnE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,YAAY,EAAE,OAAO,YAAY,CAAC;IAC3C,QAAQ,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,KAAK,IAAI,QAAQ,CAAC;IAC7D,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC7B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAChE,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CACtD,CAAC;AAEF,wBAAgB,YAAY,CAAC,YAAY,EAAE,kBAAkB,GAAG,MAAM,CAmCrE"}
|
package/engine/engine.js
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { formatCaseId } from "./identity.js";
|
|
2
|
+
import { createRunIfMain } from "./run-if-main.js";
|
|
3
|
+
import { createTestNodeOwner, createTestNodeFactory, isOwnedTestNode } from "./test-node.js";
|
|
4
|
+
import { createTestPlanFactory, createTestPlanFromTestFilesFactory } from "./test-plan.js";
|
|
5
|
+
export function createEngine(dependencies) {
|
|
6
|
+
const owner = createTestNodeOwner();
|
|
7
|
+
const { execute } = dependencies;
|
|
8
|
+
const constructedNodes = new Set();
|
|
9
|
+
const nodeFactory = createTestNodeFactory({
|
|
10
|
+
owner,
|
|
11
|
+
recordConstructedNode(node) {
|
|
12
|
+
constructedNodes.add(node);
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
const createTestPlan = createTestPlanFactory(owner, constructedNodes);
|
|
16
|
+
const createTestPlanFromTestFiles = createTestPlanFromTestFilesFactory(owner, nodeFactory.createRoot);
|
|
17
|
+
return {
|
|
18
|
+
createRoot: nodeFactory.createRoot,
|
|
19
|
+
createSuite: nodeFactory.createSuite,
|
|
20
|
+
createTable: nodeFactory.createTable,
|
|
21
|
+
createTestCase: nodeFactory.createTestCase,
|
|
22
|
+
createTestPlan,
|
|
23
|
+
createTestPlanFromTestFiles,
|
|
24
|
+
execute,
|
|
25
|
+
formatCaseId,
|
|
26
|
+
ownsTestNode(value) {
|
|
27
|
+
return isOwnedTestNode(value, owner);
|
|
28
|
+
},
|
|
29
|
+
runIfMain: createRunIfMain({
|
|
30
|
+
createRoot: nodeFactory.createRoot,
|
|
31
|
+
createTestPlan,
|
|
32
|
+
execute,
|
|
33
|
+
nodeVersion: dependencies.nodeVersion,
|
|
34
|
+
readExitCode: dependencies.readExitCode,
|
|
35
|
+
wallClock: dependencies.wallClock,
|
|
36
|
+
writeExitCode: dependencies.writeExitCode
|
|
37
|
+
})
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=engine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../../../../source/engine/engine.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAkB,MAAM,kBAAkB,CAAC;AACnE,OAAO,EACH,mBAAmB,EACnB,qBAAqB,EACrB,eAAe,EAUlB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACH,qBAAqB,EACrB,kCAAkC,EAGrC,MAAM,gBAAgB,CAAC;AAuBxB,MAAM,UAAU,YAAY,CAAC,YAAgC;IACzD,MAAM,KAAK,GAAG,mBAAmB,EAAE,CAAC;IACpC,MAAM,EAAE,OAAO,EAAE,GAAG,YAAY,CAAC;IACjC,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAY,CAAC;IAC7C,MAAM,WAAW,GAAG,qBAAqB,CAAC;QACtC,KAAK;QACL,qBAAqB,CAAC,IAAI;YACtB,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC;KACJ,CAAC,CAAC;IACH,MAAM,cAAc,GAAG,qBAAqB,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;IACtE,MAAM,2BAA2B,GAAG,kCAAkC,CAAC,KAAK,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC;IAEtG,OAAO;QACH,UAAU,EAAE,WAAW,CAAC,UAAU;QAClC,WAAW,EAAE,WAAW,CAAC,WAAW;QACpC,WAAW,EAAE,WAAW,CAAC,WAAW;QACpC,cAAc,EAAE,WAAW,CAAC,cAAc;QAC1C,cAAc;QACd,2BAA2B;QAC3B,OAAO;QACP,YAAY;QACZ,YAAY,CAAC,KAAK;YACd,OAAO,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACzC,CAAC;QACD,SAAS,EAAE,eAAe,CAAC;YACvB,UAAU,EAAE,WAAW,CAAC,UAAU;YAClC,cAAc;YACd,OAAO;YACP,WAAW,EAAE,YAAY,CAAC,WAAW;YACrC,YAAY,EAAE,YAAY,CAAC,YAAY;YACvC,SAAS,EAAE,YAAY,CAAC,SAAS;YACjC,aAAa,EAAE,YAAY,CAAC,aAAa;SAC5C,CAAC;KACL,CAAC;AACN,CAAC"}
|
package/engine/identity.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ export type TestId = {
|
|
|
6
6
|
export type CaseId = TestId & {
|
|
7
7
|
readonly params: string | null;
|
|
8
8
|
};
|
|
9
|
-
export declare function createCaseId(suite: readonly string[], name: string, params: string | null): CaseId;
|
|
9
|
+
export declare function createCaseId(file: string | null, suite: readonly string[], name: string, params: string | null): CaseId;
|
|
10
10
|
export declare function caseIdentityKey(caseId: CaseId): string;
|
|
11
11
|
export declare function formatCaseId(caseId: CaseId): string;
|
|
12
12
|
//# sourceMappingURL=identity.d.ts.map
|
package/engine/identity.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../../../../source/engine/identity.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,MAAM,GAAG;IACjB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC,CAAC;AAEF,wBAAgB,YAAY,
|
|
1
|
+
{"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../../../../source/engine/identity.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,MAAM,GAAG;IACjB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC,CAAC;AAEF,wBAAgB,YAAY,CACxB,IAAI,EAAE,MAAM,GAAG,IAAI,EACnB,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,GAAG,IAAI,GACtB,MAAM,CAOR;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CASnD"}
|
package/engine/identity.js
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
|
+
export function createCaseId(file, suite, name, params) {
|
|
2
|
+
return {
|
|
3
|
+
file,
|
|
4
|
+
name,
|
|
5
|
+
params,
|
|
6
|
+
suite
|
|
7
|
+
};
|
|
8
|
+
}
|
|
1
9
|
export function caseIdentityKey(caseId) {
|
|
2
10
|
return JSON.stringify([caseId.file, caseId.suite, caseId.name, caseId.params]);
|
|
3
11
|
}
|
|
4
|
-
|
|
12
|
+
export function formatCaseId(caseId) {
|
|
13
|
+
const namePath = [...caseId.suite, caseId.name].join(' > ');
|
|
14
|
+
const originPath = caseId.file === null ? namePath : `${caseId.file}: ${namePath}`;
|
|
15
|
+
if (caseId.params === null) {
|
|
16
|
+
return originPath;
|
|
17
|
+
}
|
|
18
|
+
return `${originPath} [${caseId.params}]`;
|
|
19
|
+
}
|
|
5
20
|
//# sourceMappingURL=identity.js.map
|
package/engine/identity.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"identity.js","sourceRoot":"","sources":["../../../../source/engine/identity.ts"],"names":[],"mappings":"AAUA,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"identity.js","sourceRoot":"","sources":["../../../../source/engine/identity.ts"],"names":[],"mappings":"AAUA,MAAM,UAAU,YAAY,CACxB,IAAmB,EACnB,KAAwB,EACxB,IAAY,EACZ,MAAqB;IAErB,OAAO;QACH,IAAI;QACJ,IAAI;QACJ,MAAM;QACN,KAAK;KACR,CAAC;AACN,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAc;IAC1C,OAAO,IAAI,CAAC,SAAS,CAAC,CAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAE,CAAC,CAAC;AACrF,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAAc;IACvC,MAAM,QAAQ,GAAG,CAAE,GAAG,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9D,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;IAEnF,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;QACzB,OAAO,UAAU,CAAC;IACtB,CAAC;IAED,OAAO,GAAG,UAAU,KAAK,MAAM,CAAC,MAAM,GAAG,CAAC;AAC9C,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { WallClock } from '@enormora/wall-clock';
|
|
2
|
+
import type { Execute } from './execution.ts';
|
|
3
|
+
import { type OutputRenderer } from './reporter-output.ts';
|
|
4
|
+
import type { Reporter, RunFacts } from './reporter.ts';
|
|
5
|
+
import type { Metadata, RootOptions, TestNode, TestRoot } from './test-node.ts';
|
|
6
|
+
import type { TestPlanFactory } from './test-plan.ts';
|
|
7
|
+
export type RunIfMainOptions = {
|
|
8
|
+
readonly outputRenderer?: OutputRenderer;
|
|
9
|
+
readonly reporters?: readonly Reporter[];
|
|
10
|
+
readonly root?: RunIfMainRootOptions;
|
|
11
|
+
readonly runFacts?: RunFacts;
|
|
12
|
+
};
|
|
13
|
+
export type RunIfMainRootOptions = {
|
|
14
|
+
readonly metadata: Metadata;
|
|
15
|
+
readonly name: string;
|
|
16
|
+
};
|
|
17
|
+
export type RunIfMain = (meta: Readonly<ImportMeta>, testNode: TestNode, options?: RunIfMainOptions) => Promise<void>;
|
|
18
|
+
export type RunIfMainDependencies = {
|
|
19
|
+
readonly createRoot: (options: RootOptions) => TestRoot;
|
|
20
|
+
readonly createTestPlan: TestPlanFactory;
|
|
21
|
+
readonly execute: Execute;
|
|
22
|
+
readonly nodeVersion: string;
|
|
23
|
+
readonly readExitCode: () => number | string | null | undefined;
|
|
24
|
+
readonly wallClock: WallClock;
|
|
25
|
+
readonly writeExitCode: (exitCode: number) => void;
|
|
26
|
+
};
|
|
27
|
+
export declare function createRunIfMain(dependencies: RunIfMainDependencies): RunIfMain;
|
|
28
|
+
//# sourceMappingURL=run-if-main.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-if-main.d.ts","sourceRoot":"","sources":["../../../../source/engine/run-if-main.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,OAAO,EAAkB,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAA6B,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtF,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAExD,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAChF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEtD,MAAM,MAAM,gBAAgB,GAAG;IAC3B,QAAQ,CAAC,cAAc,CAAC,EAAE,cAAc,CAAC;IACzC,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,QAAQ,EAAE,CAAC;IACzC,QAAQ,CAAC,IAAI,CAAC,EAAE,oBAAoB,CAAC;IACrC,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IAC/B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,CACpB,IAAI,EAAE,QAAQ,CAAC,UAAU,CAAC,EAC1B,QAAQ,EAAE,QAAQ,EAClB,OAAO,CAAC,EAAE,gBAAgB,KACzB,OAAO,CAAC,IAAI,CAAC,CAAC;AAEnB,MAAM,MAAM,qBAAqB,GAAG;IAChC,QAAQ,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,QAAQ,CAAC;IACxD,QAAQ,CAAC,cAAc,EAAE,eAAe,CAAC;IACzC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAChE,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CACtD,CAAC;AAkDF,wBAAgB,eAAe,CAAC,YAAY,EAAE,qBAAqB,GAAG,SAAS,CAe9E"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { createPlainOutputRenderer } from "./reporter-output.js";
|
|
2
|
+
const failureExitCodes = new Set([undefined, null, 0, '0']);
|
|
3
|
+
function shouldSetFailureExitCode(exitCode) {
|
|
4
|
+
return failureExitCodes.has(exitCode);
|
|
5
|
+
}
|
|
6
|
+
function hasFailure(result) {
|
|
7
|
+
return result.summary.failed > 0 || result.runnerErrors.length > 0;
|
|
8
|
+
}
|
|
9
|
+
function rootMetadata(options) {
|
|
10
|
+
return options?.root?.metadata ?? {};
|
|
11
|
+
}
|
|
12
|
+
function rootName(meta, options) {
|
|
13
|
+
return options?.root?.name ?? meta.url;
|
|
14
|
+
}
|
|
15
|
+
function createRootOptions(meta, testNode, options) {
|
|
16
|
+
return {
|
|
17
|
+
children: [testNode],
|
|
18
|
+
metadata: rootMetadata(options),
|
|
19
|
+
name: rootName(meta, options)
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
function createExecuteOptions(options, dependencies) {
|
|
23
|
+
const startedAt = new Date(dependencies.wallClock.currentTimestampInMilliseconds);
|
|
24
|
+
return {
|
|
25
|
+
execution: { mode: 'serial-in-process' },
|
|
26
|
+
outputRenderer: options?.outputRenderer ?? createPlainOutputRenderer(),
|
|
27
|
+
reporters: options?.reporters ?? [],
|
|
28
|
+
runFacts: {
|
|
29
|
+
...options?.runFacts,
|
|
30
|
+
nodeVersion: dependencies.nodeVersion
|
|
31
|
+
},
|
|
32
|
+
startedAt: startedAt.toISOString()
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
export function createRunIfMain(dependencies) {
|
|
36
|
+
return async function runIfMain(meta, testNode, options) {
|
|
37
|
+
if (!meta.main) {
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
const result = await dependencies.execute(dependencies.createTestPlan(dependencies.createRoot(createRootOptions(meta, testNode, options))), createExecuteOptions(options, dependencies));
|
|
41
|
+
if (hasFailure(result) && shouldSetFailureExitCode(dependencies.readExitCode())) {
|
|
42
|
+
dependencies.writeExitCode(1);
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=run-if-main.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-if-main.js","sourceRoot":"","sources":["../../../../source/engine/run-if-main.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,yBAAyB,EAAuB,MAAM,sBAAsB,CAAC;AAkCtF,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAqC,CAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,CAAE,CAAC,CAAC;AAElG,SAAS,wBAAwB,CAAC,QAA4C;IAC1E,OAAO,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC1C,CAAC;AAED,SAAS,UAAU,CAAC,MAAiB;IACjC,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;AACvE,CAAC;AAED,SAAS,YAAY,CAAC,OAAqC;IACvD,OAAO,OAAO,EAAE,IAAI,EAAE,QAAQ,IAAI,EAAE,CAAC;AACzC,CAAC;AAED,SAAS,QAAQ,CAAC,IAA0B,EAAE,OAAqC;IAC/E,OAAO,OAAO,EAAE,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC;AAC3C,CAAC;AAED,SAAS,iBAAiB,CACtB,IAA0B,EAC1B,QAAkB,EAClB,OAAqC;IAErC,OAAO;QACH,QAAQ,EAAE,CAAE,QAAQ,CAAE;QACtB,QAAQ,EAAE,YAAY,CAAC,OAAO,CAAC;QAC/B,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;KAChC,CAAC;AACN,CAAC;AAED,SAAS,oBAAoB,CACzB,OAAqC,EACrC,YAAmC;IAEnC,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,8BAA8B,CAAC,CAAC;IAElF,OAAO;QACH,SAAS,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE;QACxC,cAAc,EAAE,OAAO,EAAE,cAAc,IAAI,yBAAyB,EAAE;QACtE,SAAS,EAAE,OAAO,EAAE,SAAS,IAAI,EAAE;QACnC,QAAQ,EAAE;YACN,GAAG,OAAO,EAAE,QAAQ;YACpB,WAAW,EAAE,YAAY,CAAC,WAAW;SACxC;QACD,SAAS,EAAE,SAAS,CAAC,WAAW,EAAE;KACrC,CAAC;AACN,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,YAAmC;IAC/D,OAAO,KAAK,UAAU,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO;QACnD,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACb,OAAO;QACX,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,CACrC,YAAY,CAAC,cAAc,CAAC,YAAY,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,EAChG,oBAAoB,CAAC,OAAO,EAAE,YAAY,CAAC,CAC9C,CAAC;QAEF,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,wBAAwB,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC;YAC9E,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QAClC,CAAC;IACL,CAAC,CAAC;AACN,CAAC"}
|
package/engine/test-node.d.ts
CHANGED
|
@@ -97,6 +97,7 @@ export type TableOptions = {
|
|
|
97
97
|
export declare function createTestNodeOwner(): TestNodeOwner;
|
|
98
98
|
export declare function isTestNode(value: unknown): value is TestNode;
|
|
99
99
|
export declare function isTestRoot(value: unknown): value is TestRoot;
|
|
100
|
+
export declare function isOwnedTestNode(value: unknown, owner: TestNodeOwner): value is TestNode;
|
|
100
101
|
export declare function ensureOwnedTestRoot(value: unknown, owner: TestNodeOwner, plainObjectMessage: string, foreignRootMessage: string): asserts value is TestRoot;
|
|
101
102
|
export declare function createTestNodeFactory(factoryOptions: TestNodeFactoryOptions): TestNodeFactory;
|
|
102
103
|
export declare function mergeMetadata(parent: Metadata, child: Metadata): Metadata;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-node.d.ts","sourceRoot":"","sources":["../../../../source/engine/test-node.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"test-node.d.ts","sourceRoot":"","sources":["../../../../source/engine/test-node.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
const testNodeBrand = Symbol('OverkillTestNode');
|
|
2
|
+
const testRootBrand = Symbol('OverkillTestRoot');
|
|
3
|
+
const testNodeOwnerBrand = Symbol('OverkillTestNodeOwner');
|
|
4
|
+
const testNodeOwnerIdentity = Symbol('OverkillTestNodeOwnerIdentity');
|
|
5
|
+
export function createTestNodeOwner() {
|
|
6
|
+
return { [testNodeOwnerIdentity]: true };
|
|
7
|
+
}
|
|
8
|
+
function ensureName(name) {
|
|
9
|
+
if (name.trim().length === 0) {
|
|
10
|
+
throw new TypeError('Test node name must not be empty.');
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
function ensureMetadata(metadata) {
|
|
14
|
+
if (typeof metadata !== 'object' || metadata === null || Array.isArray(metadata)) {
|
|
15
|
+
throw new TypeError('Test node metadata must be an object.');
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
function ensureTestBody(body) {
|
|
19
|
+
if (typeof body !== 'function') {
|
|
20
|
+
throw new TypeError('Test case body must be a function.');
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
export function isTestNode(value) {
|
|
24
|
+
return typeof value === 'object' && value !== null && Object.hasOwn(value, testNodeBrand);
|
|
25
|
+
}
|
|
26
|
+
export function isTestRoot(value) {
|
|
27
|
+
return typeof value === 'object' && value !== null && Object.hasOwn(value, testRootBrand);
|
|
28
|
+
}
|
|
29
|
+
export function isOwnedTestNode(value, owner) {
|
|
30
|
+
return isTestNode(value) && value[testNodeOwnerBrand] === owner;
|
|
31
|
+
}
|
|
32
|
+
function hasTestNodeOwner(value, owner) {
|
|
33
|
+
return value[testNodeOwnerBrand] === owner;
|
|
34
|
+
}
|
|
35
|
+
function hasTestRootOwner(value, owner) {
|
|
36
|
+
return value[testNodeOwnerBrand] === owner;
|
|
37
|
+
}
|
|
38
|
+
function ensureOwnedTestNode(value, owner, plainObjectMessage, foreignNodeMessage) {
|
|
39
|
+
if (!isTestNode(value)) {
|
|
40
|
+
throw new TypeError(plainObjectMessage);
|
|
41
|
+
}
|
|
42
|
+
if (!hasTestNodeOwner(value, owner)) {
|
|
43
|
+
throw new TypeError(foreignNodeMessage);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
export function ensureOwnedTestRoot(value, owner, plainObjectMessage, foreignRootMessage) {
|
|
47
|
+
if (!isTestRoot(value)) {
|
|
48
|
+
throw new TypeError(plainObjectMessage);
|
|
49
|
+
}
|
|
50
|
+
if (!hasTestRootOwner(value, owner)) {
|
|
51
|
+
throw new TypeError(foreignRootMessage);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
function toTestNode(value, owner, plainObjectMessage, foreignNodeMessage) {
|
|
55
|
+
ensureOwnedTestNode(value, owner, plainObjectMessage, foreignNodeMessage);
|
|
56
|
+
return value;
|
|
57
|
+
}
|
|
58
|
+
export function createTestNodeFactory(factoryOptions) {
|
|
59
|
+
const { owner, recordConstructedNode } = factoryOptions;
|
|
60
|
+
function createTestCase(options) {
|
|
61
|
+
ensureName(options.name);
|
|
62
|
+
ensureMetadata(options.metadata);
|
|
63
|
+
ensureTestBody(options.body);
|
|
64
|
+
const testCase = {
|
|
65
|
+
[testNodeBrand]: true,
|
|
66
|
+
[testNodeOwnerBrand]: owner,
|
|
67
|
+
body: options.body,
|
|
68
|
+
kind: 'test',
|
|
69
|
+
metadata: options.metadata,
|
|
70
|
+
name: options.name
|
|
71
|
+
};
|
|
72
|
+
recordConstructedNode(testCase);
|
|
73
|
+
return testCase;
|
|
74
|
+
}
|
|
75
|
+
function createRoot(options) {
|
|
76
|
+
ensureName(options.name);
|
|
77
|
+
ensureMetadata(options.metadata);
|
|
78
|
+
const children = options.children.map(function validateChild(child) {
|
|
79
|
+
return toTestNode(child, owner, 'Root children must be engine-created TestNode values.', 'Root children must be created by the same engine instance.');
|
|
80
|
+
});
|
|
81
|
+
return {
|
|
82
|
+
[testRootBrand]: true,
|
|
83
|
+
[testNodeOwnerBrand]: owner,
|
|
84
|
+
children,
|
|
85
|
+
kind: 'root',
|
|
86
|
+
metadata: options.metadata,
|
|
87
|
+
name: options.name
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
function createSuite(options) {
|
|
91
|
+
ensureName(options.name);
|
|
92
|
+
ensureMetadata(options.metadata);
|
|
93
|
+
const children = options.children.map(function validateChild(child) {
|
|
94
|
+
return toTestNode(child, owner, 'Suite children must be engine-created TestNode values.', 'Suite children must be created by the same engine instance.');
|
|
95
|
+
});
|
|
96
|
+
const suite = {
|
|
97
|
+
[testNodeBrand]: true,
|
|
98
|
+
[testNodeOwnerBrand]: owner,
|
|
99
|
+
children,
|
|
100
|
+
kind: 'suite',
|
|
101
|
+
metadata: options.metadata,
|
|
102
|
+
name: options.name
|
|
103
|
+
};
|
|
104
|
+
recordConstructedNode(suite);
|
|
105
|
+
return suite;
|
|
106
|
+
}
|
|
107
|
+
function createTable(options) {
|
|
108
|
+
ensureName(options.name);
|
|
109
|
+
ensureMetadata(options.metadata);
|
|
110
|
+
for (const tableCase of options.cases) {
|
|
111
|
+
ensureName(tableCase.name);
|
|
112
|
+
ensureMetadata(tableCase.metadata);
|
|
113
|
+
ensureMetadata(tableCase.parameters);
|
|
114
|
+
ensureTestBody(tableCase.body);
|
|
115
|
+
}
|
|
116
|
+
const table = {
|
|
117
|
+
[testNodeBrand]: true,
|
|
118
|
+
[testNodeOwnerBrand]: owner,
|
|
119
|
+
cases: options.cases,
|
|
120
|
+
kind: 'table',
|
|
121
|
+
metadata: options.metadata,
|
|
122
|
+
name: options.name
|
|
123
|
+
};
|
|
124
|
+
recordConstructedNode(table);
|
|
125
|
+
return table;
|
|
126
|
+
}
|
|
127
|
+
return {
|
|
128
|
+
createRoot,
|
|
129
|
+
createSuite,
|
|
130
|
+
createTable,
|
|
131
|
+
createTestCase
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
export function mergeMetadata(parent, child) {
|
|
135
|
+
return { ...parent, ...child };
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=test-node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-node.js","sourceRoot":"","sources":["../../../../source/engine/test-node.ts"],"names":[],"mappings":"AAQA,MAAM,aAAa,GAAkB,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAChE,MAAM,aAAa,GAAkB,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAChE,MAAM,kBAAkB,GAAkB,MAAM,CAAC,uBAAuB,CAAC,CAAC;AAC1E,MAAM,qBAAqB,GAAkB,MAAM,CAAC,+BAA+B,CAAC,CAAC;AA4GrF,MAAM,UAAU,mBAAmB;IAC/B,OAAO,EAAE,CAAC,qBAAqB,CAAC,EAAE,IAAI,EAAE,CAAC;AAC7C,CAAC;AAED,SAAS,UAAU,CAAC,IAAY;IAC5B,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,SAAS,CAAC,mCAAmC,CAAC,CAAC;IAC7D,CAAC;AACL,CAAC;AAED,SAAS,cAAc,CAAC,QAAiB;IACrC,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC/E,MAAM,IAAI,SAAS,CAAC,uCAAuC,CAAC,CAAC;IACjE,CAAC;AACL,CAAC;AAED,SAAS,cAAc,CAAC,IAAc;IAClC,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE,CAAC;QAC7B,MAAM,IAAI,SAAS,CAAC,oCAAoC,CAAC,CAAC;IAC9D,CAAC;AACL,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAc;IACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;AAC9F,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAc;IACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;AAC9F,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAc,EAAE,KAAoB;IAChE,OAAO,UAAU,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,kBAAkB,CAAC,KAAK,KAAK,CAAC;AACpE,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAe,EAAE,KAAoB;IAC3D,OAAO,KAAK,CAAC,kBAAkB,CAAC,KAAK,KAAK,CAAC;AAC/C,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAe,EAAE,KAAoB;IAC3D,OAAO,KAAK,CAAC,kBAAkB,CAAC,KAAK,KAAK,CAAC;AAC/C,CAAC;AAED,SAAS,mBAAmB,CACxB,KAAc,EACd,KAAoB,EACpB,kBAA0B,EAC1B,kBAA0B;IAE1B,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,SAAS,CAAC,kBAAkB,CAAC,CAAC;IAC5C,CAAC;IAED,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,SAAS,CAAC,kBAAkB,CAAC,CAAC;IAC5C,CAAC;AACL,CAAC;AAED,MAAM,UAAU,mBAAmB,CAC/B,KAAc,EACd,KAAoB,EACpB,kBAA0B,EAC1B,kBAA0B;IAE1B,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,SAAS,CAAC,kBAAkB,CAAC,CAAC;IAC5C,CAAC;IAED,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,SAAS,CAAC,kBAAkB,CAAC,CAAC;IAC5C,CAAC;AACL,CAAC;AAED,SAAS,UAAU,CACf,KAAc,EACd,KAAoB,EACpB,kBAA0B,EAC1B,kBAA0B;IAE1B,mBAAmB,CACf,KAAK,EACL,KAAK,EACL,kBAAkB,EAClB,kBAAkB,CACrB,CAAC;IACF,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,cAAsC;IACxE,MAAM,EAAE,KAAK,EAAE,qBAAqB,EAAE,GAAG,cAAc,CAAC;IAExD,SAAS,cAAc,CAAC,OAAwB;QAC5C,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACzB,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACjC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAE7B,MAAM,QAAQ,GAAa;YACvB,CAAC,aAAa,CAAC,EAAE,IAAI;YACrB,CAAC,kBAAkB,CAAC,EAAE,KAAK;YAC3B,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,IAAI,EAAE,OAAO,CAAC,IAAI;SACrB,CAAC;QAEF,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QAEhC,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,SAAS,UAAU,CAAC,OAAoB;QACpC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACzB,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACjC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,aAAa,CAAC,KAAK;YAC9D,OAAO,UAAU,CACb,KAAK,EACL,KAAK,EACL,uDAAuD,EACvD,4DAA4D,CAC/D,CAAC;QACN,CAAC,CAAC,CAAC;QAEH,OAAO;YACH,CAAC,aAAa,CAAC,EAAE,IAAI;YACrB,CAAC,kBAAkB,CAAC,EAAE,KAAK;YAC3B,QAAQ;YACR,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,IAAI,EAAE,OAAO,CAAC,IAAI;SACrB,CAAC;IACN,CAAC;IAED,SAAS,WAAW,CAAC,OAAqB;QACtC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACzB,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACjC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,aAAa,CAAC,KAAK;YAC9D,OAAO,UAAU,CACb,KAAK,EACL,KAAK,EACL,wDAAwD,EACxD,6DAA6D,CAChE,CAAC;QACN,CAAC,CAAC,CAAC;QAEH,MAAM,KAAK,GAAU;YACjB,CAAC,aAAa,CAAC,EAAE,IAAI;YACrB,CAAC,kBAAkB,CAAC,EAAE,KAAK;YAC3B,QAAQ;YACR,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,IAAI,EAAE,OAAO,CAAC,IAAI;SACrB,CAAC;QAEF,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAE7B,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,SAAS,WAAW,CAAC,OAAqB;QACtC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACzB,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACjC,KAAK,MAAM,SAAS,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YACpC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAC3B,cAAc,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YACnC,cAAc,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YACrC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC;QAED,MAAM,KAAK,GAAU;YACjB,CAAC,aAAa,CAAC,EAAE,IAAI;YACrB,CAAC,kBAAkB,CAAC,EAAE,KAAK;YAC3B,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,IAAI,EAAE,OAAO,CAAC,IAAI;SACrB,CAAC;QAEF,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAE7B,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,OAAO;QACH,UAAU;QACV,WAAW;QACX,WAAW;QACX,cAAc;KACjB,CAAC;AACN,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,MAAgB,EAAE,KAAe;IAC3D,OAAO,EAAE,GAAG,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;AACnC,CAAC"}
|
package/engine/test-plan.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { NonEmptyReadonlyArray } from '../assertion-protocol/assertion-node-shape.ts';
|
|
2
2
|
import { type CaseId } from './identity.ts';
|
|
3
3
|
import type { OrphanedNode } from './run-result.ts';
|
|
4
|
-
import { type Metadata, type TestBody, type TestNode, type TestNodeOwner, type TestRoot } from './test-node.ts';
|
|
4
|
+
import { type Metadata, type RootOptions, type TestBody, type TestNode, type TestNodeOwner, type TestRoot } from './test-node.ts';
|
|
5
5
|
export type TestPlanCaseBody = TestBody;
|
|
6
6
|
export type TestPlanCase = {
|
|
7
7
|
readonly id: CaseId;
|
|
@@ -21,6 +21,16 @@ type TestPlanRoot = {
|
|
|
21
21
|
readonly name: string;
|
|
22
22
|
};
|
|
23
23
|
export type TestPlanFactory = (root: TestRoot) => TestPlan;
|
|
24
|
+
export type TestPlanFile = {
|
|
25
|
+
readonly file: string;
|
|
26
|
+
readonly testNode: TestNode;
|
|
27
|
+
};
|
|
28
|
+
export type TestPlanFromTestFilesOptions = {
|
|
29
|
+
readonly files: NonEmptyReadonlyArray<TestPlanFile>;
|
|
30
|
+
readonly root: TestPlanRoot;
|
|
31
|
+
};
|
|
32
|
+
export type TestPlanFromTestFilesFactory = (options: TestPlanFromTestFilesOptions) => TestPlan;
|
|
24
33
|
export declare function createTestPlanFactory(owner: TestNodeOwner, constructedNodes: ReadonlySet<TestNode>): TestPlanFactory;
|
|
34
|
+
export declare function createTestPlanFromTestFilesFactory(owner: TestNodeOwner, createRoot: (options: RootOptions) => TestRoot): TestPlanFromTestFilesFactory;
|
|
25
35
|
export {};
|
|
26
36
|
//# sourceMappingURL=test-plan.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-plan.d.ts","sourceRoot":"","sources":["../../../../source/engine/test-plan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+CAA+C,CAAC;AAC3F,OAAO,EAA+C,KAAK,MAAM,EAAE,MAAM,eAAe,CAAC;AACzF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,
|
|
1
|
+
{"version":3,"file":"test-plan.d.ts","sourceRoot":"","sources":["../../../../source/engine/test-plan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+CAA+C,CAAC;AAC3F,OAAO,EAA+C,KAAK,MAAM,EAAE,MAAM,eAAe,CAAC;AACzF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAIH,KAAK,QAAQ,EACb,KAAK,WAAW,EAEhB,KAAK,QAAQ,EAEb,KAAK,QAAQ,EACb,KAAK,aAAa,EAClB,KAAK,QAAQ,EAChB,MAAM,gBAAgB,CAAC;AAExB,MAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC;AAExC,MAAM,MAAM,YAAY,GAAG;IACvB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACnB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,qBAAqB,CAAC,YAAY,CAAC,CAAC;IACpD,QAAQ,CAAC,eAAe,EAAE,qBAAqB,CAAC,YAAY,CAAC,CAAC;IAC9D,QAAQ,CAAC,OAAO,EAAE,SAAS,YAAY,EAAE,CAAC;IAC1C,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;CAC/B,CAAC;AAEF,KAAK,YAAY,GAAG;IAChB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,CAAC,IAAI,EAAE,QAAQ,KAAK,QAAQ,CAAC;AAE3D,MAAM,MAAM,YAAY,GAAG;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG;IACvC,QAAQ,CAAC,KAAK,EAAE,qBAAqB,CAAC,YAAY,CAAC,CAAC;IACpD,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG,CAAC,OAAO,EAAE,4BAA4B,KAAK,QAAQ,CAAC;AAqK/F,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,WAAW,CAAC,QAAQ,CAAC,GAAG,eAAe,CAyBpH;AAgBD,wBAAgB,kCAAkC,CAC9C,KAAK,EAAE,aAAa,EACpB,UAAU,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,QAAQ,GAC/C,4BAA4B,CA4B9B"}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
import { caseIdentityKey, createCaseId, formatCaseId } from "./identity.js";
|
|
2
|
+
import { ensureOwnedTestRoot, isOwnedTestNode, mergeMetadata } from "./test-node.js";
|
|
3
|
+
function collectTestCase(testCase, file, suitePath, metadata) {
|
|
4
|
+
const resolvedMetadata = mergeMetadata(metadata, testCase.metadata);
|
|
5
|
+
return {
|
|
6
|
+
cases: [
|
|
7
|
+
{
|
|
8
|
+
body: testCase.body,
|
|
9
|
+
id: createCaseId(file, suitePath, testCase.name, null),
|
|
10
|
+
metadata: resolvedMetadata,
|
|
11
|
+
suitePath
|
|
12
|
+
}
|
|
13
|
+
],
|
|
14
|
+
reachedNodes: [testCase]
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
function collectTable(table, file, suitePath, metadata) {
|
|
18
|
+
if (table.cases.length === 0) {
|
|
19
|
+
throw new TypeError(`Table must contain at least one case: ${[...suitePath, table.name].join(' > ')}.`);
|
|
20
|
+
}
|
|
21
|
+
const tablePath = [...suitePath, table.name];
|
|
22
|
+
const tableMetadata = mergeMetadata(metadata, table.metadata);
|
|
23
|
+
return {
|
|
24
|
+
cases: table.cases.map(function collectTableCase(tableCase) {
|
|
25
|
+
const resolvedMetadata = mergeMetadata(tableMetadata, tableCase.metadata);
|
|
26
|
+
return {
|
|
27
|
+
body: tableCase.body,
|
|
28
|
+
id: createCaseId(file, tablePath, tableCase.name, null),
|
|
29
|
+
metadata: resolvedMetadata,
|
|
30
|
+
suitePath: tablePath
|
|
31
|
+
};
|
|
32
|
+
}),
|
|
33
|
+
reachedNodes: [table]
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
function mergeCollectedTestCases(collections) {
|
|
37
|
+
return {
|
|
38
|
+
cases: collections.flatMap(function collectCases(collection) {
|
|
39
|
+
return collection.cases;
|
|
40
|
+
}),
|
|
41
|
+
reachedNodes: collections.flatMap(function collectReachedNodes(collection) {
|
|
42
|
+
return collection.reachedNodes;
|
|
43
|
+
})
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
function collectNode(node, file, suitePath, metadata) {
|
|
47
|
+
if (node.kind === 'test') {
|
|
48
|
+
return collectTestCase(node, file, suitePath, metadata);
|
|
49
|
+
}
|
|
50
|
+
if (node.kind === 'table') {
|
|
51
|
+
return collectTable(node, file, suitePath, metadata);
|
|
52
|
+
}
|
|
53
|
+
if (node.children.length === 0) {
|
|
54
|
+
throw new TypeError(`Suite must contain at least one child: ${[...suitePath, node.name].join(' > ')}.`);
|
|
55
|
+
}
|
|
56
|
+
const childPath = [...suitePath, node.name];
|
|
57
|
+
const childMetadata = mergeMetadata(metadata, node.metadata);
|
|
58
|
+
const children = mergeCollectedTestCases(node.children.map(function collectChild(child) {
|
|
59
|
+
return collectNode(child, file, childPath, childMetadata);
|
|
60
|
+
}));
|
|
61
|
+
return {
|
|
62
|
+
cases: children.cases,
|
|
63
|
+
reachedNodes: [node, ...children.reachedNodes]
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
function collectRoot(root) {
|
|
67
|
+
if (root.children.length === 0) {
|
|
68
|
+
throw new TypeError(`Root must contain at least one child: ${root.name}.`);
|
|
69
|
+
}
|
|
70
|
+
return mergeCollectedTestCases(root.children.map(function collectChild(child) {
|
|
71
|
+
return collectNode(child, null, [], root.metadata);
|
|
72
|
+
}));
|
|
73
|
+
}
|
|
74
|
+
function collectTestFiles(root, files) {
|
|
75
|
+
return mergeCollectedTestCases(root.children.map(function collectChild(child, index) {
|
|
76
|
+
const file = files[index];
|
|
77
|
+
if (file === undefined) {
|
|
78
|
+
throw new TypeError('Every test file must map to one root child.');
|
|
79
|
+
}
|
|
80
|
+
return collectNode(child, file.file, [], root.metadata);
|
|
81
|
+
}));
|
|
82
|
+
}
|
|
83
|
+
function toReachedNodeSet(reachedNodes) {
|
|
84
|
+
return new Set(reachedNodes);
|
|
85
|
+
}
|
|
86
|
+
function createOrphanedNode(node) {
|
|
87
|
+
return {
|
|
88
|
+
file: null,
|
|
89
|
+
kind: node.kind,
|
|
90
|
+
name: node.name
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
function collectOrphans(constructedNodes, reachedNodes) {
|
|
94
|
+
const reachedNodeSet = toReachedNodeSet(reachedNodes);
|
|
95
|
+
return Array
|
|
96
|
+
.from(constructedNodes)
|
|
97
|
+
.filter(function isOrphan(node) {
|
|
98
|
+
return !reachedNodeSet.has(node);
|
|
99
|
+
})
|
|
100
|
+
.map(createOrphanedNode);
|
|
101
|
+
}
|
|
102
|
+
function assertUniqueCaseIds(cases) {
|
|
103
|
+
const seenCaseIds = new Set();
|
|
104
|
+
for (const testCase of cases) {
|
|
105
|
+
const key = caseIdentityKey(testCase.id);
|
|
106
|
+
if (seenCaseIds.has(key)) {
|
|
107
|
+
throw new TypeError(`Duplicate test case identity: ${formatCaseId(testCase.id)}.`);
|
|
108
|
+
}
|
|
109
|
+
seenCaseIds.add(key);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
function assertNonEmptyCases(cases) {
|
|
113
|
+
if (cases.length === 0) {
|
|
114
|
+
throw new TypeError('Test plan must contain at least one executable test case.');
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
export function createTestPlanFactory(owner, constructedNodes) {
|
|
118
|
+
return function createTestPlan(root) {
|
|
119
|
+
ensureOwnedTestRoot(root, owner, 'Test plan root must be an engine-created TestRoot value.', 'Test plan root must be created by the same engine instance.');
|
|
120
|
+
const collection = collectRoot(root);
|
|
121
|
+
const { cases: discoveredCases, reachedNodes } = collection;
|
|
122
|
+
assertNonEmptyCases(discoveredCases);
|
|
123
|
+
assertUniqueCaseIds(discoveredCases);
|
|
124
|
+
return {
|
|
125
|
+
cases: discoveredCases,
|
|
126
|
+
defined: constructedNodes.size,
|
|
127
|
+
discoveredCases,
|
|
128
|
+
orphans: collectOrphans(constructedNodes, reachedNodes),
|
|
129
|
+
root: {
|
|
130
|
+
metadata: root.metadata,
|
|
131
|
+
name: root.name
|
|
132
|
+
}
|
|
133
|
+
};
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
function ensureTestPlanFile(file, owner) {
|
|
137
|
+
if (file.file.trim().length === 0) {
|
|
138
|
+
throw new TypeError('Test file identity must not be empty.');
|
|
139
|
+
}
|
|
140
|
+
if (!isOwnedTestNode(file.testNode, owner)) {
|
|
141
|
+
throw new TypeError('Test file must provide a TestNode created by the selected engine.');
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
function countReachedNodes(reachedNodes) {
|
|
145
|
+
return reachedNodes.length;
|
|
146
|
+
}
|
|
147
|
+
export function createTestPlanFromTestFilesFactory(owner, createRoot) {
|
|
148
|
+
return function createTestPlanFromTestFiles(options) {
|
|
149
|
+
for (const file of options.files) {
|
|
150
|
+
ensureTestPlanFile(file, owner);
|
|
151
|
+
}
|
|
152
|
+
const root = createRoot({
|
|
153
|
+
children: options.files.map(function toTestNode(file) {
|
|
154
|
+
return file.testNode;
|
|
155
|
+
}),
|
|
156
|
+
metadata: options.root.metadata,
|
|
157
|
+
name: options.root.name
|
|
158
|
+
});
|
|
159
|
+
const { cases: discoveredCases, reachedNodes } = collectTestFiles(root, options.files);
|
|
160
|
+
assertNonEmptyCases(discoveredCases);
|
|
161
|
+
assertUniqueCaseIds(discoveredCases);
|
|
162
|
+
return {
|
|
163
|
+
cases: discoveredCases,
|
|
164
|
+
defined: countReachedNodes(reachedNodes),
|
|
165
|
+
discoveredCases,
|
|
166
|
+
orphans: [],
|
|
167
|
+
root: {
|
|
168
|
+
metadata: root.metadata,
|
|
169
|
+
name: root.name
|
|
170
|
+
}
|
|
171
|
+
};
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
//# sourceMappingURL=test-plan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-plan.js","sourceRoot":"","sources":["../../../../source/engine/test-plan.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -42,12 +42,16 @@
|
|
|
42
42
|
"sideEffects": [
|
|
43
43
|
"./assertion-protocol/assertion-reference.js",
|
|
44
44
|
"./engine/execution.js",
|
|
45
|
+
"./engine/run-if-main.js",
|
|
46
|
+
"./packages/engine/engine.entry-point.js",
|
|
45
47
|
"./reporters/line-reporter.js",
|
|
46
48
|
"./run/command-line-command.js",
|
|
47
49
|
"./run/command-line-runner.js",
|
|
50
|
+
"./run/default-run-engine.js",
|
|
48
51
|
"./run/run-config.js",
|
|
49
|
-
"./run/run.js"
|
|
52
|
+
"./run/run-orchestrator.js",
|
|
53
|
+
"./run/run-test-modules.js"
|
|
50
54
|
],
|
|
51
55
|
"type": "module",
|
|
52
|
-
"version": "0.0.
|
|
56
|
+
"version": "0.0.11"
|
|
53
57
|
}
|