@@ -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