summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMoshe Atlow <moshe@atlow.co.il>2022-10-03 13:12:53 +0300
committerRichard Lau <rlau@redhat.com>2022-12-07 09:06:59 -0500
commit02a18eac69922214590c786a8f22172676e25eb4 (patch)
tree363e9dceb1bdef6b22f7752fa59a192b907601e7
parent64d343af74dcf4f9719474b2156a6a64b2277c5a (diff)
downloadnode-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.js41
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 }),