@overkill-dev/run 0.0.17 → 0.0.19
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/case-execution.d.ts +22 -0
- package/engine/case-execution.d.ts.map +1 -0
- package/engine/case-execution.js +10 -1
- package/engine/case-execution.js.map +1 -1
- package/engine/execution-result.js +4 -0
- package/engine/execution-result.js.map +1 -1
- package/engine/execution-supervision.d.ts +2 -0
- package/engine/execution-supervision.d.ts.map +1 -1
- package/engine/execution-supervision.js +28 -21
- package/engine/execution-supervision.js.map +1 -1
- package/engine/execution.d.ts +4 -1
- package/engine/execution.d.ts.map +1 -1
- package/engine/execution.js +9 -1
- package/engine/execution.js.map +1 -1
- package/engine/resource-usage-growth.js +12 -0
- package/engine/resource-usage-growth.js.map +1 -0
- package/engine/run-result.d.ts +3 -1
- package/engine/run-result.d.ts.map +1 -1
- package/engine/run-result.js.map +1 -1
- package/package.json +6 -3
- package/packages/run/run.entry-point.d.ts +2 -2
- package/packages/run/run.entry-point.d.ts.map +1 -1
- package/packages/run/run.entry-point.js +1 -1
- package/packages/run/run.entry-point.js.map +1 -1
- package/readme.md +39 -2
- package/run/capability-policy.d.ts +47 -0
- package/run/capability-policy.d.ts.map +1 -0
- package/run/capability-policy.js +395 -0
- package/run/capability-policy.js.map +1 -0
- package/run/collected-run-plan.js +100 -0
- package/run/collected-run-plan.js.map +1 -0
- package/run/command-line-runner.d.ts.map +1 -1
- package/run/command-line-runner.js +6 -3
- package/run/command-line-runner.js.map +1 -1
- package/run/node-host-readers.js +13 -0
- package/run/node-host-readers.js.map +1 -0
- package/run/node-process-capability-restrictions.js +92 -0
- package/run/node-process-capability-restrictions.js.map +1 -0
- package/run/run-config-schema.d.ts +5 -0
- package/run/run-config-schema.d.ts.map +1 -1
- package/run/run-config-schema.js +1 -0
- package/run/run-config-schema.js.map +1 -1
- package/run/run-config.d.ts.map +1 -1
- package/run/run-config.js +8 -2
- package/run/run-config.js.map +1 -1
- package/run/run-engine-selection.js +92 -0
- package/run/run-engine-selection.js.map +1 -0
- package/run/run-facts.js +103 -0
- package/run/run-facts.js.map +1 -0
- package/run/run-local-test-plan.js +25 -0
- package/run/run-local-test-plan.js.map +1 -0
- package/run/run-orchestrator.entry-point.d.ts +2 -0
- package/run/run-orchestrator.entry-point.d.ts.map +1 -0
- package/run/run-orchestrator.entry-point.js +31 -0
- package/run/run-orchestrator.entry-point.js.map +1 -0
- package/run/run-orchestrator.js +27 -33
- package/run/run-orchestrator.js.map +1 -1
- package/run/run-process-engine.js +40 -0
- package/run/run-process-engine.js.map +1 -0
- package/run/run-support.js +133 -0
- package/run/run-support.js.map +1 -0
- package/run/run-test-plan.js +20 -0
- package/run/run-test-plan.js.map +1 -0
- package/run/run-types.d.ts +60 -4
- package/run/run-types.d.ts.map +1 -1
- package/run/run-types.js.map +1 -1
- package/run/run-validation.js +122 -0
- package/run/run-validation.js.map +1 -0
- package/run/run.js +191 -329
- package/run/run.js.map +1 -1
- package/run/supervised-child-process.js +127 -0
- package/run/supervised-child-process.js.map +1 -0
- package/run/supervised-run-resource-policy.js +64 -0
- package/run/supervised-run-resource-policy.js.map +1 -0
- package/run/supervised-run-runtime.js +257 -0
- package/run/supervised-run-runtime.js.map +1 -0
- package/run/supervised-run-state.js +109 -0
- package/run/supervised-run-state.js.map +1 -0
- package/run/supervised-run.js +209 -299
- package/run/supervised-run.js.map +1 -1
- package/sbom.cdx.json +4 -4
- package/run/run-orchestrator.d.ts +0 -3
- package/run/run-orchestrator.d.ts.map +0 -1
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import { fileURLToPath } from 'node:url';
|
|
3
|
+
import { invalidRequest } from "./run-errors.js";
|
|
4
|
+
function supervisedProcess(profile) {
|
|
5
|
+
return profile.execution.processModel === 'supervised-process';
|
|
6
|
+
}
|
|
7
|
+
function assertSupportedSupervisedEngine(command) {
|
|
8
|
+
if (command.engine.kind === 'instance') {
|
|
9
|
+
invalidRequest('Instance engines are not supported with supervised-process execution. Use a module engine.');
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
function modulePath(moduleUrl) {
|
|
13
|
+
try {
|
|
14
|
+
return fileURLToPath(moduleUrl);
|
|
15
|
+
}
|
|
16
|
+
catch {
|
|
17
|
+
invalidRequest('Supervised custom engine moduleUrl must be a file URL under cwd.');
|
|
18
|
+
}
|
|
19
|
+
throw new Error('Unreachable module URL validation state.');
|
|
20
|
+
}
|
|
21
|
+
function insideCwd(cwd, filePath) {
|
|
22
|
+
const relativeModulePath = path.relative(cwd, filePath);
|
|
23
|
+
return !relativeModulePath.startsWith('..') && !path.isAbsolute(relativeModulePath);
|
|
24
|
+
}
|
|
25
|
+
function assertSupportedSupervisedModule(command) {
|
|
26
|
+
if (command.engine.kind !== 'module') {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
if (!insideCwd(command.cwd, modulePath(command.engine.moduleUrl))) {
|
|
30
|
+
invalidRequest('Supervised custom engine moduleUrl must be under cwd.');
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
export function assertSupportedProcessEngine(command, profile) {
|
|
34
|
+
if (!supervisedProcess(profile)) {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
assertSupportedSupervisedEngine(command);
|
|
38
|
+
assertSupportedSupervisedModule(command);
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=run-process-engine.js.map
|
|
@@ -0,0 +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,OAAkC;IACzD,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,OAAkC;IAChG,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"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { createRuntimeCapabilityPolicy } from "./capability-policy.js";
|
|
2
|
+
function copyLoaderConfig(loader) {
|
|
3
|
+
return {
|
|
4
|
+
sourceMaps: loader.sourceMaps,
|
|
5
|
+
stripMode: loader.stripMode
|
|
6
|
+
};
|
|
7
|
+
}
|
|
8
|
+
function copyRunShard(shard) {
|
|
9
|
+
return {
|
|
10
|
+
index: shard.index,
|
|
11
|
+
total: shard.total
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
export function copyResourceBudgets(resourceBudgets) {
|
|
15
|
+
return {
|
|
16
|
+
activeResourceCount: resourceBudgets.activeResourceCount,
|
|
17
|
+
javaScriptEngineHeapBytes: resourceBudgets.javaScriptEngineHeapBytes,
|
|
18
|
+
residentSetBytes: resourceBudgets.residentSetBytes,
|
|
19
|
+
residentSetGrowthBytesPerSecond: resourceBudgets.residentSetGrowthBytesPerSecond
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
function copyResourceBudgetOverrides(overrides) {
|
|
23
|
+
if (overrides === null) {
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
return copyResourceBudgets(overrides);
|
|
27
|
+
}
|
|
28
|
+
function copyResourceUsagePolicy(policy) {
|
|
29
|
+
return {
|
|
30
|
+
budgets: copyResourceBudgets(policy.budgets),
|
|
31
|
+
measure: policy.measure,
|
|
32
|
+
samplingIntervalMilliseconds: policy.samplingIntervalMilliseconds
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
function copyTimeoutPolicy(policy) {
|
|
36
|
+
return {
|
|
37
|
+
collectionMilliseconds: policy.collectionMilliseconds,
|
|
38
|
+
hardMilliseconds: policy.hardMilliseconds,
|
|
39
|
+
softMilliseconds: policy.softMilliseconds
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
function copyExecution(execution) {
|
|
43
|
+
return {
|
|
44
|
+
processModel: execution.processModel,
|
|
45
|
+
scheduling: execution.scheduling
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
function copyProfileConfig(profile) {
|
|
49
|
+
return {
|
|
50
|
+
execution: copyExecution(profile.execution),
|
|
51
|
+
reporters: profile.reporters === null ? null : Array.from(profile.reporters),
|
|
52
|
+
resourceUsage: copyResourceUsagePolicy(profile.resourceUsage),
|
|
53
|
+
testFamily: profile.testFamily,
|
|
54
|
+
timeouts: copyTimeoutPolicy(profile.timeouts)
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
function copyRunProfilesConfig(profiles) {
|
|
58
|
+
return Object.fromEntries(Object.entries(profiles).map(function copyProfileEntry([name, profile]) {
|
|
59
|
+
return [name, copyProfileConfig(profile)];
|
|
60
|
+
}));
|
|
61
|
+
}
|
|
62
|
+
export function copyRunRequest(request) {
|
|
63
|
+
return {
|
|
64
|
+
baselineUpdateMode: request.baselineUpdateMode,
|
|
65
|
+
capabilityRestrictions: { mode: request.capabilityRestrictions.mode },
|
|
66
|
+
capture: request.capture,
|
|
67
|
+
debug: {
|
|
68
|
+
mode: request.debug.mode,
|
|
69
|
+
selectors: []
|
|
70
|
+
},
|
|
71
|
+
execution: { mode: request.execution.mode },
|
|
72
|
+
measureResourceUsage: request.measureResourceUsage,
|
|
73
|
+
order: request.order,
|
|
74
|
+
paths: Array.from(request.paths),
|
|
75
|
+
profile: request.profile,
|
|
76
|
+
resourceBudgetOverrides: copyResourceBudgetOverrides(request.resourceBudgetOverrides),
|
|
77
|
+
resourceUsageSamplingIntervalMilliseconds: request.resourceUsageSamplingIntervalMilliseconds,
|
|
78
|
+
seed: { value: request.seed.value },
|
|
79
|
+
selection: { kind: request.selection.kind },
|
|
80
|
+
shard: copyRunShard(request.shard),
|
|
81
|
+
verbose: request.verbose
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
export function copyRunConfig(config) {
|
|
85
|
+
return {
|
|
86
|
+
loader: copyLoaderConfig(config.loader),
|
|
87
|
+
outputRenderer: config.outputRenderer,
|
|
88
|
+
profiles: copyRunProfilesConfig(config.profiles),
|
|
89
|
+
reporters: Array.from(config.reporters),
|
|
90
|
+
runtimeStateDir: config.runtimeStateDir
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
export function copyRunEngineSelection(engine) {
|
|
94
|
+
if (engine.kind === 'instance') {
|
|
95
|
+
return {
|
|
96
|
+
engine: engine.engine,
|
|
97
|
+
kind: 'instance'
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
if (engine.kind === 'module') {
|
|
101
|
+
return {
|
|
102
|
+
exportKind: engine.exportKind,
|
|
103
|
+
exportName: engine.exportName,
|
|
104
|
+
kind: 'module',
|
|
105
|
+
moduleUrl: engine.moduleUrl
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
return { kind: 'default' };
|
|
109
|
+
}
|
|
110
|
+
export function runEngineFacts(engine) {
|
|
111
|
+
if (engine.kind === 'instance') {
|
|
112
|
+
return { kind: 'instance' };
|
|
113
|
+
}
|
|
114
|
+
if (engine.kind === 'module') {
|
|
115
|
+
return {
|
|
116
|
+
exportKind: engine.exportKind,
|
|
117
|
+
exportName: engine.exportName,
|
|
118
|
+
kind: 'module',
|
|
119
|
+
moduleUrl: engine.moduleUrl
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
return { kind: 'default' };
|
|
123
|
+
}
|
|
124
|
+
export function createRunRuntimePolicy(request, dependencies) {
|
|
125
|
+
return request.capabilityRestrictions.mode === 'enabled'
|
|
126
|
+
? createRuntimeCapabilityPolicy({
|
|
127
|
+
dependencies: dependencies.runtimeCapabilityPolicy,
|
|
128
|
+
observedStderr: false,
|
|
129
|
+
observedStdout: false
|
|
130
|
+
})
|
|
131
|
+
: null;
|
|
132
|
+
}
|
|
133
|
+
//# sourceMappingURL=run-support.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-support.js","sourceRoot":"","sources":["../../../../source/run/run-support.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,6BAA6B,EAEhC,MAAM,wBAAwB,CAAC;AAmBhC,SAAS,gBAAgB,CAAC,MAAuB;IAC7C,OAAO;QACH,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,SAAS,EAAE,MAAM,CAAC,SAAS;KAC9B,CAAC;AACN,CAAC;AAED,SAAS,YAAY,CAAC,KAAe;IACjC,OAAO;QACH,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,KAAK,EAAE,KAAK,CAAC,KAAK;KACrB,CAAC;AACN,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,eAAmC;IACnE,OAAO;QACH,mBAAmB,EAAE,eAAe,CAAC,mBAAmB;QACxD,yBAAyB,EAAE,eAAe,CAAC,yBAAyB;QACpE,gBAAgB,EAAE,eAAe,CAAC,gBAAgB;QAClD,+BAA+B,EAAE,eAAe,CAAC,+BAA+B;KACnF,CAAC;AACN,CAAC;AAED,SAAS,2BAA2B,CAAC,SAAoC;IACrE,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO,mBAAmB,CAAC,SAAS,CAAC,CAAC;AAC1C,CAAC;AAED,SAAS,uBAAuB,CAAC,MAA8B;IAC3D,OAAO;QACH,OAAO,EAAE,mBAAmB,CAAC,MAAM,CAAC,OAAO,CAAC;QAC5C,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,4BAA4B,EAAE,MAAM,CAAC,4BAA4B;KACpE,CAAC;AACN,CAAC;AAED,SAAS,iBAAiB,CAAC,MAAwB;IAC/C,OAAO;QACH,sBAAsB,EAAE,MAAM,CAAC,sBAAsB;QACrD,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;QACzC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;KAC5C,CAAC;AACN,CAAC;AAED,SAAS,aAAa,CAAC,SAAgC;IACnD,OAAO;QACH,YAAY,EAAE,SAAS,CAAC,YAAY;QACpC,UAAU,EAAE,SAAS,CAAC,UAAU;KACnC,CAAC;AACN,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAkC;IACzD,OAAO;QACH,SAAS,EAAE,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC;QAC3C,SAAS,EAAE,OAAO,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;QAC5E,aAAa,EAAE,uBAAuB,CAAC,OAAO,CAAC,aAAa,CAAC;QAC7D,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,QAAQ,EAAE,iBAAiB,CAAC,OAAO,CAAC,QAAQ,CAAC;KAChD,CAAC;AACN,CAAC;AAED,SAAS,qBAAqB,CAAC,QAA2B;IACtD,OAAO,MAAM,CAAC,WAAW,CACrB,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,SAAS,gBAAgB,CAAC,CAAE,IAAI,EAAE,OAAO,CAAE;QACpE,OAAO,CAAE,IAAI,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAE,CAAC;IAChD,CAAC,CAAC,CACL,CAAC;AACN,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,OAAmB;IAC9C,OAAO;QACH,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;QAC9C,sBAAsB,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,sBAAsB,CAAC,IAAI,EAAE;QACrE,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,KAAK,EAAE;YACH,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI;YACxB,SAAS,EAAE,EAAE;SAChB;QACD,SAAS,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE;QAC3C,oBAAoB,EAAE,OAAO,CAAC,oBAAoB;QAClD,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;QAChC,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,uBAAuB,EAAE,2BAA2B,CAAC,OAAO,CAAC,uBAAuB,CAAC;QACrF,yCAAyC,EAAE,OAAO,CAAC,yCAAyC;QAC5F,IAAI,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE;QACnC,SAAS,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE;QAC3C,KAAK,EAAE,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC;QAClC,OAAO,EAAE,OAAO,CAAC,OAAO;KAC3B,CAAC;AACN,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,MAAiB;IAC3C,OAAO;QACH,MAAM,EAAE,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC;QACvC,cAAc,EAAE,MAAM,CAAC,cAAc;QACrC,QAAQ,EAAE,qBAAqB,CAAC,MAAM,CAAC,QAAQ,CAAC;QAChD,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;QACvC,eAAe,EAAE,MAAM,CAAC,eAAe;KAC1C,CAAC;AACN,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,MAA0B;IAC7D,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAC7B,OAAO;YACH,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,IAAI,EAAE,UAAU;SACnB,CAAC;IACN,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC3B,OAAO;YACH,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,IAAI,EAAE,QAAQ;YACd,SAAS,EAAE,MAAM,CAAC,SAAS;SAC9B,CAAC;IACN,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,MAA0B;IACrD,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAC7B,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;IAChC,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC3B,OAAO;YACH,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,IAAI,EAAE,QAAQ;YACd,SAAS,EAAE,MAAM,CAAC,SAAS;SAC9B,CAAC;IACN,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,sBAAsB,CAClC,OAAmB,EACnB,YAAyC;IAEzC,OAAO,OAAO,CAAC,sBAAsB,CAAC,IAAI,KAAK,SAAS;QACpD,CAAC,CAAC,6BAA6B,CAAC;YAC5B,YAAY,EAAE,YAAY,CAAC,uBAAuB;YAClD,cAAc,EAAE,KAAK;YACrB,cAAc,EAAE,KAAK;SACxB,CAAC;QACF,CAAC,CAAC,IAAI,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { discoverRunFiles } from "./run-discovery.js";
|
|
2
|
+
import { RunCollectionError } from "./run-errors.js";
|
|
3
|
+
import { loadRunTestModules } from "./run-test-modules.js";
|
|
4
|
+
export async function createRunTestPlan(input) {
|
|
5
|
+
const files = await discoverRunFiles({ cwd: input.cwd, paths: input.paths });
|
|
6
|
+
const testFiles = await loadRunTestModules(files, input.engine);
|
|
7
|
+
try {
|
|
8
|
+
return input.engine.createTestPlanFromTestFiles({
|
|
9
|
+
files: testFiles,
|
|
10
|
+
root: {
|
|
11
|
+
metadata: {},
|
|
12
|
+
name: input.cwd
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
catch (error) {
|
|
17
|
+
throw new RunCollectionError('Failed to collect tests from explicit run inputs.', { cause: error }, 'loader');
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=run-test-plan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-test-plan.js","sourceRoot":"","sources":["../../../../source/run/run-test-plan.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAQ3D,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,KAAuB;IAC3D,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;IAC7E,MAAM,SAAS,GAAG,MAAM,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAEhE,IAAI,CAAC;QACD,OAAO,KAAK,CAAC,MAAM,CAAC,2BAA2B,CAAC;YAC5C,KAAK,EAAE,SAAS;YAChB,IAAI,EAAE;gBACF,QAAQ,EAAE,EAAE;gBACZ,IAAI,EAAE,KAAK,CAAC,GAAG;aAClB;SACJ,CAAC,CAAC;IACP,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACtB,MAAM,IAAI,kBAAkB,CAAC,mDAAmD,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,QAAQ,CAAC,CAAC;IAClH,CAAC;AACL,CAAC"}
|
package/run/run-types.d.ts
CHANGED
|
@@ -3,13 +3,25 @@ import type { SerializedValue as SerializedValueShape } from '../compare/seriali
|
|
|
3
3
|
import type { Execute } from '../engine/execution.ts';
|
|
4
4
|
import type { Engine } from '../engine/engine.ts';
|
|
5
5
|
import type { ReporterDispatcher } from '../engine/reporter-dispatcher.ts';
|
|
6
|
-
import type { RunResourceUsageTracker, RunResult } from '../engine/run-result.ts';
|
|
6
|
+
import type { OrphanedNode, RunResourceUsageTracker, RunResult } from '../engine/run-result.ts';
|
|
7
7
|
import type { TestPlan } from '../engine/test-plan.ts';
|
|
8
|
+
import type { RuntimeCapabilityPolicyDependencies } from './capability-policy.ts';
|
|
8
9
|
import type { ResourceUsageTrackerOptions } from './resource-usage.ts';
|
|
9
10
|
export type SerializedValue = SerializedValueShape;
|
|
10
11
|
type RunExecuteOptions = NonNullable<Parameters<Execute>[1]>;
|
|
11
12
|
type RunOutputRenderer = NonNullable<RunExecuteOptions['outputRenderer']>;
|
|
12
13
|
type RunReporters = RunExecuteOptions['reporters'];
|
|
14
|
+
export type RunEngineSelection = {
|
|
15
|
+
readonly engine: Engine;
|
|
16
|
+
readonly kind: 'instance';
|
|
17
|
+
} | {
|
|
18
|
+
readonly exportKind: 'getter' | 'value';
|
|
19
|
+
readonly exportName: string;
|
|
20
|
+
readonly kind: 'module';
|
|
21
|
+
readonly moduleUrl: string;
|
|
22
|
+
} | {
|
|
23
|
+
readonly kind: 'default';
|
|
24
|
+
};
|
|
13
25
|
export type RunSelection = {
|
|
14
26
|
readonly kind: 'all';
|
|
15
27
|
};
|
|
@@ -20,6 +32,9 @@ export type RunShard = {
|
|
|
20
32
|
export type RunExecutionRequest = {
|
|
21
33
|
readonly mode: 'profile-default';
|
|
22
34
|
};
|
|
35
|
+
type RunCapabilityRestrictionsRequest = {
|
|
36
|
+
readonly mode: 'disabled' | 'enabled';
|
|
37
|
+
};
|
|
23
38
|
export type RunSeed = {
|
|
24
39
|
readonly value: bigint | null;
|
|
25
40
|
};
|
|
@@ -50,6 +65,7 @@ export type RunResourceUsagePolicy = {
|
|
|
50
65
|
readonly samplingIntervalMilliseconds: number;
|
|
51
66
|
};
|
|
52
67
|
export type RunTimeoutPolicy = {
|
|
68
|
+
readonly collectionMilliseconds: number;
|
|
53
69
|
readonly hardMilliseconds: number;
|
|
54
70
|
readonly softMilliseconds: number;
|
|
55
71
|
};
|
|
@@ -73,6 +89,7 @@ export type RunConfig = {
|
|
|
73
89
|
};
|
|
74
90
|
export type RunRequest = {
|
|
75
91
|
readonly baselineUpdateMode: 'none';
|
|
92
|
+
readonly capabilityRestrictions: RunCapabilityRestrictionsRequest;
|
|
76
93
|
readonly capture: 'buffered' | 'live';
|
|
77
94
|
readonly debug: RunDebugRequest;
|
|
78
95
|
readonly execution: RunExecutionRequest;
|
|
@@ -90,7 +107,7 @@ export type RunRequest = {
|
|
|
90
107
|
export type RunCommand = {
|
|
91
108
|
readonly config: RunConfig;
|
|
92
109
|
readonly cwd: string;
|
|
93
|
-
readonly engine:
|
|
110
|
+
readonly engine: RunEngineSelection;
|
|
94
111
|
readonly request: RunRequest;
|
|
95
112
|
};
|
|
96
113
|
export type RunFacts = {
|
|
@@ -116,6 +133,7 @@ export type RunExecutionFacts = {
|
|
|
116
133
|
readonly baselineUpdateMode: 'none';
|
|
117
134
|
readonly capture: 'buffered' | 'live';
|
|
118
135
|
readonly debug: RunDebugRequest;
|
|
136
|
+
readonly engine: RunEngineFacts;
|
|
119
137
|
readonly order: 'plan';
|
|
120
138
|
readonly processModel: RunProcessModel;
|
|
121
139
|
readonly profile: string;
|
|
@@ -129,26 +147,64 @@ export type RunReproducibilityFacts = {
|
|
|
129
147
|
readonly seed: string;
|
|
130
148
|
readonly shard: RunShard;
|
|
131
149
|
};
|
|
150
|
+
export type RunEngineFacts = {
|
|
151
|
+
readonly exportKind: 'getter' | 'value';
|
|
152
|
+
readonly exportName: string;
|
|
153
|
+
readonly kind: 'module';
|
|
154
|
+
readonly moduleUrl: string;
|
|
155
|
+
} | {
|
|
156
|
+
readonly kind: 'default';
|
|
157
|
+
} | {
|
|
158
|
+
readonly kind: 'instance';
|
|
159
|
+
};
|
|
160
|
+
export type CollectedRunCase = {
|
|
161
|
+
readonly metadata: SerializedValue;
|
|
162
|
+
readonly name: string;
|
|
163
|
+
readonly params: string | null;
|
|
164
|
+
readonly suite: readonly string[];
|
|
165
|
+
};
|
|
166
|
+
export type CollectedRunFile = {
|
|
167
|
+
readonly cases: readonly CollectedRunCase[];
|
|
168
|
+
readonly file: string;
|
|
169
|
+
};
|
|
170
|
+
export type CollectedRunPlan = {
|
|
171
|
+
readonly defined: number;
|
|
172
|
+
readonly files: readonly CollectedRunFile[];
|
|
173
|
+
readonly orphans: readonly OrphanedNode[];
|
|
174
|
+
readonly root: {
|
|
175
|
+
readonly metadata: SerializedValue;
|
|
176
|
+
readonly name: string;
|
|
177
|
+
};
|
|
178
|
+
};
|
|
179
|
+
export type ResolvedRunPlan = {
|
|
180
|
+
readonly collectedPlan: CollectedRunPlan;
|
|
181
|
+
readonly kind: 'supervised';
|
|
182
|
+
} | {
|
|
183
|
+
readonly kind: 'local';
|
|
184
|
+
readonly testPlan: TestPlan;
|
|
185
|
+
};
|
|
132
186
|
export type ResolvedRun = {
|
|
187
|
+
readonly collectionRunnerErrors: readonly RunResult['runnerErrors'][number][];
|
|
133
188
|
readonly config: RunConfig;
|
|
134
189
|
readonly cwd: string;
|
|
190
|
+
readonly engine: RunEngineSelection;
|
|
135
191
|
readonly facts: RunFacts;
|
|
192
|
+
readonly plan: ResolvedRunPlan;
|
|
136
193
|
readonly reporters: RunReporters;
|
|
137
194
|
readonly request: RunRequest;
|
|
138
|
-
readonly testPlan: TestPlan;
|
|
139
195
|
};
|
|
140
196
|
export type RunOrchestratorDependencies = {
|
|
141
197
|
readonly createSeed: () => bigint;
|
|
142
198
|
readonly createResourceUsageTracker: (options: ResourceUsageTrackerOptions) => RunResourceUsageTracker;
|
|
143
199
|
readonly defaultEngine: Engine;
|
|
144
200
|
readonly execute: Execute;
|
|
201
|
+
readonly runtimeCapabilityPolicy: RuntimeCapabilityPolicyDependencies;
|
|
145
202
|
readonly node: {
|
|
146
203
|
readonly arch: string;
|
|
147
204
|
readonly platform: string;
|
|
148
205
|
readonly version: string;
|
|
149
206
|
};
|
|
150
207
|
readonly reporterDispatcher: ReporterDispatcher;
|
|
151
|
-
readonly readStartedAt: () => string;
|
|
152
208
|
readonly wallClock: WallClock;
|
|
153
209
|
};
|
|
154
210
|
export type RunOrchestrator = {
|
package/run/run-types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-types.d.ts","sourceRoot":"","sources":["../../../../source/run/run-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,eAAe,IAAI,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAC9F,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,KAAK,EAAE,uBAAuB,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"run-types.d.ts","sourceRoot":"","sources":["../../../../source/run/run-types.ts"],"names":[],"mappings":"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"}
|
package/run/run-types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-types.js","sourceRoot":"","sources":["../../../../source/run/run-types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"run-types.js","sourceRoot":"","sources":["../../../../source/run/run-types.ts"],"names":[],"mappings":"AAiEA,MAAM,qBAAqB,GAAG,oBAAoB,CAAC;AACnD,MAAM,4BAA4B,GAAG,WAAW,CAAC;AA4LjD,MAAM,UAAU,4BAA4B,CAAC,WAAmB;IAC5D,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;QAC3C,OAAO,yBAAyB,WAAW,KAAK;YAC5C,kFAAkF,CAAC;IAC3F,CAAC;IAED,IAAI,WAAW,KAAK,4BAA4B,EAAE,CAAC;QAC/C,OAAO,oGAAoG,CAAC;IAChH,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { discoverRunFiles } from "./run-discovery.js";
|
|
2
|
+
import { assertSupportedProcessEngine as assertSupportedProcessEngineSelection } from "./run-process-engine.js";
|
|
3
|
+
import { invalidRequest, noTestsCollected, unsupportedRequest } from "./run-errors.js";
|
|
4
|
+
import { validateRunEngineSelection } from "./run-engine-selection.js";
|
|
5
|
+
import { invalidRunProfileNameMessage } from "./run-types.js";
|
|
6
|
+
const minimumSeedValue = 0n;
|
|
7
|
+
function validateRunShard(request) {
|
|
8
|
+
if (request.shard.index !== 0 || request.shard.total !== 1) {
|
|
9
|
+
unsupportedRequest('Sharding is not implemented yet.');
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
function validateRunSeed(request) {
|
|
13
|
+
if (request.seed.value !== null && request.seed.value < minimumSeedValue) {
|
|
14
|
+
invalidRequest('Run seed must be a nonnegative bigint.');
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
function validatePositiveSafeInteger(value, label) {
|
|
18
|
+
if (value !== null && (!Number.isSafeInteger(value) || value <= 0)) {
|
|
19
|
+
invalidRequest(`${label} must be a positive safe integer.`);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
function validateResourceBudgets(resourceBudgets) {
|
|
23
|
+
validatePositiveSafeInteger(resourceBudgets.activeResourceCount, 'Active resource count budget');
|
|
24
|
+
validatePositiveSafeInteger(resourceBudgets.javaScriptEngineHeapBytes, 'JavaScript engine heap budget');
|
|
25
|
+
validatePositiveSafeInteger(resourceBudgets.residentSetBytes, 'Resident set budget');
|
|
26
|
+
validatePositiveSafeInteger(resourceBudgets.residentSetGrowthBytesPerSecond, 'Resident set growth budget');
|
|
27
|
+
}
|
|
28
|
+
function validateSamplingInterval(value) {
|
|
29
|
+
validatePositiveSafeInteger(value, 'Resource usage sampling interval');
|
|
30
|
+
}
|
|
31
|
+
function validateTimeoutPolicy(policy) {
|
|
32
|
+
validatePositiveSafeInteger(policy.collectionMilliseconds, 'Collection timeout');
|
|
33
|
+
validatePositiveSafeInteger(policy.softMilliseconds, 'Soft timeout');
|
|
34
|
+
validatePositiveSafeInteger(policy.hardMilliseconds, 'Hard timeout');
|
|
35
|
+
if (policy.softMilliseconds > policy.hardMilliseconds) {
|
|
36
|
+
invalidRequest('Soft timeout must not exceed hard timeout.');
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
function hasResourceBudgets(resourceBudgets) {
|
|
40
|
+
return resourceBudgets.activeResourceCount !== null ||
|
|
41
|
+
resourceBudgets.javaScriptEngineHeapBytes !== null ||
|
|
42
|
+
resourceBudgets.residentSetBytes !== null ||
|
|
43
|
+
resourceBudgets.residentSetGrowthBytesPerSecond !== null;
|
|
44
|
+
}
|
|
45
|
+
function validateRunResourceUsageRequest(request) {
|
|
46
|
+
if (request.resourceBudgetOverrides !== null) {
|
|
47
|
+
validateResourceBudgets(request.resourceBudgetOverrides);
|
|
48
|
+
}
|
|
49
|
+
validateSamplingInterval(request.resourceUsageSamplingIntervalMilliseconds);
|
|
50
|
+
if (request.measureResourceUsage === false &&
|
|
51
|
+
request.resourceBudgetOverrides !== null &&
|
|
52
|
+
hasResourceBudgets(request.resourceBudgetOverrides)) {
|
|
53
|
+
invalidRequest('Resource budget overrides require resource usage measurement.');
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
function assertValidRunProfileName(profileName) {
|
|
57
|
+
const message = invalidRunProfileNameMessage(profileName);
|
|
58
|
+
if (message !== null) {
|
|
59
|
+
invalidRequest(message);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
function validateRunRequest(request) {
|
|
63
|
+
assertValidRunProfileName(request.profile);
|
|
64
|
+
if (request.paths.length === 0) {
|
|
65
|
+
noTestsCollected('No explicit run paths were provided.');
|
|
66
|
+
}
|
|
67
|
+
validateRunShard(request);
|
|
68
|
+
validateRunSeed(request);
|
|
69
|
+
validateRunResourceUsageRequest(request);
|
|
70
|
+
}
|
|
71
|
+
async function validateRunPaths(command) {
|
|
72
|
+
await discoverRunFiles({
|
|
73
|
+
cwd: command.cwd,
|
|
74
|
+
paths: command.request.paths
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
function validateRunCommand(command) {
|
|
78
|
+
validateRunEngineSelection(command.engine);
|
|
79
|
+
}
|
|
80
|
+
export function validateRunResourceUsagePolicy(policy) {
|
|
81
|
+
validateResourceBudgets(policy.budgets);
|
|
82
|
+
validateSamplingInterval(policy.samplingIntervalMilliseconds);
|
|
83
|
+
if (!policy.measure && hasResourceBudgets(policy.budgets)) {
|
|
84
|
+
invalidRequest('Resource budgets require resource usage measurement.');
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
function validateRunMicrotestProfile(profile) {
|
|
88
|
+
validateRunResourceUsagePolicy(profile.resourceUsage);
|
|
89
|
+
validateTimeoutPolicy(profile.timeouts);
|
|
90
|
+
}
|
|
91
|
+
const runProfileValidators = {
|
|
92
|
+
microtest: validateRunMicrotestProfile
|
|
93
|
+
};
|
|
94
|
+
function readProfileTestFamily(profile) {
|
|
95
|
+
return profile.testFamily;
|
|
96
|
+
}
|
|
97
|
+
function isRunTestFamily(value) {
|
|
98
|
+
return value === 'microtest';
|
|
99
|
+
}
|
|
100
|
+
function validateRunProfile(profileName, profile) {
|
|
101
|
+
const testFamily = readProfileTestFamily(profile);
|
|
102
|
+
if (!isRunTestFamily(testFamily)) {
|
|
103
|
+
invalidRequest(`Invalid run profile "${profileName}": testFamily must be "microtest".`);
|
|
104
|
+
}
|
|
105
|
+
runProfileValidators[testFamily](profile);
|
|
106
|
+
}
|
|
107
|
+
function validateRunConfig(config) {
|
|
108
|
+
for (const [profileName, profile] of Object.entries(config.profiles)) {
|
|
109
|
+
assertValidRunProfileName(profileName);
|
|
110
|
+
validateRunProfile(profileName, profile);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
export async function validateRunInput(command) {
|
|
114
|
+
validateRunCommand(command);
|
|
115
|
+
validateRunRequest(command.request);
|
|
116
|
+
validateRunConfig(command.config);
|
|
117
|
+
await validateRunPaths(command);
|
|
118
|
+
}
|
|
119
|
+
export function assertSupportedProcessEngine(command, profile) {
|
|
120
|
+
assertSupportedProcessEngineSelection(command, profile);
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=run-validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-validation.js","sourceRoot":"","sources":["../../../../source/run/run-validation.ts"],"names":[],"mappings":"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"}
|