Skip to content

Commit

Permalink
test_runner: dont split lines on test:stdout
Browse files Browse the repository at this point in the history
PR-URL: #48057
Backport-PR-URL: #48684
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
  • Loading branch information
MoLow authored and danielleadams committed Jul 12, 2023
1 parent 04eb1f8 commit d795c0a
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 23 deletions.
2 changes: 1 addition & 1 deletion lib/internal/test_runner/reporter/spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ class SpecReporter extends Transform {
break;
case 'test:stderr':
case 'test:stdout':
return `${data.message}\n`;
return data.message;
case 'test:diagnostic':
return `${colors[type]}${this.#indent(data.nesting)}${symbols[type]}${data.message}${white}\n`;
case 'test:coverage':
Expand Down
16 changes: 11 additions & 5 deletions lib/internal/test_runner/reporter/tap.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@ const {
ArrayPrototypePush,
ObjectEntries,
RegExpPrototypeSymbolReplace,
RegExpPrototypeSymbolSplit,
SafeMap,
SafeSet,
StringPrototypeReplaceAll,
StringPrototypeSplit,
StringPrototypeRepeat,
} = primordials;
const { inspectWithNoCustomRetry } = require('internal/errors');
Expand Down Expand Up @@ -46,8 +46,14 @@ async function * tapReporter(source) {
yield `${indent(data.nesting)}# Subtest: ${tapEscape(data.name)}\n`;
break;
case 'test:stderr':
case 'test:stdout':
case 'test:diagnostic':
case 'test:stdout': {
const lines = RegExpPrototypeSymbolSplit(kLineBreakRegExp, data.message);
for (let i = 0; i < lines.length; i++) {
if (lines[i].length === 0) continue;
yield `# ${tapEscape(lines[i])}\n`;
}
break;
} case 'test:diagnostic':
yield `${indent(data.nesting)}# ${tapEscape(data.message)}\n`;
break;
case 'test:coverage':
Expand Down Expand Up @@ -124,7 +130,7 @@ function jsToYaml(indent, name, value, seen) {
return `${prefix}${inspectWithNoCustomRetry(value, inspectOptions)}\n`;
}

const lines = StringPrototypeSplit(value, kLineBreakRegExp);
const lines = RegExpPrototypeSymbolSplit(kLineBreakRegExp, value);

if (lines.length === 1) {
return `${prefix}${inspectWithNoCustomRetry(value, inspectOptions)}\n`;
Expand Down Expand Up @@ -224,7 +230,7 @@ function jsToYaml(indent, name, value, seen) {
const frames = [];

ArrayPrototypeForEach(
StringPrototypeSplit(errStack, kLineBreakRegExp),
RegExpPrototypeSymbolSplit(kLineBreakRegExp, errStack),
(frame) => {
const processed = RegExpPrototypeSymbolReplace(
kFrameStartRegExp,
Expand Down
19 changes: 6 additions & 13 deletions lib/internal/test_runner/runner.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,12 @@ const {
ArrayPrototypeSlice,
ArrayPrototypeSome,
ArrayPrototypeSort,
hardenRegExp,
ObjectAssign,
PromisePrototypeThen,
SafePromiseAll,
SafePromiseAllReturnVoid,
SafePromiseAllSettledReturnVoid,
PromiseResolve,
RegExpPrototypeSymbolSplit,
SafeMap,
SafeSet,
StringPrototypeIndexOf,
Expand Down Expand Up @@ -74,7 +72,6 @@ const {
const kFilterArgs = ['--test', '--experimental-test-coverage', '--watch'];
const kFilterArgValues = ['--test-reporter', '--test-reporter-destination'];
const kDiagnosticsFilterArgs = ['tests', 'suites', 'pass', 'fail', 'cancelled', 'skipped', 'todo', 'duration_ms'];
const kSplitLine = hardenRegExp(/\r?\n/);

const kCanceledTests = new SafeSet()
.add(kCancelledByParent).add(kAborted).add(kTestTimeoutFailure);
Expand Down Expand Up @@ -300,15 +297,11 @@ class FileTest extends Test {
}

if (TypedArrayPrototypeGetLength(nonSerialized) > 0) {
const messages = RegExpPrototypeSymbolSplit(kSplitLine, nonSerialized.toString('utf-8'));
for (let i = 0; i < messages.length; i++) {
const message = messages[i];
this.addToReport({
__proto__: null,
type: 'test:stdout',
data: { __proto__: null, file: this.name, message },
});
}
this.addToReport({
__proto__: null,
type: 'test:stdout',
data: { __proto__: null, file: this.name, message: nonSerialized.toString('utf-8') },
});
}

while (bufferHead?.length >= kSerializedSizeHeader) {
Expand Down Expand Up @@ -385,7 +378,7 @@ function runTestFile(path, root, inspectPort, filesWatcher, testNamePatterns) {
subtest.addToReport({
__proto__: null,
type: 'test:stderr',
data: { __proto__: null, file: path, message: line },
data: { __proto__: null, file: path, message: line + '\n' },
});
});

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
{ foo: [32m'bar'[39m }

[33m1[39m

[32m✔ passing test [90m(*ms)[39m[39m
[34mℹ tests 1[39m
[34mℹ suites 0[39m
Expand All @@ -13,9 +11,7 @@
[34mℹ duration_ms *[39m
TAP version 13
# { foo: [32m'bar'[39m }
#
# [33m1[39m
#
# Subtest: passing test
ok 1 - passing test
---
Expand Down

0 comments on commit d795c0a

Please sign in to comment.