Skip to content

Commit f44fcd9

Browse files
committed
test: fix test-runner-inspect
PR-URL: nodejs#44620 Backport-PR-URL: nodejs#44873 Fixes: nodejs#44600 Reviewed-By: Benjamin Gruenbaum <[email protected]> Reviewed-By: Antoine du Hamel <[email protected]>
1 parent 19efff7 commit f44fcd9

File tree

1 file changed

+13
-28
lines changed

1 file changed

+13
-28
lines changed

lib/internal/test_runner/runner.js

+13-28
Original file line numberDiff line numberDiff line change
@@ -4,21 +4,19 @@ const {
44
ArrayPrototypeFilter,
55
ArrayPrototypeIncludes,
66
ArrayPrototypeJoin,
7-
ArrayPrototypePop,
87
ArrayPrototypePush,
98
ArrayPrototypeSlice,
109
ArrayPrototypeSort,
1110
ObjectAssign,
1211
PromisePrototypeThen,
13-
RegExpPrototypeSymbolSplit,
1412
SafePromiseAll,
1513
SafeSet,
16-
StringPrototypeEndsWith,
1714
} = primordials;
1815

19-
const { Buffer } = require('buffer');
2016
const { spawn } = require('child_process');
2117
const { readdirSync, statSync } = require('fs');
18+
// TODO(aduh95): switch to internal/readline/interface when backporting to Node.js 16.x is no longer a concern.
19+
const { createInterface } = require('readline');
2220
const console = require('internal/console/global');
2321
const {
2422
codes: {
@@ -114,28 +112,6 @@ function getRunArgs({ path, inspectPort }) {
114112
return argv;
115113
}
116114

117-
function makeStderrCallback(callback) {
118-
if (!isUsingInspector()) {
119-
return callback;
120-
}
121-
let buffer = Buffer.alloc(0);
122-
return (data) => {
123-
callback(data);
124-
const newData = Buffer.concat([buffer, data]);
125-
const str = newData.toString('utf8');
126-
let lines = str;
127-
if (StringPrototypeEndsWith(lines, '\n')) {
128-
buffer = Buffer.alloc(0);
129-
} else {
130-
lines = RegExpPrototypeSymbolSplit(/\r?\n/, str);
131-
buffer = Buffer.from(ArrayPrototypePop(lines), 'utf8');
132-
lines = ArrayPrototypeJoin(lines, '\n');
133-
}
134-
if (isInspectorMessage(lines)) {
135-
process.stderr.write(lines);
136-
}
137-
};
138-
}
139115

140116
function runTestFile(path, root, inspectPort) {
141117
const subtest = root.createSubtest(Test, path, async (t) => {
@@ -151,9 +127,18 @@ function runTestFile(path, root, inspectPort) {
151127
err = error;
152128
});
153129

154-
child.stderr.on('data', makeStderrCallback((data) => {
130+
child.stderr.on('data', (data) => {
155131
stderr += data;
156-
}));
132+
});
133+
134+
if (isUsingInspector()) {
135+
const rl = createInterface({ input: child.stderr });
136+
rl.on('line', (line) => {
137+
if (isInspectorMessage(line)) {
138+
process.stderr.write(line + '\n');
139+
}
140+
});
141+
}
157142

158143
const { 0: { 0: code, 1: signal }, 1: stdout } = await SafePromiseAll([
159144
once(child, 'exit', { signal: t.signal }),

0 commit comments

Comments
 (0)