diff options
author | Moshe Atlow <moshe@atlow.co.il> | 2022-10-03 13:12:53 +0300 |
---|---|---|
committer | Richard Lau <rlau@redhat.com> | 2022-12-07 09:06:59 -0500 |
commit | 02a18eac69922214590c786a8f22172676e25eb4 (patch) | |
tree | 363e9dceb1bdef6b22f7752fa59a192b907601e7 | |
parent | 64d343af74dcf4f9719474b2156a6a64b2277c5a (diff) | |
download | node-new-02a18eac69922214590c786a8f22172676e25eb4.tar.gz |
test: fix test-runner-inspect
PR-URL: https://github.com/nodejs/node/pull/44620
Backport-PR-URL: https://github.com/nodejs/node/pull/44873
Fixes: https://github.com/nodejs/node/issues/44600
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
-rw-r--r-- | lib/internal/test_runner/runner.js | 41 |
1 files changed, 13 insertions, 28 deletions
diff --git a/lib/internal/test_runner/runner.js b/lib/internal/test_runner/runner.js index 911a700d68..9994ac12ec 100644 --- a/lib/internal/test_runner/runner.js +++ b/lib/internal/test_runner/runner.js @@ -4,21 +4,19 @@ const { ArrayPrototypeFilter, ArrayPrototypeIncludes, ArrayPrototypeJoin, - ArrayPrototypePop, ArrayPrototypePush, ArrayPrototypeSlice, ArrayPrototypeSort, ObjectAssign, PromisePrototypeThen, - RegExpPrototypeSymbolSplit, SafePromiseAll, SafeSet, - StringPrototypeEndsWith, } = primordials; -const { Buffer } = require('buffer'); const { spawn } = require('child_process'); const { readdirSync, statSync } = require('fs'); +// TODO(aduh95): switch to internal/readline/interface when backporting to Node.js 16.x is no longer a concern. +const { createInterface } = require('readline'); const console = require('internal/console/global'); const { codes: { @@ -114,28 +112,6 @@ function getRunArgs({ path, inspectPort }) { return argv; } -function makeStderrCallback(callback) { - if (!isUsingInspector()) { - return callback; - } - let buffer = Buffer.alloc(0); - return (data) => { - callback(data); - const newData = Buffer.concat([buffer, data]); - const str = newData.toString('utf8'); - let lines = str; - if (StringPrototypeEndsWith(lines, '\n')) { - buffer = Buffer.alloc(0); - } else { - lines = RegExpPrototypeSymbolSplit(/\r?\n/, str); - buffer = Buffer.from(ArrayPrototypePop(lines), 'utf8'); - lines = ArrayPrototypeJoin(lines, '\n'); - } - if (isInspectorMessage(lines)) { - process.stderr.write(lines); - } - }; -} function runTestFile(path, root, inspectPort) { const subtest = root.createSubtest(Test, path, async (t) => { @@ -151,9 +127,18 @@ function runTestFile(path, root, inspectPort) { err = error; }); - child.stderr.on('data', makeStderrCallback((data) => { + child.stderr.on('data', (data) => { stderr += data; - })); + }); + + if (isUsingInspector()) { + const rl = createInterface({ input: child.stderr }); + rl.on('line', (line) => { + if (isInspectorMessage(line)) { + process.stderr.write(line + '\n'); + } + }); + } const { 0: { 0: code, 1: signal }, 1: stdout } = await SafePromiseAll([ once(child, 'exit', { signal: t.signal }), |