@overkill-dev/reporter-line 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/package.json +4 -3
- package/packages/reporter-line/reporter-line.entry-point.d.ts +2 -0
- package/packages/reporter-line/reporter-line.entry-point.d.ts.map +1 -1
- package/packages/reporter-line/reporter-line.entry-point.js +19 -1
- package/packages/reporter-line/reporter-line.entry-point.js.map +1 -1
- package/reporters/failure-summary.js +16 -0
- package/reporters/failure-summary.js.map +1 -0
- package/reporters/human-reporter-rendering.js +214 -0
- package/reporters/human-reporter-rendering.js.map +1 -0
- package/reporters/line-reporter.js +92 -97
- package/reporters/line-reporter.js.map +1 -1
- package/reporters/run-timing-summary.js +11 -0
- package/reporters/run-timing-summary.js.map +1 -0
- package/reporters/terminal.js +5 -1
- package/reporters/terminal.js.map +1 -1
- package/sbom.cdx.json +14 -14
package/package.json
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"dependencies": {
|
|
7
7
|
"ansi-escapes": "7.3.0",
|
|
8
8
|
"figures": "6.1.0",
|
|
9
|
-
"string-width": "8.
|
|
9
|
+
"string-width": "8.3.0",
|
|
10
10
|
"yoctocolors": "2.2.0"
|
|
11
11
|
},
|
|
12
12
|
"description": "Human-readable Overkill line reporter.",
|
|
@@ -28,15 +28,16 @@
|
|
|
28
28
|
"license": "MIT",
|
|
29
29
|
"name": "@overkill-dev/reporter-line",
|
|
30
30
|
"peerDependencies": {
|
|
31
|
-
"@overkill-dev/engine": "0.0.
|
|
31
|
+
"@overkill-dev/engine": "0.0.42"
|
|
32
32
|
},
|
|
33
33
|
"repository": {
|
|
34
34
|
"type": "git",
|
|
35
35
|
"url": "git+https://github.com/enormora/overkill.git"
|
|
36
36
|
},
|
|
37
37
|
"sideEffects": [
|
|
38
|
+
"./reporters/human-reporter-rendering.js",
|
|
38
39
|
"./reporters/line-reporter.js"
|
|
39
40
|
],
|
|
40
41
|
"type": "module",
|
|
41
|
-
"version": "0.0.
|
|
42
|
+
"version": "0.0.35"
|
|
42
43
|
}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import type { DefinedReporter, RealTimeReporter } from '@overkill-dev/engine';
|
|
2
2
|
export type LineReporterOptions = {
|
|
3
|
+
readonly color?: boolean;
|
|
3
4
|
readonly verbose: boolean;
|
|
5
|
+
readonly wrap?: boolean;
|
|
4
6
|
};
|
|
5
7
|
export declare function createLineReporter(options?: LineReporterOptions): DefinedReporter<RealTimeReporter>;
|
|
6
8
|
//# sourceMappingURL=reporter-line.entry-point.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reporter-line.entry-point.d.ts","sourceRoot":"","sources":["../../../../../source/packages/reporter-line/reporter-line.entry-point.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,sBAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"reporter-line.entry-point.d.ts","sourceRoot":"","sources":["../../../../../source/packages/reporter-line/reporter-line.entry-point.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,sBAAiC,CAAC;AAIzF,MAAM,MAAM,mBAAmB,GAAG;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC;AAkBF,wBAAgB,kBAAkB,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,eAAe,CAAC,gBAAgB,CAAC,CAUnG"}
|
|
@@ -1,8 +1,26 @@
|
|
|
1
1
|
import { createLineReporter as createLineReporterInstance } from "../../reporters/line-reporter.js";
|
|
2
|
+
const defaultColumns = 80;
|
|
3
|
+
function colorOption(options) {
|
|
4
|
+
return options?.color ?? true;
|
|
5
|
+
}
|
|
6
|
+
function wrapOption(options) {
|
|
7
|
+
return options?.wrap ?? true;
|
|
8
|
+
}
|
|
9
|
+
function verboseOption(options) {
|
|
10
|
+
return options?.verbose ?? false;
|
|
11
|
+
}
|
|
12
|
+
function currentColumns() {
|
|
13
|
+
return Number.isSafeInteger(process.stdout.columns) ? process.stdout.columns : defaultColumns;
|
|
14
|
+
}
|
|
2
15
|
export function createLineReporter(options) {
|
|
3
16
|
return createLineReporterInstance({
|
|
17
|
+
columns: currentColumns(),
|
|
18
|
+
formatOptions: {
|
|
19
|
+
color: colorOption(options),
|
|
20
|
+
wrap: wrapOption(options)
|
|
21
|
+
},
|
|
4
22
|
stdoutConsole: console,
|
|
5
|
-
verbose: options
|
|
23
|
+
verbose: verboseOption(options)
|
|
6
24
|
});
|
|
7
25
|
}
|
|
8
26
|
//# sourceMappingURL=reporter-line.entry-point.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reporter-line.entry-point.js","sourceRoot":"","sources":["../../../../../source/packages/reporter-line/reporter-line.entry-point.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,IAAI,0BAA0B,EAAE,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"reporter-line.entry-point.js","sourceRoot":"","sources":["../../../../../source/packages/reporter-line/reporter-line.entry-point.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,IAAI,0BAA0B,EAAE,MAAM,kCAAkC,CAAC;AAGpG,MAAM,cAAc,GAAG,EAAE,CAAC;AAQ1B,SAAS,WAAW,CAAC,OAAwC;IACzD,OAAO,OAAO,EAAE,KAAK,IAAI,IAAI,CAAC;AAClC,CAAC;AAED,SAAS,UAAU,CAAC,OAAwC;IACxD,OAAO,OAAO,EAAE,IAAI,IAAI,IAAI,CAAC;AACjC,CAAC;AAED,SAAS,aAAa,CAAC,OAAwC;IAC3D,OAAO,OAAO,EAAE,OAAO,IAAI,KAAK,CAAC;AACrC,CAAC;AAED,SAAS,cAAc;IACnB,OAAO,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC;AAClG,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,OAA6B;IAC5D,OAAO,0BAA0B,CAAC;QAC9B,OAAO,EAAE,cAAc,EAAE;QACzB,aAAa,EAAE;YACX,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC;YAC3B,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC;SAC5B;QACD,aAAa,EAAE,OAAO;QACtB,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC;KAClC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export function formatFailureSummary(failure) {
|
|
2
|
+
if (failure.kind === 'assertion') {
|
|
3
|
+
return failure.checks[0].summary;
|
|
4
|
+
}
|
|
5
|
+
if (failure.kind === 'body-error') {
|
|
6
|
+
return failure.error.message;
|
|
7
|
+
}
|
|
8
|
+
if (failure.kind === 'cleanup-error') {
|
|
9
|
+
return failure.error.message;
|
|
10
|
+
}
|
|
11
|
+
if (failure.kind === 'timeout') {
|
|
12
|
+
return `Timed out after ${failure.deadlineMilliseconds} ms.`;
|
|
13
|
+
}
|
|
14
|
+
return failure.summary;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=failure-summary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"failure-summary.js","sourceRoot":"","sources":["../../../../source/reporters/failure-summary.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,oBAAoB,CAAC,OAAoB;IACrD,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QAC/B,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IACrC,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QAChC,OAAO,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;IACjC,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;QACnC,OAAO,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;IACjC,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO,mBAAmB,OAAO,CAAC,oBAAoB,MAAM,CAAC;IACjE,CAAC;IAED,OAAO,OAAO,CAAC,OAAO,CAAC;AAC3B,CAAC"}
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
import colors from 'yoctocolors';
|
|
2
|
+
import { formatCaseId } from "@overkill-dev/engine";
|
|
3
|
+
import { formatDefinitionLocations } from "@overkill-dev/engine";
|
|
4
|
+
import { formatFailure } from "./line-failure-rendering.js";
|
|
5
|
+
import { formatTimingSummary as formatRunTimingSummary } from "./run-timing-summary.js";
|
|
6
|
+
const colorPalette = [
|
|
7
|
+
colors.cyan,
|
|
8
|
+
colors.green,
|
|
9
|
+
colors.magenta,
|
|
10
|
+
colors.yellow,
|
|
11
|
+
colors.blue
|
|
12
|
+
];
|
|
13
|
+
function executedCount(result) {
|
|
14
|
+
const { summary } = result;
|
|
15
|
+
return summary.passed + summary.failed + summary.skipped + summary.inconclusive +
|
|
16
|
+
summary.resourceExhausted + summary.crashed + summary.runtimePolicy;
|
|
17
|
+
}
|
|
18
|
+
export const formatTimingSummary = formatRunTimingSummary;
|
|
19
|
+
export function formatCountSummary(result) {
|
|
20
|
+
const { summary } = result;
|
|
21
|
+
const outcomes = [
|
|
22
|
+
`${summary.passed} pass`,
|
|
23
|
+
`${summary.failed} fail`,
|
|
24
|
+
`${summary.skipped} skip`,
|
|
25
|
+
...summary.inconclusive === 0 ? [] : [`${summary.inconclusive} inconclusive`],
|
|
26
|
+
...summary.resourceExhausted === 0 ? [] : [`${summary.resourceExhausted} resource-exhausted`],
|
|
27
|
+
...summary.runtimePolicy === 0 ? [] : [`${summary.runtimePolicy} runtime-policy`],
|
|
28
|
+
...summary.crashed === 0 ? [] : [`${summary.crashed} crash`]
|
|
29
|
+
]
|
|
30
|
+
.join(', ');
|
|
31
|
+
const orphanSummary = result.orphans.length === 0 ? '' : `, ${result.orphans.length} orphaned`;
|
|
32
|
+
return `${summary.discovered} discovered, ${summary.planned} planned, ${executedCount(result)} executed ` +
|
|
33
|
+
`(${outcomes})${orphanSummary}`;
|
|
34
|
+
}
|
|
35
|
+
function hashText(value) {
|
|
36
|
+
let hash = 0;
|
|
37
|
+
for (const character of value) {
|
|
38
|
+
hash += character.codePointAt(0) ?? 0;
|
|
39
|
+
}
|
|
40
|
+
return hash;
|
|
41
|
+
}
|
|
42
|
+
function paletteColor(value) {
|
|
43
|
+
return colorPalette[hashText(value) % colorPalette.length] ?? colors.cyan;
|
|
44
|
+
}
|
|
45
|
+
function formatColoredLabel(value, options) {
|
|
46
|
+
if (!options.color) {
|
|
47
|
+
return value;
|
|
48
|
+
}
|
|
49
|
+
return paletteColor(value)(value);
|
|
50
|
+
}
|
|
51
|
+
function runtimeLabel(runtime) {
|
|
52
|
+
if (runtime.variantId !== null) {
|
|
53
|
+
return `${runtime.name}:${runtime.variantId}`;
|
|
54
|
+
}
|
|
55
|
+
const dimensions = Object
|
|
56
|
+
.entries(runtime.dimensions)
|
|
57
|
+
.toSorted(function compareDimension([left], [right]) {
|
|
58
|
+
return left.localeCompare(right);
|
|
59
|
+
})
|
|
60
|
+
.map(function formatDimension([key, value]) {
|
|
61
|
+
return `${key}=${value}`;
|
|
62
|
+
});
|
|
63
|
+
return dimensions.length === 0 ? runtime.name : `${runtime.name}:${dimensions.join(',')}`;
|
|
64
|
+
}
|
|
65
|
+
function runtimePrefixes(runtimes, options) {
|
|
66
|
+
return runtimes
|
|
67
|
+
.map(function formatRuntime(runtime) {
|
|
68
|
+
const label = runtimeLabel(runtime);
|
|
69
|
+
return `[${formatColoredLabel(label, options)}]`;
|
|
70
|
+
})
|
|
71
|
+
.join(' ');
|
|
72
|
+
}
|
|
73
|
+
function suiteLabel(path, topLevel, options) {
|
|
74
|
+
if (!options.color) {
|
|
75
|
+
return path;
|
|
76
|
+
}
|
|
77
|
+
return `${paletteColor(topLevel)(topLevel)}${path.slice(topLevel.length)}`;
|
|
78
|
+
}
|
|
79
|
+
function suitePrefix(suite, options) {
|
|
80
|
+
if (suite.length === 0) {
|
|
81
|
+
return '';
|
|
82
|
+
}
|
|
83
|
+
const path = suite.join(' > ');
|
|
84
|
+
const topLevel = suite[0] ?? path;
|
|
85
|
+
const label = suiteLabel(path, topLevel, options);
|
|
86
|
+
return `[${label}]`;
|
|
87
|
+
}
|
|
88
|
+
export function contextPrefix(runtimes, suite, options) {
|
|
89
|
+
return [runtimePrefixes(runtimes, options), suitePrefix(suite, options)]
|
|
90
|
+
.filter(function present(value) {
|
|
91
|
+
return value.length > 0;
|
|
92
|
+
})
|
|
93
|
+
.join(' ');
|
|
94
|
+
}
|
|
95
|
+
function formatRunnerError(error) {
|
|
96
|
+
const attribution = error.attributedTo === null ? [] : [`test: ${formatCaseId(error.attributedTo)}`];
|
|
97
|
+
const diagnostics = error.diagnostics.map(function formatDiagnostic(diagnostic) {
|
|
98
|
+
return `${diagnostic.label}: ${diagnostic.value}`;
|
|
99
|
+
});
|
|
100
|
+
return [
|
|
101
|
+
`Runner error: ${error.message}`,
|
|
102
|
+
`type: ${error.subtype}`,
|
|
103
|
+
...attribution,
|
|
104
|
+
...diagnostics
|
|
105
|
+
];
|
|
106
|
+
}
|
|
107
|
+
function artifactCaseKey(id) {
|
|
108
|
+
return JSON.stringify([id.file, id.suite, id.title, id.params]);
|
|
109
|
+
}
|
|
110
|
+
function caseArtifacts(result, testResult) {
|
|
111
|
+
const testKey = artifactCaseKey(testResult.id);
|
|
112
|
+
return result.artifacts.filter(function artifactForCase(artifact) {
|
|
113
|
+
return artifact.id.scope.kind === 'case' && artifactCaseKey(artifact.id.scope.case) === testKey;
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
function runArtifacts(result) {
|
|
117
|
+
return result.artifacts.filter(function isRunArtifact(artifact) {
|
|
118
|
+
return artifact.id.scope.kind === 'run';
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
function artifactLines(artifact) {
|
|
122
|
+
if (artifact.payload.kind !== 'captured-output') {
|
|
123
|
+
return [];
|
|
124
|
+
}
|
|
125
|
+
const suffix = artifact.payload.truncated ? ' truncated' : '';
|
|
126
|
+
const header = `${artifact.payload.stream}${suffix}:`;
|
|
127
|
+
const textLines = artifact.payload.text.length === 0
|
|
128
|
+
? []
|
|
129
|
+
: artifact.payload.text.replace(/\n$/u, '').split('\n');
|
|
130
|
+
return [header, ...textLines];
|
|
131
|
+
}
|
|
132
|
+
function indentDetail(line) {
|
|
133
|
+
return ` ${line}`;
|
|
134
|
+
}
|
|
135
|
+
function failedTestLines(result, testResult, context, heading) {
|
|
136
|
+
if (testResult.outcome?.kind !== 'fail') {
|
|
137
|
+
return [];
|
|
138
|
+
}
|
|
139
|
+
return [
|
|
140
|
+
heading,
|
|
141
|
+
...testResult.outcome.failures.flatMap(function formatTestFailure(failure) {
|
|
142
|
+
return formatFailure(failure, context).map(indentDetail);
|
|
143
|
+
}),
|
|
144
|
+
...caseArtifacts(result, testResult).flatMap(function formatArtifact(artifact) {
|
|
145
|
+
return artifactLines(artifact).map(indentDetail);
|
|
146
|
+
})
|
|
147
|
+
];
|
|
148
|
+
}
|
|
149
|
+
function passedArtifactLines(result, testResult, heading) {
|
|
150
|
+
return caseArtifacts(result, testResult).flatMap(function formatArtifact(artifact) {
|
|
151
|
+
return [
|
|
152
|
+
heading,
|
|
153
|
+
...artifactLines(artifact).map(indentDetail)
|
|
154
|
+
];
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
function testProblemHeading(testResult, context) {
|
|
158
|
+
const location = formatDefinitionLocations(testResult.definitionLocations, context).primary;
|
|
159
|
+
const locationText = location === null ? '' : ` (${location})`;
|
|
160
|
+
return `${formatCaseId(testResult.id)}${locationText}`;
|
|
161
|
+
}
|
|
162
|
+
function knownOutcomeProblemLines(input) {
|
|
163
|
+
const { context, heading, options, outcome, result, testResult } = input;
|
|
164
|
+
if (outcome.kind === 'fail') {
|
|
165
|
+
return failedTestLines(result, testResult, context, heading);
|
|
166
|
+
}
|
|
167
|
+
if (outcome.kind === 'inconclusive') {
|
|
168
|
+
return [heading, ` ${outcome.reason}`];
|
|
169
|
+
}
|
|
170
|
+
if (options.verbose && outcome.kind === 'pass') {
|
|
171
|
+
return passedArtifactLines(result, testResult, heading);
|
|
172
|
+
}
|
|
173
|
+
return [];
|
|
174
|
+
}
|
|
175
|
+
function testProblemLines(result, testResult, context, options) {
|
|
176
|
+
const heading = testProblemHeading(testResult, context);
|
|
177
|
+
const { outcome } = testResult;
|
|
178
|
+
if (outcome === null) {
|
|
179
|
+
return [heading, ` ${testResult.verdict}`];
|
|
180
|
+
}
|
|
181
|
+
return knownOutcomeProblemLines({ context, heading, options, outcome, result, testResult });
|
|
182
|
+
}
|
|
183
|
+
function problemTestResult(testResult, verbose) {
|
|
184
|
+
const { outcome } = testResult;
|
|
185
|
+
if (outcome === null) {
|
|
186
|
+
return true;
|
|
187
|
+
}
|
|
188
|
+
if (outcome.kind === 'fail' || outcome.kind === 'inconclusive') {
|
|
189
|
+
return true;
|
|
190
|
+
}
|
|
191
|
+
return verbose && outcome.kind === 'pass';
|
|
192
|
+
}
|
|
193
|
+
export function problemLines(result, context, options) {
|
|
194
|
+
const testLines = result
|
|
195
|
+
.perTest
|
|
196
|
+
.filter(function isProblem(testResult) {
|
|
197
|
+
return problemTestResult(testResult, options.verbose);
|
|
198
|
+
})
|
|
199
|
+
.flatMap(function formatProblem(testResult) {
|
|
200
|
+
return testProblemLines(result, testResult, context, options);
|
|
201
|
+
});
|
|
202
|
+
const runnerErrorLines = result.runnerErrors.flatMap(formatRunnerError);
|
|
203
|
+
const runArtifactLines = result.status === 'failed'
|
|
204
|
+
? runArtifacts(result).flatMap(artifactLines)
|
|
205
|
+
: [];
|
|
206
|
+
const lines = [...testLines, ...runnerErrorLines, ...runArtifactLines];
|
|
207
|
+
return lines.length === 0 ? [] : [
|
|
208
|
+
'Problems',
|
|
209
|
+
...lines.map(function indentProblem(line) {
|
|
210
|
+
return ` ${line}`;
|
|
211
|
+
})
|
|
212
|
+
];
|
|
213
|
+
}
|
|
214
|
+
//# sourceMappingURL=human-reporter-rendering.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"human-reporter-rendering.js","sourceRoot":"","sources":["../../../../source/reporters/human-reporter-rendering.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,13 +2,15 @@ import figures from 'figures';
|
|
|
2
2
|
import colors from 'yoctocolors';
|
|
3
3
|
import { defineReporter } from "@overkill-dev/engine";
|
|
4
4
|
import { formatDefinitionLocations } from "@overkill-dev/engine";
|
|
5
|
-
import {
|
|
5
|
+
import { formatFailureSummary } from "./failure-summary.js";
|
|
6
6
|
import { formatRunFactSummary } from "./run-fact-summary.js";
|
|
7
|
-
import { createTerminalLineLogger } from "./terminal.js";
|
|
7
|
+
import { createTerminalLineLogger, visibleTerminalWidth } from "./terminal.js";
|
|
8
|
+
import { contextPrefix, formatCountSummary, formatTimingSummary, problemLines } from "./human-reporter-rendering.js";
|
|
8
9
|
const successSymbol = colors.green(figures.tick);
|
|
9
10
|
const errorSymbol = colors.red(figures.cross);
|
|
10
11
|
const infoSymbol = colors.cyan(figures.info);
|
|
11
12
|
const microsecondsPerMillisecond = 1000;
|
|
13
|
+
const minimumColumnWidth = 1;
|
|
12
14
|
function indent(depth) {
|
|
13
15
|
return ' '.repeat(depth);
|
|
14
16
|
}
|
|
@@ -27,10 +29,75 @@ function outcomeReason(outcome) {
|
|
|
27
29
|
function formatDuration(durationMicroseconds) {
|
|
28
30
|
return `${durationMicroseconds / microsecondsPerMillisecond} ms`;
|
|
29
31
|
}
|
|
30
|
-
function
|
|
32
|
+
function nextWrapTextState(state, word, textColumns) {
|
|
33
|
+
const candidate = state.line.length === 0 ? word : `${state.line} ${word}`;
|
|
34
|
+
if (state.line.length > 0 && visibleTerminalWidth(candidate) > textColumns) {
|
|
35
|
+
return { line: word, lines: [...state.lines, state.line] };
|
|
36
|
+
}
|
|
37
|
+
return { ...state, line: candidate };
|
|
38
|
+
}
|
|
39
|
+
function wrapTextParts(value, columns) {
|
|
40
|
+
const leadingWhitespace = /^\s*/u.exec(value)?.[0] ?? '';
|
|
41
|
+
const text = value.slice(leadingWhitespace.length);
|
|
42
|
+
const textColumns = Math.max(minimumColumnWidth, columns - visibleTerminalWidth(leadingWhitespace));
|
|
43
|
+
const initialState = { line: '', lines: [] };
|
|
44
|
+
const state = text
|
|
45
|
+
.split(' ')
|
|
46
|
+
.reduce(function wrapWord(currentState, word) {
|
|
47
|
+
return nextWrapTextState(currentState, word, textColumns);
|
|
48
|
+
}, initialState);
|
|
49
|
+
return [...state.lines, state.line].map(function indentWrappedLine(wrappedLine) {
|
|
50
|
+
return `${leadingWhitespace}${wrappedLine}`;
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
function wrapText(value, columns) {
|
|
54
|
+
if (visibleTerminalWidth(value) <= columns) {
|
|
55
|
+
return [value];
|
|
56
|
+
}
|
|
57
|
+
return wrapTextParts(value, columns);
|
|
58
|
+
}
|
|
59
|
+
function logSingleValueLine(terminal, columns, value) {
|
|
60
|
+
const lines = wrapText(value, Math.max(minimumColumnWidth, columns));
|
|
61
|
+
for (const line of lines) {
|
|
62
|
+
terminal.line(line);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
function logMultiValueLine(terminal, columns, values) {
|
|
66
|
+
const [symbol = '', ...messageValues] = values;
|
|
67
|
+
const message = messageValues.join(' ');
|
|
68
|
+
const continuationIndent = ' '.repeat(visibleTerminalWidth(symbol) + 1);
|
|
69
|
+
const firstLineColumns = Math.max(minimumColumnWidth, columns - visibleTerminalWidth(continuationIndent));
|
|
70
|
+
const [firstLine = '', ...continuationLines] = wrapText(message, firstLineColumns);
|
|
71
|
+
terminal.line(symbol, firstLine);
|
|
72
|
+
for (const continuationLine of continuationLines) {
|
|
73
|
+
terminal.line(`${continuationIndent}${continuationLine}`);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
function logWrappedLine(terminal, columns, formatOptions, ...values) {
|
|
77
|
+
if (!formatOptions.wrap || values.length === 0) {
|
|
78
|
+
terminal.line(...values);
|
|
79
|
+
}
|
|
80
|
+
else if (values.length === 1) {
|
|
81
|
+
logSingleValueLine(terminal, columns, values[0] ?? '');
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
logMultiValueLine(terminal, columns, values);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
function outcomeDetail(outcome) {
|
|
31
88
|
const reason = outcomeReason(outcome);
|
|
32
|
-
|
|
33
|
-
|
|
89
|
+
if (reason !== null) {
|
|
90
|
+
return `: ${reason}`;
|
|
91
|
+
}
|
|
92
|
+
if (outcome.kind !== 'fail') {
|
|
93
|
+
return '';
|
|
94
|
+
}
|
|
95
|
+
return `: ${formatFailureSummary(outcome.failures[0])}`;
|
|
96
|
+
}
|
|
97
|
+
function formatTestResult(id, outcome, durationMicroseconds, prefix) {
|
|
98
|
+
const context = prefix.length === 0 ? '' : `${prefix} `;
|
|
99
|
+
const message = `${context}${formatCaseTitle(id)}${outcomeDetail(outcome)} ` +
|
|
100
|
+
`(${formatDuration(durationMicroseconds)})`;
|
|
34
101
|
if (outcome.kind === 'fail') {
|
|
35
102
|
return [errorSymbol, message];
|
|
36
103
|
}
|
|
@@ -39,16 +106,14 @@ function formatTestResult(id, outcome, durationMicroseconds) {
|
|
|
39
106
|
}
|
|
40
107
|
return [infoSymbol, message];
|
|
41
108
|
}
|
|
42
|
-
function formatTerminalTestResult(id, verdict, durationMicroseconds) {
|
|
43
|
-
const
|
|
109
|
+
function formatTerminalTestResult(id, verdict, durationMicroseconds, prefix) {
|
|
110
|
+
const context = prefix.length === 0 ? '' : `${prefix} `;
|
|
111
|
+
const message = `${context}${formatCaseTitle(id)} (${formatDuration(durationMicroseconds)})`;
|
|
44
112
|
if (verdict === 'resource-exhausted') {
|
|
45
113
|
return [errorSymbol, `${message}: resource exhausted`];
|
|
46
114
|
}
|
|
47
115
|
return [errorSymbol, `${message}: crashed`];
|
|
48
116
|
}
|
|
49
|
-
function formatSuiteName(event) {
|
|
50
|
-
return event.suitePath.at(-1)?.title ?? '';
|
|
51
|
-
}
|
|
52
117
|
function formatOrphanLines(orphan, context) {
|
|
53
118
|
const sourceLocations = formatDefinitionLocations(orphan.definitionLocations, context);
|
|
54
119
|
const location = sourceLocations.primary === null ? '' : ` (${sourceLocations.primary})`;
|
|
@@ -59,30 +124,9 @@ function formatOrphanLines(orphan, context) {
|
|
|
59
124
|
})
|
|
60
125
|
];
|
|
61
126
|
}
|
|
62
|
-
function logFailures(terminal, suiteDepth, outcome, context) {
|
|
63
|
-
for (const failure of outcome.failures) {
|
|
64
|
-
for (const line of formatFailure(failure, context)) {
|
|
65
|
-
terminal.line(`${indent(suiteDepth + 1)}${line}`);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
127
|
function logSummary(terminal, result) {
|
|
70
|
-
const { summary } = result;
|
|
71
|
-
const executed = summary.passed + summary.failed + summary.skipped + summary.inconclusive +
|
|
72
|
-
summary.crashed + summary.resourceExhausted;
|
|
73
|
-
const outcomes = [
|
|
74
|
-
`${summary.passed} pass`,
|
|
75
|
-
`${summary.failed} fail`,
|
|
76
|
-
`${summary.skipped} skip`,
|
|
77
|
-
...summary.inconclusive === 0 ? [] : [`${summary.inconclusive} inconclusive`],
|
|
78
|
-
...summary.resourceExhausted === 0 ? [] : [`${summary.resourceExhausted} resource-exhausted`],
|
|
79
|
-
...summary.crashed === 0 ? [] : [`${summary.crashed} crash`]
|
|
80
|
-
]
|
|
81
|
-
.join(', ');
|
|
82
|
-
const orphanSummary = result.orphans.length === 0 ? '' : `, ${result.orphans.length} orphaned`;
|
|
83
|
-
const countSummary = `${summary.discovered} discovered, ${summary.planned} planned, ${executed} executed`;
|
|
84
128
|
const symbol = result.status === 'failed' ? errorSymbol : successSymbol;
|
|
85
|
-
terminal.line(symbol, `${
|
|
129
|
+
terminal.line(symbol, `${formatCountSummary(result)} in ${formatDuration(result.timings.summary.totalWallTimeMicroseconds)} (${formatTimingSummary(result)})`);
|
|
86
130
|
}
|
|
87
131
|
function logOrphans(terminal, orphans, context) {
|
|
88
132
|
if (orphans.length === 0) {
|
|
@@ -96,77 +140,33 @@ function logOrphans(terminal, orphans, context) {
|
|
|
96
140
|
}
|
|
97
141
|
}
|
|
98
142
|
}
|
|
99
|
-
function outputArtifactLines(artifact) {
|
|
100
|
-
if (artifact.payload.kind !== 'captured-output') {
|
|
101
|
-
return [];
|
|
102
|
-
}
|
|
103
|
-
const suffix = artifact.payload.truncated ? ' truncated' : '';
|
|
104
|
-
const header = `${artifact.payload.stream}${suffix}:`;
|
|
105
|
-
const textLines = artifact.payload.text.length === 0 ? [] : artifact.payload.text.replace(/\n$/u, '').split('\n');
|
|
106
|
-
return [header, ...textLines];
|
|
107
|
-
}
|
|
108
|
-
function logOutputArtifacts(terminal, suiteDepth, artifacts) {
|
|
109
|
-
for (const artifact of artifacts) {
|
|
110
|
-
for (const line of outputArtifactLines(artifact)) {
|
|
111
|
-
terminal.line(`${indent(suiteDepth + 1)}${line}`);
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
function shouldLogTestArtifacts(event, verbose) {
|
|
116
|
-
return event.verdict !== 'pass' || verbose;
|
|
117
|
-
}
|
|
118
143
|
function failureLocation(event, definitionLocations) {
|
|
119
144
|
if (event.outcome?.kind !== 'fail' || definitionLocations.primary === null) {
|
|
120
145
|
return '';
|
|
121
146
|
}
|
|
122
147
|
return ` (${definitionLocations.primary})`;
|
|
123
148
|
}
|
|
124
|
-
function nonGreenRun(result) {
|
|
125
|
-
return result.runnerErrors.length > 0 ||
|
|
126
|
-
result.summary.crashed > 0 ||
|
|
127
|
-
result.summary.failed > 0 ||
|
|
128
|
-
result.summary.inconclusive > 0 ||
|
|
129
|
-
result.summary.resourceExhausted > 0 ||
|
|
130
|
-
result.summary.runtimePolicy > 0;
|
|
131
|
-
}
|
|
132
|
-
function runArtifacts(result) {
|
|
133
|
-
return result.artifacts.filter(function isRunArtifact(artifact) {
|
|
134
|
-
return artifact.id.scope.kind === 'run';
|
|
135
|
-
});
|
|
136
|
-
}
|
|
137
149
|
function runStartLine(event) {
|
|
138
150
|
const summary = formatRunFactSummary(event.facts);
|
|
139
151
|
const details = summary === null ? '' : ` (${summary})`;
|
|
140
152
|
return `Test run started: ${event.root.title}${details}`;
|
|
141
153
|
}
|
|
142
154
|
export function createLineReporter(dependencies) {
|
|
143
|
-
const { stdoutConsole, verbose } = dependencies;
|
|
155
|
+
const { columns, formatOptions, stdoutConsole, verbose } = dependencies;
|
|
144
156
|
return defineReporter(function createLineRuntimeReporter(context) {
|
|
145
157
|
const terminal = createTerminalLineLogger({ stdoutConsole });
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
return;
|
|
150
|
-
}
|
|
151
|
-
for (const detailLine of definitionLocations.details) {
|
|
152
|
-
terminal.line(`${indent(suiteDepth + 1)}${detailLine}`);
|
|
158
|
+
const wrappedTerminal = {
|
|
159
|
+
line(...values) {
|
|
160
|
+
logWrappedLine(terminal, columns, formatOptions, ...values);
|
|
153
161
|
}
|
|
154
|
-
|
|
155
|
-
}
|
|
162
|
+
};
|
|
156
163
|
function logTestEnd(event) {
|
|
164
|
+
const prefix = contextPrefix(event.workId?.runtimes ?? [], event.case.suite, formatOptions);
|
|
157
165
|
const [symbol, message] = event.outcome === null
|
|
158
|
-
? formatTerminalTestResult(event.case, event.verdict, event.durationMicroseconds)
|
|
159
|
-
: formatTestResult(event.case, event.outcome, event.durationMicroseconds);
|
|
166
|
+
? formatTerminalTestResult(event.case, event.verdict, event.durationMicroseconds, prefix)
|
|
167
|
+
: formatTestResult(event.case, event.outcome, event.durationMicroseconds, prefix);
|
|
160
168
|
const definitionLocations = formatDefinitionLocations(event.definitionLocations, context);
|
|
161
|
-
|
|
162
|
-
logFailureDetails(event, definitionLocations);
|
|
163
|
-
if (shouldLogTestArtifacts(event, verbose)) {
|
|
164
|
-
logOutputArtifacts(terminal, suiteDepth, event.artifacts);
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
function logSuiteStart(event) {
|
|
168
|
-
terminal.line(infoSymbol, `${indent(suiteDepth)}${formatSuiteName(event)}`);
|
|
169
|
-
suiteDepth += 1;
|
|
169
|
+
wrappedTerminal.line(symbol, `${message}${failureLocation(event, definitionLocations)}`);
|
|
170
170
|
}
|
|
171
171
|
return {
|
|
172
172
|
dispose: null,
|
|
@@ -175,27 +175,22 @@ export function createLineReporter(dependencies) {
|
|
|
175
175
|
sinks: [{ kind: 'stdout-raw' }],
|
|
176
176
|
async onEvent(event) {
|
|
177
177
|
if (event.kind === 'run-start') {
|
|
178
|
-
|
|
179
|
-
}
|
|
180
|
-
else if (event.kind === 'suite-start') {
|
|
181
|
-
logSuiteStart(event);
|
|
182
|
-
}
|
|
183
|
-
else if (event.kind === 'suite-end') {
|
|
184
|
-
suiteDepth = Math.max(0, suiteDepth - 1);
|
|
178
|
+
wrappedTerminal.line(infoSymbol, runStartLine(event));
|
|
185
179
|
}
|
|
186
180
|
else if (event.kind === 'test-end') {
|
|
187
181
|
logTestEnd(event);
|
|
188
182
|
}
|
|
189
183
|
else if (event.kind === 'runner-error') {
|
|
190
|
-
|
|
184
|
+
wrappedTerminal.line(errorSymbol, `Runner error: ${event.error.message}`);
|
|
191
185
|
}
|
|
192
186
|
},
|
|
193
187
|
async onFinish(finalResult) {
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
188
|
+
const lines = problemLines(finalResult, context, { verbose });
|
|
189
|
+
for (const line of lines) {
|
|
190
|
+
wrappedTerminal.line(line);
|
|
197
191
|
}
|
|
198
|
-
|
|
192
|
+
logSummary(wrappedTerminal, finalResult);
|
|
193
|
+
logOrphans(wrappedTerminal, finalResult.orphans, context);
|
|
199
194
|
}
|
|
200
195
|
};
|
|
201
196
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"line-reporter.js","sourceRoot":"","sources":["../../../../source/reporters/line-reporter.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,MAAM,MAAM,aAAa,CAAC;AAEjC,OAAO,EAAE,cAAc,EAAmE,MAAM,sBAAuB,CAAC;AACxH,OAAO,EACH,yBAAyB,
|
|
1
|
+
{"version":3,"file":"line-reporter.js","sourceRoot":"","sources":["../../../../source/reporters/line-reporter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
const microsecondsPerMillisecond = 1000;
|
|
2
|
+
function milliseconds(microseconds) {
|
|
3
|
+
return Math.round(microseconds / microsecondsPerMillisecond);
|
|
4
|
+
}
|
|
5
|
+
export function formatTimingSummary(result) {
|
|
6
|
+
const { summary } = result.timings;
|
|
7
|
+
return `total ${milliseconds(summary.totalWallTimeMicroseconds)} ms, ` +
|
|
8
|
+
`execution ${milliseconds(summary.testExecutionWallTimeMicroseconds)} ms, ` +
|
|
9
|
+
`overhead ${milliseconds(summary.runnerOverheadWallTimeMicroseconds)} ms`;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=run-timing-summary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-timing-summary.js","sourceRoot":"","sources":["../../../../source/reporters/run-timing-summary.ts"],"names":[],"mappings":"AAEA,MAAM,0BAA0B,GAAG,IAAI,CAAC;AAExC,SAAS,YAAY,CAAC,YAAoB;IACtC,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,0BAA0B,CAAC,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAAiB;IACjD,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC;IAEnC,OAAO,SAAS,YAAY,CAAC,OAAO,CAAC,yBAAyB,CAAC,OAAO;QAClE,aAAa,YAAY,CAAC,OAAO,CAAC,iCAAiC,CAAC,OAAO;QAC3E,YAAY,YAAY,CAAC,OAAO,CAAC,kCAAkC,CAAC,KAAK,CAAC;AAClF,CAAC"}
|
package/reporters/terminal.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import 'ansi-escapes';
|
|
2
|
-
import 'string-width';
|
|
2
|
+
import stringWidth from 'string-width';
|
|
3
3
|
|
|
4
4
|
export function createTerminalLineLogger(dependencies) {
|
|
5
5
|
const { stdoutConsole } = dependencies;
|
|
@@ -10,4 +10,8 @@ export function createTerminalLineLogger(dependencies) {
|
|
|
10
10
|
};
|
|
11
11
|
}
|
|
12
12
|
|
|
13
|
+
export function visibleTerminalWidth(value) {
|
|
14
|
+
return stringWidth(value);
|
|
15
|
+
}
|
|
16
|
+
|
|
13
17
|
//# sourceMappingURL=terminal.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminal.js","sourceRoot":"","sources":["../../../../source/reporters/terminal.ts"],"names":[],"mappings":"AAAA,OAAwB,cAAc,CAAC;AACvC,
|
|
1
|
+
{"version":3,"file":"terminal.js","sourceRoot":"","sources":["../../../../source/reporters/terminal.ts"],"names":[],"mappings":"AAAA,OAAwB,cAAc,CAAC;AACvC,OAAO,WAAW,MAAM,cAAc,CAAC;AAuCZ;AAE3B,MAAM,UAAU,wBAAwB,CAAC,YAA4C;IACjF,MAAM,EAAE,aAAa,EAAE,GAAG,YAAY,CAAC;IAEvC,OAAO;QACH,IAAI,CAAC,GAAG,MAAM;YACV,aAAa,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;QACjC,CAAC;KACJ,CAAC;AACN,CAAC;;MAMK,UAAU,oBAAoB,CAAC,KAAa;IAC9C,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC"}
|
package/sbom.cdx.json
CHANGED
|
@@ -16,24 +16,24 @@
|
|
|
16
16
|
"component": {
|
|
17
17
|
"type": "library",
|
|
18
18
|
"name": "@overkill-dev/reporter-line",
|
|
19
|
-
"version": "0.0.
|
|
20
|
-
"bom-ref": "pkg:npm/@overkill-dev/reporter-line@0.0.
|
|
21
|
-
"purl": "pkg:npm/@overkill-dev/reporter-line@0.0.
|
|
19
|
+
"version": "0.0.35",
|
|
20
|
+
"bom-ref": "pkg:npm/@overkill-dev/reporter-line@0.0.35",
|
|
21
|
+
"purl": "pkg:npm/@overkill-dev/reporter-line@0.0.35"
|
|
22
22
|
}
|
|
23
23
|
},
|
|
24
24
|
"components": [
|
|
25
25
|
{
|
|
26
26
|
"type": "library",
|
|
27
27
|
"name": "@overkill-dev/engine",
|
|
28
|
-
"version": "0.0.
|
|
29
|
-
"bom-ref": "pkg:npm/@overkill-dev/engine@0.0.
|
|
28
|
+
"version": "0.0.42",
|
|
29
|
+
"bom-ref": "pkg:npm/@overkill-dev/engine@0.0.42",
|
|
30
30
|
"scope": "optional",
|
|
31
31
|
"licenses": [
|
|
32
32
|
{
|
|
33
33
|
"expression": "MIT"
|
|
34
34
|
}
|
|
35
35
|
],
|
|
36
|
-
"purl": "pkg:npm/@overkill-dev/engine@0.0.
|
|
36
|
+
"purl": "pkg:npm/@overkill-dev/engine@0.0.42"
|
|
37
37
|
},
|
|
38
38
|
{
|
|
39
39
|
"type": "library",
|
|
@@ -64,15 +64,15 @@
|
|
|
64
64
|
{
|
|
65
65
|
"type": "library",
|
|
66
66
|
"name": "string-width",
|
|
67
|
-
"version": "8.
|
|
68
|
-
"bom-ref": "pkg:npm/string-width@8.
|
|
67
|
+
"version": "8.3.0",
|
|
68
|
+
"bom-ref": "pkg:npm/string-width@8.3.0",
|
|
69
69
|
"scope": "required",
|
|
70
70
|
"licenses": [
|
|
71
71
|
{
|
|
72
72
|
"expression": "MIT"
|
|
73
73
|
}
|
|
74
74
|
],
|
|
75
|
-
"purl": "pkg:npm/string-width@8.
|
|
75
|
+
"purl": "pkg:npm/string-width@8.3.0"
|
|
76
76
|
},
|
|
77
77
|
{
|
|
78
78
|
"type": "library",
|
|
@@ -90,15 +90,15 @@
|
|
|
90
90
|
],
|
|
91
91
|
"dependencies": [
|
|
92
92
|
{
|
|
93
|
-
"ref": "pkg:npm/@overkill-dev/engine@0.0.
|
|
93
|
+
"ref": "pkg:npm/@overkill-dev/engine@0.0.42"
|
|
94
94
|
},
|
|
95
95
|
{
|
|
96
|
-
"ref": "pkg:npm/@overkill-dev/reporter-line@0.0.
|
|
96
|
+
"ref": "pkg:npm/@overkill-dev/reporter-line@0.0.35",
|
|
97
97
|
"dependsOn": [
|
|
98
|
-
"pkg:npm/@overkill-dev/engine@0.0.
|
|
98
|
+
"pkg:npm/@overkill-dev/engine@0.0.42",
|
|
99
99
|
"pkg:npm/ansi-escapes@7.3.0",
|
|
100
100
|
"pkg:npm/figures@6.1.0",
|
|
101
|
-
"pkg:npm/string-width@8.
|
|
101
|
+
"pkg:npm/string-width@8.3.0",
|
|
102
102
|
"pkg:npm/yoctocolors@2.2.0"
|
|
103
103
|
]
|
|
104
104
|
},
|
|
@@ -109,7 +109,7 @@
|
|
|
109
109
|
"ref": "pkg:npm/figures@6.1.0"
|
|
110
110
|
},
|
|
111
111
|
{
|
|
112
|
-
"ref": "pkg:npm/string-width@8.
|
|
112
|
+
"ref": "pkg:npm/string-width@8.3.0"
|
|
113
113
|
},
|
|
114
114
|
{
|
|
115
115
|
"ref": "pkg:npm/yoctocolors@2.2.0"
|