@overkill-dev/run 0.0.22 → 0.0.24
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/execution-supervision.js +1 -1
- package/engine/execution-supervision.js.map +1 -1
- package/engine/metadata.d.ts +49 -0
- package/engine/metadata.d.ts.map +1 -0
- package/engine/metadata.js +313 -0
- package/engine/metadata.js.map +1 -0
- package/engine/reporter.d.ts +2 -2
- package/engine/reporter.d.ts.map +1 -1
- package/engine/run-if-main.d.ts +2 -1
- package/engine/run-if-main.d.ts.map +1 -1
- package/engine/run-if-main.js.map +1 -1
- package/engine/test-node.d.ts +1 -2
- package/engine/test-node.d.ts.map +1 -1
- package/engine/test-node.js +5 -7
- package/engine/test-node.js.map +1 -1
- package/engine/test-plan.d.ts +10 -4
- package/engine/test-plan.d.ts.map +1 -1
- package/engine/test-plan.js +17 -13
- package/engine/test-plan.js.map +1 -1
- package/package.json +2 -1
- package/packages/run/command-line.entry-point.d.ts +2 -2
- package/packages/run/command-line.entry-point.d.ts.map +1 -1
- package/packages/run/command-line.entry-point.js.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 +24 -14
- package/run/collected-run-plan.js +32 -2
- package/run/collected-run-plan.js.map +1 -1
- package/run/command-line-command.d.ts +9 -0
- package/run/command-line-command.d.ts.map +1 -1
- package/run/command-line-command.js +25 -7
- package/run/command-line-command.js.map +1 -1
- package/run/command-line-runner.d.ts +2 -2
- package/run/command-line-runner.d.ts.map +1 -1
- package/run/command-line-runner.js +69 -3
- package/run/command-line-runner.js.map +1 -1
- package/run/profile-file-glob.js +28 -0
- package/run/profile-file-glob.js.map +1 -0
- package/run/run-config-schema.d.ts +21 -0
- package/run/run-config-schema.d.ts.map +1 -1
- package/run/run-config-schema.js +8 -0
- package/run/run-config-schema.js.map +1 -1
- package/run/run-config.d.ts +2 -1
- package/run/run-config.d.ts.map +1 -1
- package/run/run-config.js +24 -0
- package/run/run-config.js.map +1 -1
- package/run/run-discovery.js +181 -19
- package/run/run-discovery.js.map +1 -1
- package/run/run-input-resolution.js +19 -0
- package/run/run-input-resolution.js.map +1 -0
- package/run/run-list-renderer.js +61 -0
- package/run/run-list-renderer.js.map +1 -0
- package/run/run-local-test-plan.js +5 -5
- package/run/run-local-test-plan.js.map +1 -1
- package/run/run-support.js +23 -0
- package/run/run-support.js.map +1 -1
- package/run/run-test-modules.js +1 -0
- package/run/run-test-modules.js.map +1 -1
- package/run/run-test-plan.js +9 -6
- package/run/run-test-plan.js.map +1 -1
- package/run/run-types.d.ts +7 -1
- package/run/run-types.d.ts.map +1 -1
- package/run/run-types.js.map +1 -1
- package/run/run-validation.js +2 -13
- package/run/run-validation.js.map +1 -1
- package/run/run.js +18 -36
- package/run/run.js.map +1 -1
- package/run/supervised-run-runtime.js +2 -1
- package/run/supervised-run-runtime.js.map +1 -1
- package/sbom.cdx.json +4 -4
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { orchestrator } from "./run-orchestrator.entry-point.js";
|
|
2
2
|
import { loadRunConfig } from "./run-config.js";
|
|
3
|
-
import { createCommandLineErrorResultFromUnknown, formatFallbackDiagnostics, readExitCodeFromRunResult } from "./command-line-command.js";
|
|
3
|
+
import { createCommandLineErrorResultFromUnknown, formatFallbackDiagnostics, formatRunnerErrorDiagnostics, commandLineExitCodes, readExitCodeFromRunResult } from "./command-line-command.js";
|
|
4
4
|
import { createCommandLineCommandNamespace } from "./command-line-command-namespace.js";
|
|
5
5
|
import { createUnimplementedCommand, loadUnimplementedBaselineCommands, loadUnimplementedBenchmarkCommands } from "./command-line-unimplemented-commands.js";
|
|
6
6
|
import { selectCommandLineReporterFallback } from "./run-reporter-resolution.js";
|
|
7
|
+
import { renderResolvedRunList } from "./run-list-renderer.js";
|
|
7
8
|
async function loadCommandLineReporterFallback(fallback, dependencies) {
|
|
8
9
|
if (fallback.kind === 'configured') {
|
|
9
10
|
return fallback.reporters;
|
|
@@ -23,6 +24,15 @@ async function createCommandLineConfig(loadedConfig, request, dependencies) {
|
|
|
23
24
|
runtimeStateDir: loadedConfig.runtimeStateDir
|
|
24
25
|
};
|
|
25
26
|
}
|
|
27
|
+
function createCommandLineListConfig(loadedConfig) {
|
|
28
|
+
return {
|
|
29
|
+
loader: loadedConfig.loader,
|
|
30
|
+
outputRenderer: loadedConfig.outputRenderer,
|
|
31
|
+
profiles: loadedConfig.profiles,
|
|
32
|
+
reporters: [],
|
|
33
|
+
runtimeStateDir: loadedConfig.runtimeStateDir
|
|
34
|
+
};
|
|
35
|
+
}
|
|
26
36
|
async function createCommandFromRequest(request, loadedConfig, dependencies) {
|
|
27
37
|
return {
|
|
28
38
|
config: await createCommandLineConfig(loadedConfig, request, dependencies),
|
|
@@ -34,13 +44,61 @@ async function createCommandFromRequest(request, loadedConfig, dependencies) {
|
|
|
34
44
|
}
|
|
35
45
|
};
|
|
36
46
|
}
|
|
47
|
+
function createCommandFromListRequest(request, loadedConfig) {
|
|
48
|
+
return {
|
|
49
|
+
config: createCommandLineListConfig(loadedConfig),
|
|
50
|
+
cwd: request.cwd,
|
|
51
|
+
engine: { kind: 'default' },
|
|
52
|
+
request: {
|
|
53
|
+
baselineUpdateMode: 'none',
|
|
54
|
+
capabilityRestrictions: { mode: 'enabled' },
|
|
55
|
+
capture: 'buffered',
|
|
56
|
+
debug: {
|
|
57
|
+
mode: 'off',
|
|
58
|
+
selectors: []
|
|
59
|
+
},
|
|
60
|
+
execution: { mode: 'profile-default' },
|
|
61
|
+
measureResourceUsage: null,
|
|
62
|
+
order: 'plan',
|
|
63
|
+
paths: request.listRequest.paths,
|
|
64
|
+
profile: request.listRequest.profile,
|
|
65
|
+
resourceBudgetOverrides: null,
|
|
66
|
+
resourceUsageSamplingIntervalMilliseconds: null,
|
|
67
|
+
seed: { value: null },
|
|
68
|
+
selection: { kind: 'all' },
|
|
69
|
+
shard: { index: 0, total: 1 },
|
|
70
|
+
verbose: false
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
}
|
|
37
74
|
async function runTestsWithLoadedConfig(request, dependencies, loadedConfig) {
|
|
38
75
|
const command = await createCommandFromRequest(request, loadedConfig, dependencies);
|
|
39
76
|
const runResult = await dependencies.orchestrator.runWithReporterDelivery(command);
|
|
40
77
|
return {
|
|
41
78
|
exitCode: readExitCodeFromRunResult(runResult.result),
|
|
42
79
|
fallbackDiagnostics: formatFallbackDiagnostics(runResult.result, new Set(runResult.deliveredRunnerErrors)),
|
|
43
|
-
runResult: runResult.result
|
|
80
|
+
runResult: runResult.result,
|
|
81
|
+
stdoutLines: []
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
async function listTestsWithLoadedConfig(request, dependencies, loadedConfig) {
|
|
85
|
+
const command = createCommandFromListRequest(request, loadedConfig);
|
|
86
|
+
const resolvedRun = await dependencies.orchestrator.resolve(command);
|
|
87
|
+
if (resolvedRun.collectionRunnerErrors.length > 0) {
|
|
88
|
+
return {
|
|
89
|
+
exitCode: commandLineExitCodes.runnerError,
|
|
90
|
+
fallbackDiagnostics: formatRunnerErrorDiagnostics(resolvedRun.collectionRunnerErrors),
|
|
91
|
+
runResult: null,
|
|
92
|
+
stdoutLines: []
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
return {
|
|
96
|
+
exitCode: commandLineExitCodes.pass,
|
|
97
|
+
fallbackDiagnostics: [],
|
|
98
|
+
runResult: null,
|
|
99
|
+
stdoutLines: renderResolvedRunList(resolvedRun, {
|
|
100
|
+
withOrphans: request.listRequest.withOrphans
|
|
101
|
+
})
|
|
44
102
|
};
|
|
45
103
|
}
|
|
46
104
|
export function createCommandLineRunner(dependencies) {
|
|
@@ -48,7 +106,15 @@ export function createCommandLineRunner(dependencies) {
|
|
|
48
106
|
return {
|
|
49
107
|
baseline: commandNamespace.baseline,
|
|
50
108
|
bench: commandNamespace.bench,
|
|
51
|
-
listTests
|
|
109
|
+
async listTests(request) {
|
|
110
|
+
try {
|
|
111
|
+
const loadedConfig = await dependencies.loadRunConfig(request);
|
|
112
|
+
return await listTestsWithLoadedConfig(request, dependencies, loadedConfig);
|
|
113
|
+
}
|
|
114
|
+
catch (error) {
|
|
115
|
+
return createCommandLineErrorResultFromUnknown(error);
|
|
116
|
+
}
|
|
117
|
+
},
|
|
52
118
|
replayRun: createUnimplementedCommand('replay'),
|
|
53
119
|
replayWitness: createUnimplementedCommand('replay-witness'),
|
|
54
120
|
async runTests(request) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-line-runner.js","sourceRoot":"","sources":["../../../../source/run/command-line-runner.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EACH,aAAa,EAGhB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACH,uCAAuC,EACvC,yBAAyB,EACzB,yBAAyB,EAM5B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACH,iCAAiC,EAEpC,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACH,0BAA0B,EAC1B,iCAAiC,EACjC,kCAAkC,EACrC,MAAM,0CAA0C,CAAC;AAClD,OAAO,EACH,iCAAiC,EAEpC,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"command-line-runner.js","sourceRoot":"","sources":["../../../../source/run/command-line-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { isAbsolute } from 'node:path';
|
|
2
|
+
function globSegments(pattern) {
|
|
3
|
+
return pattern.split(/[\\/]+/u);
|
|
4
|
+
}
|
|
5
|
+
function configMessage(message) {
|
|
6
|
+
return `Invalid ${message.charAt(0).toLowerCase()}${message.slice(1)}`;
|
|
7
|
+
}
|
|
8
|
+
export function invalidProfileFileGlobMessage(field, pattern) {
|
|
9
|
+
const trimmedPattern = pattern.trim();
|
|
10
|
+
if (trimmedPattern.length === 0) {
|
|
11
|
+
return `Profile files.${field} glob pattern must not be blank.`;
|
|
12
|
+
}
|
|
13
|
+
if (trimmedPattern.startsWith('!')) {
|
|
14
|
+
return `Profile files.${field} negated glob patterns are not supported.`;
|
|
15
|
+
}
|
|
16
|
+
if (isAbsolute(pattern)) {
|
|
17
|
+
return `Profile files.${field} glob pattern must be relative to cwd.`;
|
|
18
|
+
}
|
|
19
|
+
if (globSegments(pattern).includes('..')) {
|
|
20
|
+
return `Profile files.${field} glob pattern must not contain parent segments.`;
|
|
21
|
+
}
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
export function invalidProfileFileGlobConfigMessage(field, pattern) {
|
|
25
|
+
const message = invalidProfileFileGlobMessage(field, pattern);
|
|
26
|
+
return message === null ? null : configMessage(message);
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=profile-file-glob.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profile-file-glob.js","sourceRoot":"","sources":["../../../../source/run/profile-file-glob.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAIvC,SAAS,YAAY,CAAC,OAAe;IACjC,OAAO,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,aAAa,CAAC,OAAe;IAClC,OAAO,WAAW,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AAC3E,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,KAA2B,EAAE,OAAe;IACtF,MAAM,cAAc,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAEtC,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,iBAAiB,KAAK,kCAAkC,CAAC;IACpE,CAAC;IAED,IAAI,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACjC,OAAO,iBAAiB,KAAK,2CAA2C,CAAC;IAC7E,CAAC;IAED,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACtB,OAAO,iBAAiB,KAAK,wCAAwC,CAAC;IAC1E,CAAC;IAED,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACvC,OAAO,iBAAiB,KAAK,iDAAiD,CAAC;IACnF,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,mCAAmC,CAAC,KAA2B,EAAE,OAAe;IAC5F,MAAM,OAAO,GAAG,6BAA6B,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAE9D,OAAO,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AAC5D,CAAC"}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import { z } from 'zod/v4';
|
|
2
2
|
import { type DefinedOutputRenderer } from '../engine/reporter-output.ts';
|
|
3
3
|
import { type DefinedReporter } from '../engine/reporter.ts';
|
|
4
|
+
declare const profileFilesSchema: z.ZodReadonly<z.ZodObject<{
|
|
5
|
+
exclude: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodString>>>;
|
|
6
|
+
include: z.ZodReadonly<z.ZodTuple<[z.ZodString], z.ZodString>>;
|
|
7
|
+
}, z.core.$strict>>;
|
|
4
8
|
export declare const resourceBudgetsSchema: z.ZodReadonly<z.ZodObject<{
|
|
5
9
|
activeResourceCount: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
6
10
|
javaScriptEngineHeapBytes: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
@@ -52,6 +56,10 @@ export declare const microtestProfileSchema: z.ZodReadonly<z.ZodObject<{
|
|
|
52
56
|
processModel: z.ZodLiteral<"supervised-process">;
|
|
53
57
|
scheduling: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"concurrent">, z.ZodLiteral<"serial">]>>;
|
|
54
58
|
}, z.core.$strict>>], "processModel">>;
|
|
59
|
+
files: z.ZodOptional<z.ZodReadonly<z.ZodObject<{
|
|
60
|
+
exclude: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodString>>>;
|
|
61
|
+
include: z.ZodReadonly<z.ZodTuple<[z.ZodString], z.ZodString>>;
|
|
62
|
+
}, z.core.$strict>>>;
|
|
55
63
|
reporters: z.ZodOptional<z.ZodReadonly<z.ZodTuple<[z.ZodCustom<DefinedReporter, DefinedReporter>], z.ZodCustom<DefinedReporter, DefinedReporter>>>>;
|
|
56
64
|
resourceUsage: z.ZodOptional<z.ZodUnion<readonly [z.ZodReadonly<z.ZodObject<{
|
|
57
65
|
budgets: z.ZodOptional<z.ZodReadonly<z.ZodObject<{
|
|
@@ -80,6 +88,10 @@ declare const profileSchema: z.ZodDiscriminatedUnion<[z.ZodReadonly<z.ZodObject<
|
|
|
80
88
|
processModel: z.ZodLiteral<"supervised-process">;
|
|
81
89
|
scheduling: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"concurrent">, z.ZodLiteral<"serial">]>>;
|
|
82
90
|
}, z.core.$strict>>], "processModel">>;
|
|
91
|
+
files: z.ZodOptional<z.ZodReadonly<z.ZodObject<{
|
|
92
|
+
exclude: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodString>>>;
|
|
93
|
+
include: z.ZodReadonly<z.ZodTuple<[z.ZodString], z.ZodString>>;
|
|
94
|
+
}, z.core.$strict>>>;
|
|
83
95
|
reporters: z.ZodOptional<z.ZodReadonly<z.ZodTuple<[z.ZodCustom<DefinedReporter, DefinedReporter>], z.ZodCustom<DefinedReporter, DefinedReporter>>>>;
|
|
84
96
|
resourceUsage: z.ZodOptional<z.ZodUnion<readonly [z.ZodReadonly<z.ZodObject<{
|
|
85
97
|
budgets: z.ZodOptional<z.ZodReadonly<z.ZodObject<{
|
|
@@ -108,6 +120,10 @@ declare const profilesSchema: z.ZodReadonly<z.ZodRecord<z.ZodString, z.ZodDiscri
|
|
|
108
120
|
processModel: z.ZodLiteral<"supervised-process">;
|
|
109
121
|
scheduling: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"concurrent">, z.ZodLiteral<"serial">]>>;
|
|
110
122
|
}, z.core.$strict>>], "processModel">>;
|
|
123
|
+
files: z.ZodOptional<z.ZodReadonly<z.ZodObject<{
|
|
124
|
+
exclude: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodString>>>;
|
|
125
|
+
include: z.ZodReadonly<z.ZodTuple<[z.ZodString], z.ZodString>>;
|
|
126
|
+
}, z.core.$strict>>>;
|
|
111
127
|
reporters: z.ZodOptional<z.ZodReadonly<z.ZodTuple<[z.ZodCustom<DefinedReporter, DefinedReporter>], z.ZodCustom<DefinedReporter, DefinedReporter>>>>;
|
|
112
128
|
resourceUsage: z.ZodOptional<z.ZodUnion<readonly [z.ZodReadonly<z.ZodObject<{
|
|
113
129
|
budgets: z.ZodOptional<z.ZodReadonly<z.ZodObject<{
|
|
@@ -142,6 +158,10 @@ export declare const projectConfigSchema: z.ZodReadonly<z.ZodObject<{
|
|
|
142
158
|
processModel: z.ZodLiteral<"supervised-process">;
|
|
143
159
|
scheduling: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"concurrent">, z.ZodLiteral<"serial">]>>;
|
|
144
160
|
}, z.core.$strict>>], "processModel">>;
|
|
161
|
+
files: z.ZodOptional<z.ZodReadonly<z.ZodObject<{
|
|
162
|
+
exclude: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodString>>>;
|
|
163
|
+
include: z.ZodReadonly<z.ZodTuple<[z.ZodString], z.ZodString>>;
|
|
164
|
+
}, z.core.$strict>>>;
|
|
145
165
|
reporters: z.ZodOptional<z.ZodReadonly<z.ZodTuple<[z.ZodCustom<DefinedReporter, DefinedReporter>], z.ZodCustom<DefinedReporter, DefinedReporter>>>>;
|
|
146
166
|
resourceUsage: z.ZodOptional<z.ZodUnion<readonly [z.ZodReadonly<z.ZodObject<{
|
|
147
167
|
budgets: z.ZodOptional<z.ZodReadonly<z.ZodObject<{
|
|
@@ -166,6 +186,7 @@ export declare const projectConfigSchema: z.ZodReadonly<z.ZodObject<{
|
|
|
166
186
|
runtimeStateDir: z.ZodOptional<z.ZodString>;
|
|
167
187
|
}, z.core.$strict>>;
|
|
168
188
|
export type RunProjectResourceBudgets = z.infer<typeof resourceBudgetsSchema>;
|
|
189
|
+
export type RunProjectProfileFiles = z.infer<typeof profileFilesSchema>;
|
|
169
190
|
export type RunProjectMeasuredResourceUsage = z.infer<typeof measuredResourceUsageSchema>;
|
|
170
191
|
export type RunProjectUnmeasuredResourceUsage = z.infer<typeof unmeasuredResourceUsageSchema>;
|
|
171
192
|
export type RunProjectResourceUsageConfig = z.infer<typeof resourceUsageSchema>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-config-schema.d.ts","sourceRoot":"","sources":["../../../../source/run/run-config-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAoB,KAAK,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAC5F,OAAO,EAAc,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"run-config-schema.d.ts","sourceRoot":"","sources":["../../../../source/run/run-config-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAoB,KAAK,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAC5F,OAAO,EAAc,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAsBzE,QAAA,MAAM,kBAAkB;;;mBAKT,CAAC;AAEhB,eAAO,MAAM,qBAAqB;;;;;mBAOnB,CAAC;AAEhB,QAAA,MAAM,2BAA2B;;;;;;;;;mBAMlB,CAAC;AAEhB,QAAA,MAAM,6BAA6B;;mBAIpB,CAAC;AAEhB,eAAO,MAAM,mBAAmB;;;;;;;;;;;qBAA0E,CAAC;AAE3G,eAAO,MAAM,aAAa;;;;mBAMX,CAAC;AAEhB,eAAO,MAAM,wBAAwB;;;;;;qCAanC,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBASpB,CAAC;AAEhB,QAAA,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mCAEjB,CAAC;AAEH,QAAA,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qCAAiD,CAAC;AAEtE,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAQjB,CAAC;AAEhB,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAC9E,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AACxE,MAAM,MAAM,+BAA+B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAC1F,MAAM,MAAM,iCAAiC,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AAC9F,MAAM,MAAM,6BAA6B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAChF,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AACpE,MAAM,MAAM,4BAA4B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AACpF,MAAM,MAAM,gCAAgC,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AACtF,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AACpE,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AACtE,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC"}
|
package/run/run-config-schema.js
CHANGED
|
@@ -12,6 +12,13 @@ const loaderSchema = z
|
|
|
12
12
|
const positiveSafeIntegerSchema = z.number().refine(function isPositiveSafeInteger(value) {
|
|
13
13
|
return Number.isSafeInteger(value) && value > 0;
|
|
14
14
|
}, 'must be a positive safe integer');
|
|
15
|
+
const fileGlobSchema = z.string();
|
|
16
|
+
const profileFilesSchema = z
|
|
17
|
+
.strictObject({
|
|
18
|
+
exclude: z.optional(z.array(fileGlobSchema).readonly()),
|
|
19
|
+
include: z.tuple([fileGlobSchema]).rest(fileGlobSchema).readonly()
|
|
20
|
+
})
|
|
21
|
+
.readonly();
|
|
15
22
|
export const resourceBudgetsSchema = z
|
|
16
23
|
.strictObject({
|
|
17
24
|
activeResourceCount: z.optional(z.nullable(positiveSafeIntegerSchema)),
|
|
@@ -57,6 +64,7 @@ export const microtestExecutionSchema = z.discriminatedUnion('processModel', [
|
|
|
57
64
|
export const microtestProfileSchema = z
|
|
58
65
|
.strictObject({
|
|
59
66
|
execution: z.optional(microtestExecutionSchema),
|
|
67
|
+
files: z.optional(profileFilesSchema),
|
|
60
68
|
reporters: z.optional(z.tuple([reporterSchema]).rest(reporterSchema).readonly()),
|
|
61
69
|
resourceUsage: z.optional(resourceUsageSchema),
|
|
62
70
|
testFamily: z.literal('microtest'),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-config-schema.js","sourceRoot":"","sources":["../../../../source/run/run-config-schema.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"run-config-schema.js","sourceRoot":"","sources":["../../../../source/run/run-config-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAE,gBAAgB,EAA8B,MAAM,8BAA8B,CAAC;AAC5F,OAAO,EAAE,UAAU,EAAwB,MAAM,uBAAuB,CAAC;AAEzE,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAkB,UAAU,EAAE,0CAA0C,CAAC,CAAC;AAEzG,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CACjC,gBAAgB,EAChB,gDAAgD,CACnD,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC;KACjB,YAAY,CAAC;IACV,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE;IACvB,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC;CACrC,CAAC;KACD,QAAQ,EAAE,CAAC;AAEhB,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,SAAS,qBAAqB,CAAC,KAAK;IACpF,OAAO,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;AACpD,CAAC,EAAE,iCAAiC,CAAC,CAAC;AAEtC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;AAElC,MAAM,kBAAkB,GAAG,CAAC;KACvB,YAAY,CAAC;IACV,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,QAAQ,EAAE,CAAC;IACvD,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAE,cAAc,CAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,QAAQ,EAAE;CACvE,CAAC;KACD,QAAQ,EAAE,CAAC;AAEhB,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC;KACjC,YAAY,CAAC;IACV,mBAAmB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,yBAAyB,CAAC,CAAC;IACtE,yBAAyB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,yBAAyB,CAAC,CAAC;IAC5E,gBAAgB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,yBAAyB,CAAC,CAAC;IACnE,+BAA+B,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,yBAAyB,CAAC,CAAC;CACrF,CAAC;KACD,QAAQ,EAAE,CAAC;AAEhB,MAAM,2BAA2B,GAAG,CAAC;KAChC,YAAY,CAAC;IACV,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC;IAC1C,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;IACxB,4BAA4B,EAAE,CAAC,CAAC,QAAQ,CAAC,yBAAyB,CAAC;CACtE,CAAC;KACD,QAAQ,EAAE,CAAC;AAEhB,MAAM,6BAA6B,GAAG,CAAC;KAClC,YAAY,CAAC;IACV,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;CACxC,CAAC;KACD,QAAQ,EAAE,CAAC;AAEhB,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,CAAE,2BAA2B,EAAE,6BAA6B,CAAE,CAAC,CAAC;AAE3G,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC;KACzB,YAAY,CAAC;IACV,sBAAsB,EAAE,CAAC,CAAC,QAAQ,CAAC,yBAAyB,CAAC;IAC7D,gBAAgB,EAAE,CAAC,CAAC,QAAQ,CAAC,yBAAyB,CAAC;IACvD,gBAAgB,EAAE,CAAC,CAAC,QAAQ,CAAC,yBAAyB,CAAC;CAC1D,CAAC;KACD,QAAQ,EAAE,CAAC;AAEhB,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,kBAAkB,CAAC,cAAc,EAAE;IACzE,CAAC;SACI,YAAY,CAAC;QACV,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC;QACrC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAE,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAE,CAAC,CAAC;KACpF,CAAC;SACD,QAAQ,EAAE;IACf,CAAC;SACI,YAAY,CAAC;QACV,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC;QAC7C,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAE,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAE,CAAC,CAAC;KACpF,CAAC;SACD,QAAQ,EAAE;CAClB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC;KAClC,YAAY,CAAC;IACV,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,wBAAwB,CAAC;IAC/C,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC;IACrC,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAE,cAAc,CAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,QAAQ,EAAE,CAAC;IAClF,aAAa,EAAE,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IAC9C,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC;IAClC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC;CACtC,CAAC;KACD,QAAQ,EAAE,CAAC;AAEhB,MAAM,aAAa,GAAG,CAAC,CAAC,kBAAkB,CAAC,YAAY,EAAE;IACrD,sBAAsB;CACzB,CAAC,CAAC;AAEH,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,aAAa,CAAC,CAAC,QAAQ,EAAE,CAAC;AAEtE,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC;KAC/B,YAAY,CAAC;IACV,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC;IAChC,cAAc,EAAE,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC;IAChD,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC;IACpC,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAE,cAAc,CAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,QAAQ,EAAE,CAAC;IAClF,eAAe,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACjD,CAAC;KACD,QAAQ,EAAE,CAAC"}
|
package/run/run-config.d.ts
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import type { NonEmptyReadonlyArray } from '../assertion-protocol/assertion-node-shape.ts';
|
|
2
2
|
import { type OutputRenderer } from '../engine/reporter-output.ts';
|
|
3
3
|
import type { Reporter } from '../engine/reporter.ts';
|
|
4
|
-
import { type RunProjectConfig as ParsedRunProjectConfig, type RunProjectMeasuredResourceUsage as ParsedRunProjectMeasuredResourceUsage, type RunProjectMicrotestExecution as ParsedRunProjectMicrotestExecution, type RunProjectMicrotestProfileConfig as ParsedRunProjectMicrotestProfileConfig, type RunProjectProfileConfig as ParsedRunProjectProfileConfig, type RunProjectProfilesConfig as ParsedRunProjectProfilesConfig, type RunProjectResourceBudgets as ParsedRunProjectResourceBudgets, type RunProjectResourceUsageConfig as ParsedRunProjectResourceUsageConfig, type RunProjectTimeoutConfig as ParsedRunProjectTimeoutConfig, type RunProjectUnmeasuredResourceUsage as ParsedRunProjectUnmeasuredResourceUsage } from './run-config-schema.ts';
|
|
4
|
+
import { type RunProjectConfig as ParsedRunProjectConfig, type RunProjectMeasuredResourceUsage as ParsedRunProjectMeasuredResourceUsage, type RunProjectMicrotestExecution as ParsedRunProjectMicrotestExecution, type RunProjectMicrotestProfileConfig as ParsedRunProjectMicrotestProfileConfig, type RunProjectProfileFiles as ParsedRunProjectProfileFiles, type RunProjectProfileConfig as ParsedRunProjectProfileConfig, type RunProjectProfilesConfig as ParsedRunProjectProfilesConfig, type RunProjectResourceBudgets as ParsedRunProjectResourceBudgets, type RunProjectResourceUsageConfig as ParsedRunProjectResourceUsageConfig, type RunProjectTimeoutConfig as ParsedRunProjectTimeoutConfig, type RunProjectUnmeasuredResourceUsage as ParsedRunProjectUnmeasuredResourceUsage } from './run-config-schema.ts';
|
|
5
5
|
import { type RunLoaderConfig, type RunProfilesConfig } from './run-types.ts';
|
|
6
6
|
export type RunProjectConfig = ParsedRunProjectConfig;
|
|
7
7
|
export type RunProjectMeasuredResourceUsage = ParsedRunProjectMeasuredResourceUsage;
|
|
8
8
|
export type RunProjectMicrotestExecution = ParsedRunProjectMicrotestExecution;
|
|
9
9
|
export type RunProjectMicrotestProfileConfig = ParsedRunProjectMicrotestProfileConfig;
|
|
10
|
+
export type RunProjectProfileFiles = ParsedRunProjectProfileFiles;
|
|
10
11
|
export type RunProjectProfileConfig = ParsedRunProjectProfileConfig;
|
|
11
12
|
export type RunProjectProfilesConfig = ParsedRunProjectProfilesConfig;
|
|
12
13
|
export type RunProjectResourceBudgets = ParsedRunProjectResourceBudgets;
|
package/run/run-config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-config.d.ts","sourceRoot":"","sources":["../../../../source/run/run-config.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+CAA+C,CAAC;AAC3F,OAAO,EAA6B,KAAK,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9F,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAEH,KAAK,gBAAgB,IAAI,sBAAsB,EAC/C,KAAK,+BAA+B,IAAI,qCAAqC,EAC7E,KAAK,4BAA4B,IAAI,kCAAkC,EACvE,KAAK,gCAAgC,IAAI,sCAAsC,EAC/E,KAAK,uBAAuB,IAAI,6BAA6B,EAC7D,KAAK,wBAAwB,IAAI,8BAA8B,EAC/D,KAAK,yBAAyB,IAAI,+BAA+B,EACjE,KAAK,6BAA6B,IAAI,mCAAmC,EACzE,KAAK,uBAAuB,IAAI,6BAA6B,EAC7D,KAAK,iCAAiC,IAAI,uCAAuC,EACpF,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAEH,KAAK,eAAe,
|
|
1
|
+
{"version":3,"file":"run-config.d.ts","sourceRoot":"","sources":["../../../../source/run/run-config.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+CAA+C,CAAC;AAC3F,OAAO,EAA6B,KAAK,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9F,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAEH,KAAK,gBAAgB,IAAI,sBAAsB,EAC/C,KAAK,+BAA+B,IAAI,qCAAqC,EAC7E,KAAK,4BAA4B,IAAI,kCAAkC,EACvE,KAAK,gCAAgC,IAAI,sCAAsC,EAC/E,KAAK,sBAAsB,IAAI,4BAA4B,EAC3D,KAAK,uBAAuB,IAAI,6BAA6B,EAC7D,KAAK,wBAAwB,IAAI,8BAA8B,EAC/D,KAAK,yBAAyB,IAAI,+BAA+B,EACjE,KAAK,6BAA6B,IAAI,mCAAmC,EACzE,KAAK,uBAAuB,IAAI,6BAA6B,EAC7D,KAAK,iCAAiC,IAAI,uCAAuC,EACpF,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAEH,KAAK,eAAe,EAKpB,KAAK,iBAAiB,EAIzB,MAAM,gBAAgB,CAAC;AAMxB,MAAM,MAAM,gBAAgB,GAAG,sBAAsB,CAAC;AACtD,MAAM,MAAM,+BAA+B,GAAG,qCAAqC,CAAC;AACpF,MAAM,MAAM,4BAA4B,GAAG,kCAAkC,CAAC;AAC9E,MAAM,MAAM,gCAAgC,GAAG,sCAAsC,CAAC;AACtF,MAAM,MAAM,sBAAsB,GAAG,4BAA4B,CAAC;AAClE,MAAM,MAAM,uBAAuB,GAAG,6BAA6B,CAAC;AACpE,MAAM,MAAM,wBAAwB,GAAG,8BAA8B,CAAC;AACtE,MAAM,MAAM,yBAAyB,GAAG,+BAA+B,CAAC;AACxE,MAAM,MAAM,6BAA6B,GAAG,mCAAmC,CAAC;AAChF,MAAM,MAAM,uBAAuB,GAAG,6BAA6B,CAAC;AACpE,MAAM,MAAM,iCAAiC,GAAG,uCAAuC,CAAC;AAQxF,MAAM,MAAM,eAAe,GAAG;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IACrC,QAAQ,CAAC,SAAS,EAAE,qBAAqB,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;IAC3D,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,qBAAa,cAAe,SAAQ,KAAK;gBAClB,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,YAAY,CAAC;CAIvE;AA6BD,wBAAgB,YAAY,CAAC,MAAM,EAAE,gBAAgB,GAAG,gBAAgB,CAEvE;AA+RD,wBAAsB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,eAAe,CAAC,CAW3F"}
|
package/run/run-config.js
CHANGED
|
@@ -13,6 +13,7 @@ import { parse } from '@schema-hub/zod-error-formatter';
|
|
|
13
13
|
import { createPlainOutputRenderer } from "../engine/reporter-output.js";
|
|
14
14
|
import { projectConfigSchema } from "./run-config-schema.js";
|
|
15
15
|
import { invalidRunProfileNameMessage } from "./run-types.js";
|
|
16
|
+
import { invalidProfileFileGlobConfigMessage } from "./profile-file-glob.js";
|
|
16
17
|
const defaultConfigFileNames = ['overkill.config.ts', 'overkill.config.js'];
|
|
17
18
|
const defaultResourceUsageSamplingIntervalMilliseconds = 100;
|
|
18
19
|
const defaultMicrotestCollectionTimeoutMilliseconds = 1000;
|
|
@@ -182,6 +183,28 @@ function assertValidTimeouts(timeouts) {
|
|
|
182
183
|
throw new RunConfigError('Invalid profile timeouts: softMilliseconds must be less than or equal to hardMilliseconds.');
|
|
183
184
|
}
|
|
184
185
|
}
|
|
186
|
+
function assertValidProfileGlob(field, pattern) {
|
|
187
|
+
const message = invalidProfileFileGlobConfigMessage(field, pattern);
|
|
188
|
+
if (message !== null) {
|
|
189
|
+
throw new RunConfigError(message);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
function normalizeProfileFiles(files) {
|
|
193
|
+
if (files === undefined) {
|
|
194
|
+
return null;
|
|
195
|
+
}
|
|
196
|
+
const excludePatterns = files.exclude ?? [];
|
|
197
|
+
for (const pattern of files.include) {
|
|
198
|
+
assertValidProfileGlob('include', pattern);
|
|
199
|
+
}
|
|
200
|
+
for (const pattern of excludePatterns) {
|
|
201
|
+
assertValidProfileGlob('exclude', pattern);
|
|
202
|
+
}
|
|
203
|
+
return {
|
|
204
|
+
exclude: Array.from(excludePatterns),
|
|
205
|
+
include: [files.include[0], ...files.include.slice(1)]
|
|
206
|
+
};
|
|
207
|
+
}
|
|
185
208
|
function normalizeExecution(execution) {
|
|
186
209
|
return {
|
|
187
210
|
processModel: execution?.processModel ?? defaultMicrotestExecution.processModel,
|
|
@@ -193,6 +216,7 @@ function normalizeMicrotestProfile(profile) {
|
|
|
193
216
|
assertValidTimeouts(timeouts);
|
|
194
217
|
return {
|
|
195
218
|
execution: normalizeExecution(profile.execution),
|
|
219
|
+
files: normalizeProfileFiles(profile.files),
|
|
196
220
|
reporters: normalizeReporters(profile.reporters),
|
|
197
221
|
resourceUsage: normalizeResourceUsage(profile.resourceUsage),
|
|
198
222
|
testFamily: 'microtest',
|
package/run/run-config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-config.js","sourceRoot":"","sources":["../../../../source/run/run-config.ts"],"names":[],"mappings":";;;;;;;;AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAC;AAExD,OAAO,EAAE,yBAAyB,EAAuB,MAAM,8BAA8B,CAAC;AAE9F,OAAO,EACH,mBAAmB,
|
|
1
|
+
{"version":3,"file":"run-config.js","sourceRoot":"","sources":["../../../../source/run/run-config.ts"],"names":[],"mappings":"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"}
|
package/run/run-discovery.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { realpath, stat } from 'node:fs/promises';
|
|
1
|
+
import { glob, realpath, stat } from 'node:fs/promises';
|
|
2
2
|
import { isAbsolute, relative, resolve } from 'node:path';
|
|
3
3
|
import { pathToFileURL } from 'node:url';
|
|
4
|
+
import { invalidProfileFileGlobMessage } from "./profile-file-glob.js";
|
|
4
5
|
import { invalidRequest, noTestsCollected } from "./run-errors.js";
|
|
5
6
|
function toFileIdentity(path) {
|
|
6
7
|
return path.replaceAll('\\', '/');
|
|
@@ -8,6 +9,11 @@ function toFileIdentity(path) {
|
|
|
8
9
|
function isOutsideCwd(relativePath) {
|
|
9
10
|
return relativePath === '..' || relativePath.startsWith('../') || isAbsolute(relativePath);
|
|
10
11
|
}
|
|
12
|
+
function assertInsideCwd(realCwd, realPath, requestedPath) {
|
|
13
|
+
if (isOutsideCwd(relative(realCwd, realPath))) {
|
|
14
|
+
invalidRequest(`Run path must stay inside cwd: ${requestedPath}`);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
11
17
|
async function readRealCwd(cwd) {
|
|
12
18
|
try {
|
|
13
19
|
return await realpath(cwd);
|
|
@@ -16,6 +22,20 @@ async function readRealCwd(cwd) {
|
|
|
16
22
|
return invalidRequest(`Run cwd does not exist: ${cwd}`);
|
|
17
23
|
}
|
|
18
24
|
}
|
|
25
|
+
function assertValidProfileGlob(field, pattern) {
|
|
26
|
+
const message = invalidProfileFileGlobMessage(field, pattern);
|
|
27
|
+
if (message !== null) {
|
|
28
|
+
invalidRequest(message);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
function assertValidProfileFiles(profileFiles) {
|
|
32
|
+
for (const pattern of profileFiles.include) {
|
|
33
|
+
assertValidProfileGlob('include', pattern);
|
|
34
|
+
}
|
|
35
|
+
for (const pattern of profileFiles.exclude) {
|
|
36
|
+
assertValidProfileGlob('exclude', pattern);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
19
39
|
async function readRealFilePath(cwd, requestedPath) {
|
|
20
40
|
if (requestedPath.trim().length === 0) {
|
|
21
41
|
invalidRequest('Run path must not be empty.');
|
|
@@ -27,11 +47,12 @@ async function readRealFilePath(cwd, requestedPath) {
|
|
|
27
47
|
return invalidRequest(`Run path does not exist: ${requestedPath}`);
|
|
28
48
|
}
|
|
29
49
|
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
50
|
+
function createDiscoveredRunDirectory(realCwd, realPath, requestedPath) {
|
|
51
|
+
assertInsideCwd(realCwd, realPath, requestedPath);
|
|
52
|
+
return {
|
|
53
|
+
path: realPath,
|
|
54
|
+
requestedPath
|
|
55
|
+
};
|
|
35
56
|
}
|
|
36
57
|
function createDiscoveredRunFile(realCwd, realPath, requestedPath) {
|
|
37
58
|
const relativePath = relative(realCwd, realPath);
|
|
@@ -44,32 +65,173 @@ function createDiscoveredRunFile(realCwd, realPath, requestedPath) {
|
|
|
44
65
|
path: realPath
|
|
45
66
|
};
|
|
46
67
|
}
|
|
47
|
-
function
|
|
48
|
-
|
|
49
|
-
|
|
68
|
+
async function discoverRunPath(realCwd, requestedPath) {
|
|
69
|
+
const realPath = await readRealFilePath(realCwd, requestedPath);
|
|
70
|
+
const pathStat = await stat(realPath);
|
|
71
|
+
if (pathStat.isFile()) {
|
|
72
|
+
return {
|
|
73
|
+
file: createDiscoveredRunFile(realCwd, realPath, requestedPath),
|
|
74
|
+
kind: 'file'
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
if (pathStat.isDirectory()) {
|
|
78
|
+
return {
|
|
79
|
+
directory: createDiscoveredRunDirectory(realCwd, realPath, requestedPath),
|
|
80
|
+
kind: 'directory'
|
|
81
|
+
};
|
|
50
82
|
}
|
|
83
|
+
return invalidRequest(`Run path must be a file or directory: ${requestedPath}`);
|
|
51
84
|
}
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
85
|
+
function assertNonEmptyArray(message, values) {
|
|
86
|
+
if (values.length === 0) {
|
|
87
|
+
noTestsCollected(message);
|
|
88
|
+
}
|
|
56
89
|
}
|
|
57
90
|
function assertUniqueRunFile(file, seenPaths) {
|
|
58
91
|
if (seenPaths.has(file.path)) {
|
|
59
92
|
invalidRequest(`Run path must not be duplicated: ${file.file}`);
|
|
60
93
|
}
|
|
61
94
|
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
95
|
+
function sortedRunFiles(files) {
|
|
96
|
+
return Array.from(files).toSorted(function compareRunFiles(left, right) {
|
|
97
|
+
return left.file.localeCompare(right.file);
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
function uniqueRunFiles(files) {
|
|
101
|
+
const seenPaths = new Set();
|
|
102
|
+
return files.reduce(function appendUniqueFile(uniqueFiles, file) {
|
|
103
|
+
if (seenPaths.has(file.path)) {
|
|
104
|
+
return uniqueFiles;
|
|
105
|
+
}
|
|
106
|
+
seenPaths.add(file.path);
|
|
107
|
+
return [...uniqueFiles, file];
|
|
108
|
+
}, []);
|
|
109
|
+
}
|
|
110
|
+
async function maybeDiscoverProfileFile(realCwd, requestedPath) {
|
|
111
|
+
const realPath = await realpath(resolve(realCwd, requestedPath));
|
|
112
|
+
const pathStat = await stat(realPath);
|
|
113
|
+
if (!pathStat.isFile()) {
|
|
114
|
+
return null;
|
|
115
|
+
}
|
|
116
|
+
return createDiscoveredRunFile(realCwd, realPath, requestedPath);
|
|
117
|
+
}
|
|
118
|
+
async function discoverProfileRunFiles(realCwd, profileFiles) {
|
|
119
|
+
assertValidProfileFiles(profileFiles);
|
|
120
|
+
const files = [];
|
|
121
|
+
const discoveredPaths = glob(profileFiles.include, {
|
|
122
|
+
cwd: realCwd,
|
|
123
|
+
exclude: profileFiles.exclude,
|
|
124
|
+
followSymlinks: false
|
|
125
|
+
});
|
|
126
|
+
for await (const filePath of discoveredPaths) {
|
|
127
|
+
const file = await maybeDiscoverProfileFile(realCwd, filePath);
|
|
128
|
+
if (file !== null) {
|
|
129
|
+
files.push(file);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
return sortedRunFiles(uniqueRunFiles(files));
|
|
133
|
+
}
|
|
134
|
+
function discoverExplicitRunFiles(files) {
|
|
67
135
|
const seenPaths = new Set();
|
|
68
136
|
for (const file of files) {
|
|
69
137
|
assertUniqueRunFile(file, seenPaths);
|
|
70
138
|
seenPaths.add(file.path);
|
|
71
139
|
}
|
|
72
|
-
assertNonEmptyDiscoveredFiles(files);
|
|
73
140
|
return files;
|
|
74
141
|
}
|
|
142
|
+
function pathIsInsideDirectory(filePath, directoryPath) {
|
|
143
|
+
const relativePath = relative(directoryPath, filePath);
|
|
144
|
+
return relativePath === '' || !isOutsideCwd(relativePath);
|
|
145
|
+
}
|
|
146
|
+
function filterFilesByDirectory(files, directory) {
|
|
147
|
+
return files.filter(function isInsideDirectory(file) {
|
|
148
|
+
return pathIsInsideDirectory(file.path, directory.path);
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
function assertEffectiveDirectoryFilter(directory, profileFiles, filteredFiles) {
|
|
152
|
+
if (filteredFiles.length === 0) {
|
|
153
|
+
noTestsCollected(`Directory run path matched no profile-discovered test files: ${directory.requestedPath}`);
|
|
154
|
+
}
|
|
155
|
+
if (filteredFiles.length === profileFiles.length) {
|
|
156
|
+
invalidRequest(`Directory run path did not narrow profile file discovery: ${directory.requestedPath}`);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
function discoverDirectoryFilteredFiles(profileFiles, directories) {
|
|
160
|
+
const files = [];
|
|
161
|
+
for (const directory of directories) {
|
|
162
|
+
const directoryFiles = filterFilesByDirectory(profileFiles, directory);
|
|
163
|
+
assertEffectiveDirectoryFilter(directory, profileFiles, directoryFiles);
|
|
164
|
+
files.push(...directoryFiles);
|
|
165
|
+
}
|
|
166
|
+
const uniqueFiles = sortedRunFiles(uniqueRunFiles(files));
|
|
167
|
+
assertNonEmptyArray('Directory run paths matched no profile-discovered test files.', uniqueFiles);
|
|
168
|
+
return [uniqueFiles[0], ...uniqueFiles.slice(1)];
|
|
169
|
+
}
|
|
170
|
+
function assertNoDuplicateDirectories(directories) {
|
|
171
|
+
const seenPaths = new Set();
|
|
172
|
+
for (const directory of directories) {
|
|
173
|
+
if (seenPaths.has(directory.path)) {
|
|
174
|
+
invalidRequest(`Run path must not be duplicated: ${directory.requestedPath}`);
|
|
175
|
+
}
|
|
176
|
+
seenPaths.add(directory.path);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
async function discoverDirectoryRunFiles(realCwd, profileFiles, directories) {
|
|
180
|
+
if (profileFiles === null) {
|
|
181
|
+
invalidRequest('Directory run paths require selected profile file discovery.');
|
|
182
|
+
}
|
|
183
|
+
assertNoDuplicateDirectories(directories);
|
|
184
|
+
const files = await discoverProfileRunFiles(realCwd, profileFiles);
|
|
185
|
+
assertNonEmptyArray('Profile file discovery matched no test files.', files);
|
|
186
|
+
return discoverDirectoryFilteredFiles(files, directories);
|
|
187
|
+
}
|
|
188
|
+
async function discoverProfileOnlyRunFiles(realCwd, profileFiles) {
|
|
189
|
+
if (profileFiles === null) {
|
|
190
|
+
noTestsCollected('No run paths were provided and the selected profile has no file discovery policy.');
|
|
191
|
+
}
|
|
192
|
+
const files = await discoverProfileRunFiles(realCwd, profileFiles);
|
|
193
|
+
assertNonEmptyArray('Profile file discovery matched no test files.', files);
|
|
194
|
+
return [files[0], ...files.slice(1)];
|
|
195
|
+
}
|
|
196
|
+
function assertConsistentRunPathKinds(paths) {
|
|
197
|
+
const hasFiles = paths.some(function isFile(path) {
|
|
198
|
+
return path.kind === 'file';
|
|
199
|
+
});
|
|
200
|
+
const hasDirectories = paths.some(function isDirectory(path) {
|
|
201
|
+
return path.kind === 'directory';
|
|
202
|
+
});
|
|
203
|
+
if (hasFiles && hasDirectories) {
|
|
204
|
+
invalidRequest('Run paths must not mix files and directories.');
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
function discoveredFiles(paths) {
|
|
208
|
+
return paths.flatMap(function toFile(path) {
|
|
209
|
+
return path.kind === 'file' ? [path.file] : [];
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
function discoveredDirectories(paths) {
|
|
213
|
+
return paths.flatMap(function toDirectory(path) {
|
|
214
|
+
return path.kind === 'directory' ? [path.directory] : [];
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
async function discoverRequestedRunFiles(realCwd, request) {
|
|
218
|
+
const paths = await Promise.all(request.paths.map(async function discoverPath(requestedPath) {
|
|
219
|
+
return await discoverRunPath(realCwd, requestedPath);
|
|
220
|
+
}));
|
|
221
|
+
assertConsistentRunPathKinds(paths);
|
|
222
|
+
const files = discoveredFiles(paths);
|
|
223
|
+
const firstFile = files[0];
|
|
224
|
+
if (firstFile !== undefined) {
|
|
225
|
+
return discoverExplicitRunFiles([firstFile, ...files.slice(1)]);
|
|
226
|
+
}
|
|
227
|
+
const directories = discoveredDirectories(paths);
|
|
228
|
+
assertNonEmptyArray('No run paths were provided and the selected profile has no file discovery policy.', directories);
|
|
229
|
+
return await discoverDirectoryRunFiles(realCwd, request.profileFiles, [directories[0], ...directories.slice(1)]);
|
|
230
|
+
}
|
|
231
|
+
export async function discoverRunFiles(request) {
|
|
232
|
+
const realCwd = await readRealCwd(request.cwd);
|
|
233
|
+
return request.paths.length === 0
|
|
234
|
+
? await discoverProfileOnlyRunFiles(realCwd, request.profileFiles)
|
|
235
|
+
: await discoverRequestedRunFiles(realCwd, request);
|
|
236
|
+
}
|
|
75
237
|
//# sourceMappingURL=run-discovery.js.map
|