@@ -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');
2016const { spawn } = require('child_process');
2117const { 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');
2220const console = require('internal/console/global');
2321const {
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
140116function 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