@overkill-dev/run 0.0.33 → 0.0.35
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/assertion-protocol/source-location.d.ts.map +1 -1
- package/assertion-protocol/source-location.js +2 -0
- package/assertion-protocol/source-location.js.map +1 -1
- package/engine/case-execution.d.ts.map +1 -1
- package/engine/case-execution.js +16 -2
- package/engine/case-execution.js.map +1 -1
- package/engine/engine.d.ts +2 -1
- package/engine/engine.d.ts.map +1 -1
- package/engine/engine.js +1 -0
- package/engine/engine.js.map +1 -1
- package/engine/execution-supervision.d.ts.map +1 -1
- package/engine/execution-supervision.js +3 -0
- package/engine/execution-supervision.js.map +1 -1
- package/engine/execution.d.ts.map +1 -1
- package/engine/execution.js +2 -0
- package/engine/execution.js.map +1 -1
- package/engine/reporter.d.ts +2 -1
- package/engine/reporter.d.ts.map +1 -1
- package/engine/reporter.js.map +1 -1
- package/engine/run-result.d.ts +27 -1
- package/engine/run-result.d.ts.map +1 -1
- package/engine/run-result.js.map +1 -1
- package/engine/test-node.d.ts +17 -1
- package/engine/test-node.d.ts.map +1 -1
- package/engine/test-node.js +33 -1
- package/engine/test-node.js.map +1 -1
- package/engine/test-plan.d.ts +3 -2
- package/engine/test-plan.d.ts.map +1 -1
- package/engine/test-plan.js +2 -2
- package/engine/test-plan.js.map +1 -1
- package/package.json +4 -2
- package/packages/engine/engine.entry-point.js +3 -0
- package/packages/engine/engine.entry-point.js.map +1 -1
- package/packages/reporter-line/reporter-line.entry-point.js +3 -2
- package/packages/reporter-line/reporter-line.entry-point.js.map +1 -1
- package/packages/run/command-line.entry-point.d.ts +1 -1
- package/packages/run/command-line.entry-point.d.ts.map +1 -1
- package/packages/run/config.entry-point.d.ts +1 -1
- package/packages/run/config.entry-point.d.ts.map +1 -1
- package/packages/run/run.entry-point.d.ts +2 -2
- package/packages/run/run.entry-point.d.ts.map +1 -1
- package/readme.md +18 -6
- package/reporters/line-reporter.js +50 -6
- package/reporters/line-reporter.js.map +1 -1
- package/reporters/run-fact-summary.js +20 -0
- package/reporters/run-fact-summary.js.map +1 -0
- package/run/collected-run-plan.js +12 -7
- package/run/collected-run-plan.js.map +1 -1
- package/run/command-line-command.d.ts +4 -0
- package/run/command-line-command.d.ts.map +1 -1
- package/run/command-line-command.js.map +1 -1
- package/run/command-line-runner.js +2 -2
- package/run/command-line-runner.js.map +1 -1
- package/run/current-process-run-orchestrator.js +8 -2
- package/run/current-process-run-orchestrator.js.map +1 -1
- package/run/default-run-engine.js +1 -0
- package/run/default-run-engine.js.map +1 -1
- package/run/profile-file-glob.js.map +1 -1
- package/run/run-config-schema.d.ts +201 -10
- package/run/run-config-schema.d.ts.map +1 -1
- package/run/run-config-schema.js +33 -1
- package/run/run-config-schema.js.map +1 -1
- package/run/run-config.d.ts +3 -1
- package/run/run-config.d.ts.map +1 -1
- package/run/run-config.js +86 -19
- package/run/run-config.js.map +1 -1
- package/run/run-discovery.js +115 -13
- package/run/run-discovery.js.map +1 -1
- package/run/run-facts.js +4 -4
- package/run/run-facts.js.map +1 -1
- package/run/run-if-main-facts.js +14 -12
- package/run/run-if-main-facts.js.map +1 -1
- package/run/run-if-main-options.d.ts +4 -4
- package/run/run-if-main-options.d.ts.map +1 -1
- package/run/run-if-main-options.js.map +1 -1
- package/run/run-if-main-profile.js +114 -23
- package/run/run-if-main-profile.js.map +1 -1
- package/run/run-if-main.d.ts.map +1 -1
- package/run/run-if-main.js +13 -3
- package/run/run-if-main.js.map +1 -1
- package/run/run-input-resolution.js +19 -0
- package/run/run-input-resolution.js.map +1 -1
- package/run/run-list-renderer.js +67 -6
- package/run/run-list-renderer.js.map +1 -1
- package/run/run-local-test-plan.js.map +1 -1
- package/run/run-orchestrator.js +6 -6
- package/run/run-orchestrator.js.map +1 -1
- package/run/run-process-engine.js.map +1 -1
- package/run/run-seed.js +6 -0
- package/run/run-seed.js.map +1 -0
- package/run/run-selection.js +59 -5
- package/run/run-selection.js.map +1 -1
- package/run/run-support.js +38 -2
- package/run/run-support.js.map +1 -1
- package/run/run-types.d.ts +38 -7
- package/run/run-types.d.ts.map +1 -1
- package/run/run-types.js +7 -0
- package/run/run-types.js.map +1 -1
- package/run/run-validation.js +7 -2
- package/run/run-validation.js.map +1 -1
- package/run/run.js +51 -29
- package/run/run.js.map +1 -1
- package/run/supervised-child-process.js +26 -1
- package/run/supervised-child-process.js.map +1 -1
- package/run/supervised-child.js +16 -4
- package/run/supervised-child.js.map +1 -1
- package/run/supervised-run-runtime.js +60 -14
- package/run/supervised-run-runtime.js.map +1 -1
- package/run/supervised-run-state.js +75 -0
- package/run/supervised-run-state.js.map +1 -1
- package/run/supervised-run.js +24 -9
- package/run/supervised-run.js.map +1 -1
- package/sbom.cdx.json +21 -4
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { glob, realpath } from 'node:fs/promises';
|
|
1
|
+
import { glob, realpath, stat } from 'node:fs/promises';
|
|
2
2
|
import { relative, resolve } from 'node:path';
|
|
3
3
|
import { fileURLToPath } from 'node:url';
|
|
4
4
|
import { loadRunConfig, RunConfigError } from "./run-config.js";
|
|
@@ -34,11 +34,22 @@ async function matchedFiles(pattern, cwd) {
|
|
|
34
34
|
}
|
|
35
35
|
return files;
|
|
36
36
|
}
|
|
37
|
-
async function
|
|
38
|
-
|
|
39
|
-
|
|
37
|
+
async function matchedProfilePatternFiles(profileFiles, cwd) {
|
|
38
|
+
const files = [];
|
|
39
|
+
const matches = glob(profileFiles.include, { cwd, exclude: profileFiles.exclude, followSymlinks: false });
|
|
40
|
+
for await (const file of matches) {
|
|
41
|
+
const filePath = resolve(cwd, file);
|
|
42
|
+
const fileStat = await stat(filePath);
|
|
43
|
+
if (fileStat.isFile()) {
|
|
44
|
+
files.push(await canonicalPath(filePath));
|
|
45
|
+
}
|
|
40
46
|
}
|
|
41
|
-
|
|
47
|
+
return Array.from(new Set(files)).toSorted(function compareFiles(left, right) {
|
|
48
|
+
return left.localeCompare(right);
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
async function patternSetIncludesFile(profileFiles, file, cwd) {
|
|
52
|
+
for (const includePattern of profileFiles.include) {
|
|
42
53
|
const includedFiles = await matchedFiles(includePattern, cwd);
|
|
43
54
|
for (const includedFile of includedFiles) {
|
|
44
55
|
if (await sameRealPath(includedFile, file)) {
|
|
@@ -48,11 +59,8 @@ async function profileIncludesFile(profile, file, cwd) {
|
|
|
48
59
|
}
|
|
49
60
|
return false;
|
|
50
61
|
}
|
|
51
|
-
async function
|
|
52
|
-
|
|
53
|
-
return false;
|
|
54
|
-
}
|
|
55
|
-
for (const excludePattern of profile.files.exclude) {
|
|
62
|
+
async function patternSetExcludesFile(profileFiles, file, cwd) {
|
|
63
|
+
for (const excludePattern of profileFiles.exclude) {
|
|
56
64
|
const excludedFiles = await matchedFiles(excludePattern, cwd);
|
|
57
65
|
for (const excludedFile of excludedFiles) {
|
|
58
66
|
if (await sameRealPath(excludedFile, file)) {
|
|
@@ -62,17 +70,78 @@ async function profileExcludesFile(profile, file, cwd) {
|
|
|
62
70
|
}
|
|
63
71
|
return false;
|
|
64
72
|
}
|
|
65
|
-
async function
|
|
66
|
-
return await
|
|
73
|
+
async function patternSetMatchesFile(profileFiles, file, cwd) {
|
|
74
|
+
return await patternSetIncludesFile(profileFiles, file, cwd) &&
|
|
75
|
+
!await patternSetExcludesFile(profileFiles, file, cwd);
|
|
67
76
|
}
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
77
|
+
function hasProfileFileSets(profileFiles) {
|
|
78
|
+
return profileFiles.sets !== undefined;
|
|
79
|
+
}
|
|
80
|
+
async function directProfileFileSet(name, profileFiles, cwd) {
|
|
81
|
+
const files = await matchedProfilePatternFiles(profileFiles, cwd);
|
|
82
|
+
if (files.length === 0) {
|
|
83
|
+
throw new RunConfigError(`Profile files.sets.${name} matched no test files.`);
|
|
84
|
+
}
|
|
85
|
+
return { files, name };
|
|
86
|
+
}
|
|
87
|
+
function directProfileSetOverlapMessage(file, cwd, firstSet, secondSet) {
|
|
88
|
+
return `runIfMain() profile file sets must not overlap: ${relative(cwd, file)} matched ${firstSet} and ${secondSet}.`;
|
|
89
|
+
}
|
|
90
|
+
function assertNonOverlappingDirectProfileFileSets(fileSets, cwd) {
|
|
91
|
+
const owners = new Map();
|
|
92
|
+
for (const fileSet of fileSets) {
|
|
93
|
+
for (const file of fileSet.files) {
|
|
94
|
+
const owner = owners.get(file);
|
|
95
|
+
if (owner !== undefined) {
|
|
96
|
+
throw new RunConfigError(directProfileSetOverlapMessage(file, cwd, owner, fileSet.name));
|
|
97
|
+
}
|
|
98
|
+
owners.set(file, fileSet.name);
|
|
73
99
|
}
|
|
74
100
|
}
|
|
75
|
-
|
|
101
|
+
}
|
|
102
|
+
async function directProfileFileSets(sets, cwd) {
|
|
103
|
+
const fileSets = await Promise.all(Object.entries(sets).map(async function discoverFileSet([name, set]) {
|
|
104
|
+
return await directProfileFileSet(name, set, cwd);
|
|
105
|
+
}));
|
|
106
|
+
assertNonOverlappingDirectProfileFileSets(fileSets, cwd);
|
|
107
|
+
return fileSets;
|
|
108
|
+
}
|
|
109
|
+
async function profilePatternFileSetForFile(profileFiles, file, cwd) {
|
|
110
|
+
return await patternSetMatchesFile(profileFiles, file, cwd) ? null : undefined;
|
|
111
|
+
}
|
|
112
|
+
async function namedProfileFileSetForFile(profileFiles, file, cwd) {
|
|
113
|
+
const canonicalFile = await canonicalPath(file);
|
|
114
|
+
const fileSets = await directProfileFileSets(profileFiles.sets, cwd);
|
|
115
|
+
const matchedSet = fileSets.find(function includesFile(fileSet) {
|
|
116
|
+
return fileSet.files.includes(canonicalFile);
|
|
117
|
+
});
|
|
118
|
+
return matchedSet?.name;
|
|
119
|
+
}
|
|
120
|
+
async function profileFileSetForFile(profileFiles, file, cwd) {
|
|
121
|
+
if (!hasProfileFileSets(profileFiles)) {
|
|
122
|
+
return await profilePatternFileSetForFile(profileFiles, file, cwd);
|
|
123
|
+
}
|
|
124
|
+
return await namedProfileFileSetForFile(profileFiles, file, cwd);
|
|
125
|
+
}
|
|
126
|
+
async function selectedProfileForFile([name, profile], file, cwd) {
|
|
127
|
+
const profileFiles = profile.files;
|
|
128
|
+
if (profileFiles === null) {
|
|
129
|
+
return null;
|
|
130
|
+
}
|
|
131
|
+
const fileSet = await profileFileSetForFile(profileFiles, file, cwd);
|
|
132
|
+
if (fileSet === undefined) {
|
|
133
|
+
return null;
|
|
134
|
+
}
|
|
135
|
+
return { fileSet, name, profile };
|
|
136
|
+
}
|
|
137
|
+
function isSelectedDirectProfile(profile) {
|
|
138
|
+
return profile !== null;
|
|
139
|
+
}
|
|
140
|
+
async function matchingProfiles(config, file, cwd) {
|
|
141
|
+
const profiles = await Promise.all(Object.entries(config.profiles).map(async function matchProfile(entry) {
|
|
142
|
+
return await selectedProfileForFile(entry, file, cwd);
|
|
143
|
+
}));
|
|
144
|
+
return profiles.filter(isSelectedDirectProfile);
|
|
76
145
|
}
|
|
77
146
|
function ambiguousProfileMessage(file, cwd, profiles) {
|
|
78
147
|
const relativeFile = relative(cwd, file);
|
|
@@ -81,16 +150,36 @@ function ambiguousProfileMessage(file, cwd, profiles) {
|
|
|
81
150
|
});
|
|
82
151
|
return `runIfMain() matched multiple profiles for "${relativeFile}": ${profileNames.join(', ')}.`;
|
|
83
152
|
}
|
|
84
|
-
function
|
|
153
|
+
async function configuredMicrotestFileSet(profile, file, cwd) {
|
|
154
|
+
if (profile.files === null) {
|
|
155
|
+
return null;
|
|
156
|
+
}
|
|
157
|
+
const fileSet = await profileFileSetForFile(profile.files, file, cwd);
|
|
158
|
+
if (profile.files.sets !== undefined && fileSet === undefined) {
|
|
159
|
+
throw new RunConfigError(`runIfMain() file must match exactly one profile file set for "microtest": ${relative(cwd, file)}.`);
|
|
160
|
+
}
|
|
161
|
+
return fileSet ?? null;
|
|
162
|
+
}
|
|
163
|
+
async function configuredMicrotest(config, file, cwd) {
|
|
85
164
|
const profile = config.profiles.microtest;
|
|
86
|
-
if (profile
|
|
165
|
+
if (profile?.testFamily !== 'microtest') {
|
|
87
166
|
throw new RunConfigError('runIfMain() requires the configured "microtest" profile.');
|
|
88
167
|
}
|
|
89
|
-
|
|
168
|
+
const fileSet = await configuredMicrotestFileSet(profile, file, cwd);
|
|
169
|
+
return { fileSet, name: 'microtest', profile };
|
|
170
|
+
}
|
|
171
|
+
function assertSupportedDirectProfile(context) {
|
|
172
|
+
if (context.profile.testFamily === 'integration') {
|
|
173
|
+
throw new RunConfigError([
|
|
174
|
+
`runIfMain() does not support integration profile "${context.name}" yet.`,
|
|
175
|
+
`Use the overkill CLI with --profile ${context.name}.`
|
|
176
|
+
]
|
|
177
|
+
.join(' '));
|
|
178
|
+
}
|
|
90
179
|
}
|
|
91
180
|
async function selectDirectProfile(config, file, cwd) {
|
|
92
181
|
if (config.configPath === null) {
|
|
93
|
-
return configuredMicrotest(config);
|
|
182
|
+
return await configuredMicrotest(config, file, cwd);
|
|
94
183
|
}
|
|
95
184
|
const matches = await matchingProfiles(config, file, cwd);
|
|
96
185
|
if (matches.length > 1) {
|
|
@@ -100,16 +189,18 @@ async function selectDirectProfile(config, file, cwd) {
|
|
|
100
189
|
if (profile !== undefined) {
|
|
101
190
|
return profile;
|
|
102
191
|
}
|
|
103
|
-
return configuredMicrotest(config);
|
|
192
|
+
return await configuredMicrotest(config, file, cwd);
|
|
104
193
|
}
|
|
105
194
|
export async function resolveDirectProfile(meta, cwd) {
|
|
106
195
|
const canonicalCwd = await canonicalPath(cwd);
|
|
107
196
|
const file = await canonicalPath(directFilePath(meta));
|
|
108
197
|
const config = await loadRunConfig({ configPath: null, cwd: canonicalCwd });
|
|
109
198
|
const selectedProfile = await selectDirectProfile(config, file, canonicalCwd);
|
|
199
|
+
assertSupportedDirectProfile(selectedProfile);
|
|
110
200
|
return {
|
|
111
201
|
config,
|
|
112
202
|
file,
|
|
203
|
+
fileSet: selectedProfile.fileSet,
|
|
113
204
|
name: selectedProfile.name,
|
|
114
205
|
projectRoot: canonicalCwd,
|
|
115
206
|
profile: selectedProfile.profile
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-if-main-profile.js","sourceRoot":"","sources":["../../../../source/run/run-if-main-profile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"run-if-main-profile.js","sourceRoot":"","sources":["../../../../source/run/run-if-main-profile.ts"],"names":[],"mappings":"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"}
|
package/run/run-if-main.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-if-main.d.ts","sourceRoot":"","sources":["../../../../source/run/run-if-main.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"run-if-main.d.ts","sourceRoot":"","sources":["../../../../source/run/run-if-main.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAUvD,OAAO,EAOH,KAAK,gBAAgB,EACxB,MAAM,0BAA0B,CAAC;AAIlC,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;AAoGnB,wBAAsB,SAAS,CAC3B,IAAI,EAAE,QAAQ,CAAC,UAAU,CAAC,EAC1B,QAAQ,EAAE,QAAQ,EAClB,OAAO,CAAC,EAAE,gBAAgB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAMf"}
|
package/run/run-if-main.js
CHANGED
|
@@ -5,13 +5,15 @@ import { createNodeResourceUsageTracker } from "./resource-usage.js";
|
|
|
5
5
|
import { assertDirectTestPlanMatchesTestFamily, directRunFacts, runConfig } from "./run-if-main-facts.js";
|
|
6
6
|
import { executionMode, rootMetadata, rootTitle, selectedOutputRenderer, selectedReporters, warnOnSupervisedDowngrade } from "./run-if-main-options.js";
|
|
7
7
|
import { resolveDirectProfile } from "./run-if-main-profile.js";
|
|
8
|
+
import { createSeededTestPlan } from "./run-selection.js";
|
|
8
9
|
const failureExitCodes = new Set([undefined, null, 0, '0']);
|
|
9
10
|
function shouldSetFailureExitCode(exitCode) {
|
|
10
11
|
return failureExitCodes.has(exitCode);
|
|
11
12
|
}
|
|
12
13
|
async function createDirectRunContext(meta, testNode, options) {
|
|
14
|
+
const context = await resolveDirectProfile(meta, process.cwd());
|
|
13
15
|
return {
|
|
14
|
-
...
|
|
16
|
+
...context,
|
|
15
17
|
options,
|
|
16
18
|
testNode
|
|
17
19
|
};
|
|
@@ -27,12 +29,20 @@ async function executeDirectTestPlan(context, testPlan) {
|
|
|
27
29
|
const wallClock = createWallClock();
|
|
28
30
|
const reporters = await selectedReporters(context.profile, context.config, context.options);
|
|
29
31
|
const config = runConfig(context.config, reporters);
|
|
30
|
-
const
|
|
32
|
+
const ordered = createSeededTestPlan(testPlan);
|
|
33
|
+
const runFacts = directRunFacts({
|
|
34
|
+
config,
|
|
35
|
+
fileSet: context.fileSet,
|
|
36
|
+
profileName: context.name,
|
|
37
|
+
projectRoot: context.projectRoot,
|
|
38
|
+
seed: ordered.seed,
|
|
39
|
+
testPlan: ordered.testPlan
|
|
40
|
+
});
|
|
31
41
|
const runtimePolicy = createDirectRuntimePolicy();
|
|
32
42
|
const { resourceUsagePolicy } = runFacts.execution;
|
|
33
43
|
const startedAt = new Date(wallClock.currentTimestampInMilliseconds);
|
|
34
44
|
warnOnSupervisedDowngrade(context.profile);
|
|
35
|
-
return await defaultRunEngine.execute(testPlan, {
|
|
45
|
+
return await defaultRunEngine.execute(ordered.testPlan, {
|
|
36
46
|
execution: { mode: executionMode(context.profile) },
|
|
37
47
|
outputRenderer: selectedOutputRenderer(context.config, context.options),
|
|
38
48
|
reporters,
|
package/run/run-if-main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-if-main.js","sourceRoot":"","sources":["../../../../source/run/run-if-main.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"run-if-main.js","sourceRoot":"","sources":["../../../../source/run/run-if-main.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,11 +2,30 @@ import { discoverRunFilesWithProjectRoot } from "./run-discovery.js";
|
|
|
2
2
|
import { selectedProfile } from "./run-facts.js";
|
|
3
3
|
import { copyRunEngineSelection, copyRunConfig, copyRunRequest, freezeValue } from "./run-support.js";
|
|
4
4
|
import { assertSupportedProcessEngine, validateRunInput } from "./run-validation.js";
|
|
5
|
+
import { invalidRequest } from "./run-errors.js";
|
|
6
|
+
function assertMicrotestCaptureSupported(request, profile) {
|
|
7
|
+
if (profile.testFamily === 'microtest' && request.capture === 'live') {
|
|
8
|
+
invalidRequest('Microtest profiles do not support live capture.');
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
export function assertMicrotestMetadataCaptureSupported(profile, collectedPlan) {
|
|
12
|
+
if (profile.testFamily !== 'microtest') {
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
for (const file of collectedPlan.files) {
|
|
16
|
+
for (const testCase of file.cases) {
|
|
17
|
+
if (testCase.metadata.capture !== null) {
|
|
18
|
+
invalidRequest('Microtest metadata does not support capture mode.');
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
5
23
|
export async function readResolvedRunInput(command) {
|
|
6
24
|
validateRunInput(command);
|
|
7
25
|
const request = freezeValue(copyRunRequest(command.request));
|
|
8
26
|
const config = freezeValue(copyRunConfig(command.config));
|
|
9
27
|
const profile = selectedProfile(request, config);
|
|
28
|
+
assertMicrotestCaptureSupported(request, profile);
|
|
10
29
|
assertSupportedProcessEngine(command, profile);
|
|
11
30
|
const discovery = freezeValue(await discoverRunFilesWithProjectRoot({
|
|
12
31
|
cwd: command.cwd,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-input-resolution.js","sourceRoot":"","sources":["../../../../source/run/run-input-resolution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,+BAA+B,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EACH,sBAAsB,EACtB,aAAa,EACb,cAAc,EACd,WAAW,EACd,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"run-input-resolution.js","sourceRoot":"","sources":["../../../../source/run/run-input-resolution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,+BAA+B,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EACH,sBAAsB,EACtB,aAAa,EACb,cAAc,EACd,WAAW,EACd,MAAM,kBAAkB,CAAC;AAQ1B,OAAO,EACH,4BAA4B,EAC5B,gBAAgB,EACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAWjD,SAAS,+BAA+B,CACpC,OAAmB,EACnB,OAAyB;IAEzB,IAAI,OAAO,CAAC,UAAU,KAAK,WAAW,IAAI,OAAO,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC;QACnE,cAAc,CAAC,iDAAiD,CAAC,CAAC;IACtE,CAAC;AACL,CAAC;AAED,MAAM,UAAU,uCAAuC,CACnD,OAAyB,EACzB,aAA+B;IAE/B,IAAI,OAAO,CAAC,UAAU,KAAK,WAAW,EAAE,CAAC;QACrC,OAAO;IACX,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,aAAa,CAAC,KAAK,EAAE,CAAC;QACrC,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAChC,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;gBACrC,cAAc,CAAC,mDAAmD,CAAC,CAAC;YACxE,CAAC;QACL,CAAC;IACL,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,OAAmB;IAC1D,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC1B,MAAM,OAAO,GAAG,WAAW,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;IAC7D,MAAM,MAAM,GAAG,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1D,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACjD,+BAA+B,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAClD,4BAA4B,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC/C,MAAM,SAAS,GAAG,WAAW,CACzB,MAAM,+BAA+B,CAAC;QAClC,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,YAAY,EAAE,OAAO,CAAC,KAAK;KAC9B,CAAC,CACL,CAAC;IACF,MAAM,MAAM,GAAG,WAAW,CAAC,sBAAsB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IAEnE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,CAAC,WAAW,EAAE,OAAO,EAAE,CAAC;AAC5G,CAAC"}
|
package/run/run-list-renderer.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { createReportingContext, formatDefinitionLocations, formatSourceLocation } from "../engine/reporting-context.js";
|
|
2
|
-
import {
|
|
2
|
+
import { caseIdentityKey } from "../engine/identity.js";
|
|
3
|
+
import { collectedRunCaseEntries, collectedRunPlanFromTestPlan } from "./collected-run-plan.js";
|
|
3
4
|
const indentation = ' ';
|
|
4
5
|
const orphanDetailDepth = 2;
|
|
5
6
|
function indent(depth) {
|
|
@@ -70,6 +71,41 @@ function renderFile(file, options, context) {
|
|
|
70
71
|
}
|
|
71
72
|
return lines;
|
|
72
73
|
}
|
|
74
|
+
function renderCaseEntry(testCase, currentSuitePath, options, context) {
|
|
75
|
+
const sharedLength = sharedPrefixLength(currentSuitePath, testCase.testCase.suitePath);
|
|
76
|
+
return [
|
|
77
|
+
...renderSuiteLines(sharedLength, testCase.testCase.suitePath, options, context),
|
|
78
|
+
...formatNodeLines({
|
|
79
|
+
context,
|
|
80
|
+
depth: testCase.testCase.suitePath.length + 1,
|
|
81
|
+
locations: testCase.testCase.definitionLocations,
|
|
82
|
+
name: formatCaseName(testCase.testCase),
|
|
83
|
+
options
|
|
84
|
+
})
|
|
85
|
+
];
|
|
86
|
+
}
|
|
87
|
+
function appendRenderedCaseEntry(state, testCase, options, context) {
|
|
88
|
+
const sameFile = testCase.file === state.currentFile;
|
|
89
|
+
const currentSuitePath = sameFile ? state.currentSuitePath : [];
|
|
90
|
+
const lines = sameFile ? state.lines : [...state.lines, testCase.file];
|
|
91
|
+
return {
|
|
92
|
+
currentFile: testCase.file,
|
|
93
|
+
currentSuitePath: testCase.testCase.suitePath,
|
|
94
|
+
lines: [...lines, ...renderCaseEntry(testCase, currentSuitePath, options, context)]
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
function renderCaseEntries(cases, options, context) {
|
|
98
|
+
const initialState = {
|
|
99
|
+
currentFile: null,
|
|
100
|
+
currentSuitePath: [],
|
|
101
|
+
lines: []
|
|
102
|
+
};
|
|
103
|
+
return cases
|
|
104
|
+
.reduce(function renderCaseEntryLines(state, testCase) {
|
|
105
|
+
return appendRenderedCaseEntry(state, testCase, options, context);
|
|
106
|
+
}, initialState)
|
|
107
|
+
.lines;
|
|
108
|
+
}
|
|
73
109
|
function renderOrphan(orphan, options, context) {
|
|
74
110
|
const file = orphan.file ?? '<unknown>';
|
|
75
111
|
return [
|
|
@@ -94,17 +130,42 @@ function resolvedCollectedPlan(resolvedRun) {
|
|
|
94
130
|
}
|
|
95
131
|
return collectedRunPlanFromTestPlan(resolvedRun.plan.testPlan);
|
|
96
132
|
}
|
|
133
|
+
function factsCaseEntries(resolvedRun, plan) {
|
|
134
|
+
const { cases: factsCases } = resolvedRun.facts;
|
|
135
|
+
const casesByKey = new Map(collectedRunCaseEntries(plan).map(function toEntry(testCase) {
|
|
136
|
+
return [caseIdentityKey(testCase.id), testCase];
|
|
137
|
+
}));
|
|
138
|
+
const entries = factsCases.flatMap(function toOrderedCase(testCase) {
|
|
139
|
+
const entry = casesByKey.get(caseIdentityKey(testCase.id));
|
|
140
|
+
return entry === undefined ? [] : [entry];
|
|
141
|
+
});
|
|
142
|
+
return entries.length === factsCases.length ? entries : null;
|
|
143
|
+
}
|
|
144
|
+
function planLines(resolvedRun, plan, options, context) {
|
|
145
|
+
const orderedCases = factsCaseEntries(resolvedRun, plan);
|
|
146
|
+
if (orderedCases === null) {
|
|
147
|
+
return plan.files.flatMap(function renderPlanFile(file) {
|
|
148
|
+
return renderFile(file, options, context);
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
return renderCaseEntries(orderedCases, options, context);
|
|
152
|
+
}
|
|
153
|
+
function orderSummary(resolvedRun) {
|
|
154
|
+
const { execution, reproducibility } = resolvedRun.facts;
|
|
155
|
+
return [`order=${execution.order} seed=${reproducibility.seed}`];
|
|
156
|
+
}
|
|
97
157
|
export function renderResolvedRunList(resolvedRun, options) {
|
|
98
158
|
const plan = resolvedCollectedPlan(resolvedRun);
|
|
99
159
|
const context = createReportingContext({
|
|
100
160
|
projectRoot: resolvedRun.facts.environment.projectRoot
|
|
101
161
|
});
|
|
102
|
-
const
|
|
103
|
-
|
|
104
|
-
|
|
162
|
+
const renderedPlan = [
|
|
163
|
+
...orderSummary(resolvedRun),
|
|
164
|
+
...planLines(resolvedRun, plan, options, context)
|
|
165
|
+
];
|
|
105
166
|
if (!options.withOrphans) {
|
|
106
|
-
return
|
|
167
|
+
return renderedPlan;
|
|
107
168
|
}
|
|
108
|
-
return [...
|
|
169
|
+
return [...renderedPlan, ...renderOrphans(plan.orphans, options, context)];
|
|
109
170
|
}
|
|
110
171
|
//# sourceMappingURL=run-list-renderer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-list-renderer.js","sourceRoot":"","sources":["../../../../source/run/run-list-renderer.ts"],"names":[],"mappings":"AACA,OAAO,EACH,sBAAsB,EACtB,yBAAyB,EACzB,oBAAoB,EAEvB,MAAM,gCAAgC,CAAC;AAExC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"run-list-renderer.js","sourceRoot":"","sources":["../../../../source/run/run-list-renderer.ts"],"names":[],"mappings":"AACA,OAAO,EACH,sBAAsB,EACtB,yBAAyB,EACzB,oBAAoB,EAEvB,MAAM,gCAAgC,CAAC;AAExC,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EACH,uBAAuB,EACvB,4BAA4B,EAE/B,MAAM,yBAAyB,CAAC;AAqBjC,MAAM,WAAW,GAAG,IAAI,CAAC;AACzB,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAE5B,SAAS,MAAM,CAAC,KAAa;IACzB,OAAO,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAmC,EAAE,KAAoC;IACjG,IAAI,MAAM,GAAG,CAAC,CAAC;IAEf,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,KAAK,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC;QAChF,MAAM,IAAI,CAAC,CAAC;IAChB,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,SAAS,cAAc,CAAC,QAA0B;IAC9C,OAAO,QAAQ,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,KAAK,QAAQ,CAAC,MAAM,GAAG,CAAC;AAChG,CAAC;AAED,SAAS,cAAc,CAAC,QAAwB,EAAE,OAAsB,EAAE,OAAyB;IAC/F,MAAM,gBAAgB,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,oBAAoB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAEhG,OAAO,gBAAgB,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,gBAAgB,GAAG,CAAC;AACrE,CAAC;AAED,SAAS,+BAA+B,CACpC,SAAoC,EACpC,OAAsB,EACtB,OAAyB,EACzB,KAAa;IAEb,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QAClD,OAAO,EAAE,CAAC;IACd,CAAC;IAED,MAAM,eAAe,GAAG,yBAAyB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAEtE,OAAO,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,cAAc,CAAC,MAAM;QAC7D,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,EAAE,CAAC;IACvC,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,eAAe,CAAC,KAAoB;IACzC,MAAM,eAAe,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAC3C,MAAM,WAAW,GAAG,eAAe,KAAK,SAAS;QAC7C,CAAC,CAAC,KAAK,CAAC,IAAI;QACZ,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,GAAG,cAAc,CAAC,eAAe,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;IAEtF,OAAO;QACH,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,WAAW,EAAE;QACtC,GAAG,+BAA+B,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;KACrG,CAAC;AACN,CAAC;AAED,SAAS,gBAAgB,CACrB,YAAoB,EACpB,SAAwC,EACxC,OAAsB,EACtB,OAAyB;IAEzB,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,IAAI,KAAK,GAAG,YAAY,EAAE,KAAK,GAAG,SAAS,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QAClE,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;QAE/B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACtB,KAAK,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC;gBAC1B,OAAO;gBACP,KAAK,EAAE,KAAK,GAAG,CAAC;gBAChB,SAAS,EAAE,KAAK,CAAC,mBAAmB;gBACpC,IAAI,EAAE,KAAK,CAAC,KAAK;gBACjB,OAAO;aACV,CAAC,CAAC,CAAC;QACR,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,SAAS,UAAU,CAAC,IAAsB,EAAE,OAAsB,EAAE,OAAyB;IACzF,MAAM,KAAK,GAAa,CAAE,IAAI,CAAC,IAAI,CAAE,CAAC;IACtC,IAAI,gBAAgB,GAAkC,EAAE,CAAC;IAEzD,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QAChC,MAAM,YAAY,GAAG,kBAAkB,CAAC,gBAAgB,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;QAE9E,KAAK,CAAC,IAAI,CACN,GAAG,gBAAgB,CAAC,YAAY,EAAE,QAAQ,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,EACvE,GAAG,eAAe,CAAC;YACf,OAAO;YACP,KAAK,EAAE,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;YACpC,SAAS,EAAE,QAAQ,CAAC,mBAAmB;YACvC,IAAI,EAAE,cAAc,CAAC,QAAQ,CAAC;YAC9B,OAAO;SACV,CAAC,CACL,CAAC;QACF,gBAAgB,GAAG,QAAQ,CAAC,SAAS,CAAC;IAC1C,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,SAAS,eAAe,CACpB,QAA+B,EAC/B,gBAA+C,EAC/C,OAAsB,EACtB,OAAyB;IAEzB,MAAM,YAAY,GAAG,kBAAkB,CAAC,gBAAgB,EAAE,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAEvF,OAAO;QACH,GAAG,gBAAgB,CAAC,YAAY,EAAE,QAAQ,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC;QAChF,GAAG,eAAe,CAAC;YACf,OAAO;YACP,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;YAC7C,SAAS,EAAE,QAAQ,CAAC,QAAQ,CAAC,mBAAmB;YAChD,IAAI,EAAE,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC;YACvC,OAAO;SACV,CAAC;KACL,CAAC;AACN,CAAC;AAED,SAAS,uBAAuB,CAC5B,KAA6B,EAC7B,QAA+B,EAC/B,OAAsB,EACtB,OAAyB;IAEzB,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,KAAK,KAAK,CAAC,WAAW,CAAC;IACrD,MAAM,gBAAgB,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;IAChE,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAE,GAAG,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAE,CAAC;IAEzE,OAAO;QACH,WAAW,EAAE,QAAQ,CAAC,IAAI;QAC1B,gBAAgB,EAAE,QAAQ,CAAC,QAAQ,CAAC,SAAS;QAC7C,KAAK,EAAE,CAAE,GAAG,KAAK,EAAE,GAAG,eAAe,CAAC,QAAQ,EAAE,gBAAgB,EAAE,OAAO,EAAE,OAAO,CAAC,CAAE;KACxF,CAAC;AACN,CAAC;AAED,SAAS,iBAAiB,CACtB,KAAuC,EACvC,OAAsB,EACtB,OAAyB;IAEzB,MAAM,YAAY,GAA2B;QACzC,WAAW,EAAE,IAAI;QACjB,gBAAgB,EAAE,EAAE;QACpB,KAAK,EAAE,EAAE;KACZ,CAAC;IAEF,OAAO,KAAK;SACP,MAAM,CAAC,SAAS,oBAAoB,CAAC,KAAK,EAAE,QAAQ;QACjD,OAAO,uBAAuB,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACtE,CAAC,EAAE,YAAY,CAAC;SACf,KAAK,CAAC;AACf,CAAC;AAED,SAAS,YAAY,CAAC,MAAoB,EAAE,OAAsB,EAAE,OAAyB;IACzF,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,WAAW,CAAC;IAExC,OAAO;QACH,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,KAAK,KAAK,IAAI,IAChD,cAAc,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAClE,EAAE;QACF,GAAG,+BAA+B,CAAC,MAAM,CAAC,mBAAmB,EAAE,OAAO,EAAE,OAAO,EAAE,iBAAiB,CAAC;KACtG,CAAC;AACN,CAAC;AAED,SAAS,aAAa,CAClB,OAAgC,EAChC,OAAsB,EACtB,OAAyB;IAEzB,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,CAAE,SAAS,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAE,CAAC;IAC/C,CAAC;IAED,OAAO;QACH,SAAS;QACT,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,gBAAgB,CAAC,MAAM;YAC/C,OAAO,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAClD,CAAC,CAAC;KACL,CAAC;AACN,CAAC;AAED,SAAS,qBAAqB,CAAC,WAAwB;IACnD,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QACzC,OAAO,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC;IAC1C,CAAC;IAED,OAAO,4BAA4B,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACnE,CAAC;AAED,SAAS,gBAAgB,CAAC,WAAwB,EAAE,IAAsB;IACtE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,WAAW,CAAC,KAAK,CAAC;IAEhD,MAAM,UAAU,GAAG,IAAI,GAAG,CACtB,uBAAuB,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,OAAO,CAAC,QAAQ;QACvD,OAAO,CAAE,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAE,CAAC;IACtD,CAAC,CAAC,CACL,CAAC;IAEF,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,SAAS,aAAa,CAAC,QAAQ;QAC9D,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;QAE3D,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,KAAK,CAAE,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC,MAAM,KAAK,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AACjE,CAAC;AAED,SAAS,SAAS,CACd,WAAwB,EACxB,IAAsB,EACtB,OAAsB,EACtB,OAAyB;IAEzB,MAAM,YAAY,GAAG,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IAEzD,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,cAAc,CAAC,IAAI;YAClD,OAAO,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;IACP,CAAC;IAED,OAAO,iBAAiB,CAAC,YAAY,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAC7D,CAAC;AAED,SAAS,YAAY,CAAC,WAAwB;IAC1C,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,GAAG,WAAW,CAAC,KAAK,CAAC;IAEzD,OAAO,CAAE,SAAS,SAAS,CAAC,KAAK,SAAS,eAAe,CAAC,IAAI,EAAE,CAAE,CAAC;AACvE,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,WAAwB,EAAE,OAAsB;IAClF,MAAM,IAAI,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,sBAAsB,CAAC;QACnC,WAAW,EAAE,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW;KACzD,CAAC,CAAC;IACH,MAAM,YAAY,GAAG;QACjB,GAAG,YAAY,CAAC,WAAW,CAAC;QAC5B,GAAG,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC;KACpD,CAAC;IAEF,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QACvB,OAAO,YAAY,CAAC;IACxB,CAAC;IAED,OAAO,CAAE,GAAG,YAAY,EAAE,GAAG,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAE,CAAC;AACjF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-local-test-plan.js","sourceRoot":"","sources":["../../../../source/run/run-local-test-plan.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAIhE,KAAK,UAAU,cAAc,CACzB,OAAmB,EACnB,
|
|
1
|
+
{"version":3,"file":"run-local-test-plan.js","sourceRoot":"","sources":["../../../../source/run/run-local-test-plan.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAIhE,KAAK,UAAU,cAAc,CACzB,OAAmB,EACnB,OAAyB,EACzB,KAA+C,EAC/C,YAAyC;IAEzC,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAEpE,OAAO,MAAM,0BAA0B,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;AACjH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACrC,OAAmB,EACnB,OAAyB,EACzB,KAA+C,EAC/C,YAAyC;IAEzC,IAAI,gBAAgB,GAAwC,SAAS,YAAY;QAC7E,OAAO,SAAS,CAAC;IACrB,CAAC,CAAC;IACF,MAAM,iBAAiB,GAAG,IAAI,OAAO,CAAQ,SAAS,yBAAyB,CAAC,QAAQ,EAAE,MAAM;QAC5F,gBAAgB,GAAG,MAAM,CAAC;IAC9B,CAAC,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,YAAY,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,sBAAsB;QAC7E,gBAAgB,CACZ,IAAI,kBAAkB,CAClB,yCAAyC,EACzC,EAAE,KAAK,EAAE,IAAI,EAAE,EACf,QAAQ,CACX,CACJ,CAAC;IACN,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC;IAE5C,IAAI,CAAC;QACD,OAAO,MAAM,OAAO,CAAC,IAAI,CAAC,CAAE,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,CAAC,EAAE,iBAAiB,CAAE,CAAC,CAAC;IAC5G,CAAC;YAAS,CAAC;QACP,YAAY,CAAC,SAAS,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IACjD,CAAC;AACL,CAAC"}
|
package/run/run-orchestrator.js
CHANGED
|
@@ -1,13 +1,9 @@
|
|
|
1
|
-
import { randomBytes } from 'node:crypto';
|
|
2
1
|
import { createWallClock } from '@enormora/wall-clock';
|
|
3
2
|
import { createExecute } from "../engine/execution.js";
|
|
4
3
|
import { createReporterDispatcher } from "../engine/reporter-dispatcher.js";
|
|
5
4
|
import { createNodeResourceUsageTracker } from "./resource-usage.js";
|
|
6
5
|
import { createRunOrchestrator } from "./run.js";
|
|
7
|
-
|
|
8
|
-
function createDefaultSeed() {
|
|
9
|
-
return randomBytes(seedByteLength).readBigUInt64BE();
|
|
10
|
-
}
|
|
6
|
+
import { createRandomRunSeed } from "./run-seed.js";
|
|
11
7
|
export function createNodeRunOrchestrator(input) {
|
|
12
8
|
const wallClock = createWallClock();
|
|
13
9
|
const reporterDispatcher = createReporterDispatcher({
|
|
@@ -16,7 +12,7 @@ export function createNodeRunOrchestrator(input) {
|
|
|
16
12
|
wallClock
|
|
17
13
|
});
|
|
18
14
|
return createRunOrchestrator({
|
|
19
|
-
createSeed:
|
|
15
|
+
createSeed: createRandomRunSeed,
|
|
20
16
|
createResourceUsageTracker(options) {
|
|
21
17
|
return createNodeResourceUsageTracker(wallClock, options);
|
|
22
18
|
},
|
|
@@ -25,6 +21,10 @@ export function createNodeRunOrchestrator(input) {
|
|
|
25
21
|
reporterDispatcher,
|
|
26
22
|
wallClock
|
|
27
23
|
}),
|
|
24
|
+
liveOutput: {
|
|
25
|
+
stderr: { write: input.stderr.write },
|
|
26
|
+
stdout: { write: input.stdout.write }
|
|
27
|
+
},
|
|
28
28
|
node: input.node,
|
|
29
29
|
reporterDispatcher,
|
|
30
30
|
runtimeCapabilityPolicy: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-orchestrator.js","sourceRoot":"","sources":["../../../../source/run/run-orchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"run-orchestrator.js","sourceRoot":"","sources":["../../../../source/run/run-orchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvD,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,8BAA8B,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAsBpD,MAAM,UAAU,yBAAyB,CAAC,KAA+B;IACrE,MAAM,SAAS,GAAG,eAAe,EAAE,CAAC;IACpC,MAAM,kBAAkB,GAAG,wBAAwB,CAAC;QAChD,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,SAAS;KACZ,CAAC,CAAC;IAEH,OAAO,qBAAqB,CAAC;QACzB,UAAU,EAAE,mBAAmB;QAC/B,0BAA0B,CAAC,OAAO;YAC9B,OAAO,8BAA8B,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC9D,CAAC;QACD,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,OAAO,EAAE,aAAa,CAAC;YACnB,kBAAkB;YAClB,SAAS;SACZ,CAAC;QACF,UAAU,EAAE;YACR,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE;YACrC,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE;SACxC;QACD,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,kBAAkB;QAClB,uBAAuB,EAAE;YACrB,qBAAqB,EAAE,KAAK,CAAC,qBAAqB;YAClD,kCAAkC,EAAE,KAAK,CAAC,kCAAkC;YAC5E,eAAe,EAAE,KAAK,CAAC,eAAe;YACtC,WAAW,EAAE,KAAK,CAAC,WAAW;SACjC;QACD,SAAS;KACZ,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-process-engine.js","sourceRoot":"","sources":["../../../../source/run/run-process-engine.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGjD,SAAS,iBAAiB,CAAC,
|
|
1
|
+
{"version":3,"file":"run-process-engine.js","sourceRoot":"","sources":["../../../../source/run/run-process-engine.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGjD,SAAS,iBAAiB,CAAC,OAAyB;IAChD,OAAO,OAAO,CAAC,SAAS,CAAC,YAAY,KAAK,oBAAoB,CAAC;AACnE,CAAC;AAED,SAAS,+BAA+B,CAAC,OAAmB;IACxD,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QACrC,cAAc,CAAC,4FAA4F,CAAC,CAAC;IACjH,CAAC;AACL,CAAC;AAED,SAAS,UAAU,CAAC,SAAiB;IACjC,IAAI,CAAC;QACD,OAAO,aAAa,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACL,cAAc,CAAC,kEAAkE,CAAC,CAAC;IACvF,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;AAChE,CAAC;AAED,SAAS,SAAS,CAAC,GAAW,EAAE,QAAgB;IAC5C,MAAM,kBAAkB,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAExD,OAAO,CAAC,kBAAkB,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;AACxF,CAAC;AAED,SAAS,+BAA+B,CAAC,OAAmB;IACxD,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACnC,OAAO;IACX,CAAC;IAED,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;QAChE,cAAc,CAAC,uDAAuD,CAAC,CAAC;IAC5E,CAAC;AACL,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,OAAmB,EAAE,OAAyB;IACvF,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9B,OAAO;IACX,CAAC;IAED,+BAA+B,CAAC,OAAO,CAAC,CAAC;IACzC,+BAA+B,CAAC,OAAO,CAAC,CAAC;AAC7C,CAAC"}
|
package/run/run-seed.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-seed.js","sourceRoot":"","sources":["../../../../source/run/run-seed.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,cAAc,GAAG,CAAC,CAAC;AAEzB,MAAM,UAAU,mBAAmB;IAC/B,OAAO,WAAW,CAAC,cAAc,CAAC,CAAC,eAAe,EAAE,CAAC;AACzD,CAAC"}
|
package/run/run-selection.js
CHANGED
|
@@ -1,6 +1,56 @@
|
|
|
1
|
+
import { uniformInt } from 'pure-rand/distribution/uniformInt';
|
|
2
|
+
import { xoroshiro128plus } from 'pure-rand/generator/xoroshiro128plus';
|
|
1
3
|
import { createCaseId } from "../engine/identity.js";
|
|
2
4
|
import { noTestsCollected, RunCollectionError } from "./run-errors.js";
|
|
3
5
|
import { matchesRunFilter } from "./run-selection-filters.js";
|
|
6
|
+
import { createRandomRunSeed } from "./run-seed.js";
|
|
7
|
+
const randomSeedRange = 4294967296n;
|
|
8
|
+
function resolvedSeed(seed) {
|
|
9
|
+
if (seed.value === null) {
|
|
10
|
+
throw new Error('Seeded ordering requires a resolved run seed.');
|
|
11
|
+
}
|
|
12
|
+
return seed.value;
|
|
13
|
+
}
|
|
14
|
+
function generatorSeed(seed) {
|
|
15
|
+
const normalizedSeed = (seed % randomSeedRange + randomSeedRange) % randomSeedRange;
|
|
16
|
+
return Number(normalizedSeed);
|
|
17
|
+
}
|
|
18
|
+
function arrayEntry(values, index) {
|
|
19
|
+
const value = values[index];
|
|
20
|
+
if (value === undefined) {
|
|
21
|
+
throw new Error('Seeded ordering selected an invalid case index.');
|
|
22
|
+
}
|
|
23
|
+
return value;
|
|
24
|
+
}
|
|
25
|
+
function seededOrder(values, seed) {
|
|
26
|
+
const random = xoroshiro128plus(generatorSeed(seed));
|
|
27
|
+
const ordered = Array.from(values);
|
|
28
|
+
for (let index = ordered.length - 1; index > 0; index -= 1) {
|
|
29
|
+
const swapIndex = uniformInt(random, 0, index);
|
|
30
|
+
const leftValue = arrayEntry(ordered, index);
|
|
31
|
+
const rightValue = arrayEntry(ordered, swapIndex);
|
|
32
|
+
ordered[index] = rightValue;
|
|
33
|
+
ordered[swapIndex] = leftValue;
|
|
34
|
+
}
|
|
35
|
+
return ordered;
|
|
36
|
+
}
|
|
37
|
+
export function orderedRunCases(cases, order, seed) {
|
|
38
|
+
return order === 'seeded' ? seededOrder(cases, resolvedSeed(seed)) : cases;
|
|
39
|
+
}
|
|
40
|
+
export function orderedTestPlan(testPlan, order, seed) {
|
|
41
|
+
const cases = orderedRunCases(testPlan.cases, order, seed);
|
|
42
|
+
return {
|
|
43
|
+
...testPlan,
|
|
44
|
+
cases
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
export function createSeededTestPlan(testPlan) {
|
|
48
|
+
const seed = { value: createRandomRunSeed() };
|
|
49
|
+
return {
|
|
50
|
+
seed,
|
|
51
|
+
testPlan: orderedTestPlan(testPlan, 'seeded', seed)
|
|
52
|
+
};
|
|
53
|
+
}
|
|
4
54
|
function invalidFamilyMessage(testFamily, expectedFamily) {
|
|
5
55
|
return `Run profile "${expectedFamily}" cannot run test case with metadata.kind "${testFamily}".`;
|
|
6
56
|
}
|
|
@@ -48,18 +98,22 @@ function matchesTestPlanCase(selection) {
|
|
|
48
98
|
});
|
|
49
99
|
};
|
|
50
100
|
}
|
|
51
|
-
|
|
101
|
+
function selectedTestPlanCases(testPlan, selection) {
|
|
52
102
|
return selectedCases(testPlan.discoveredCases, selection, matchesTestPlanCase(selection));
|
|
53
103
|
}
|
|
104
|
+
export function selectedNonEmptyTestPlanCases(testPlan, selection) {
|
|
105
|
+
const cases = selectedTestPlanCases(testPlan, selection).plannedCases;
|
|
106
|
+
const firstCase = cases[0];
|
|
107
|
+
return firstCase === undefined ? null : [firstCase, ...cases.slice(1)];
|
|
108
|
+
}
|
|
54
109
|
export function selectedTestPlan(testPlan, selection) {
|
|
55
|
-
const
|
|
56
|
-
|
|
57
|
-
if (firstCase === undefined) {
|
|
110
|
+
const cases = selectedNonEmptyTestPlanCases(testPlan, selection);
|
|
111
|
+
if (cases === null) {
|
|
58
112
|
noTestsCollected('Run selection matched no test cases.');
|
|
59
113
|
}
|
|
60
114
|
return {
|
|
61
115
|
...testPlan,
|
|
62
|
-
cases
|
|
116
|
+
cases
|
|
63
117
|
};
|
|
64
118
|
}
|
|
65
119
|
function collectedCaseId(file, testCase) {
|