@@ -2730,35 +2730,62 @@ assert.strictEqual(
27302730}
27312731
27322732{
2733- // Use a fake stack to verify the expected colored outcome.
2734- const stack = [
2735- 'TypedError: Wonderful message!' ,
2736- ' at A.<anonymous> (/test/node_modules/foo/node_modules/bar/baz.js:2:7)' ,
2737- ' at Module._compile (node:internal/modules/cjs/loader:827:30)' ,
2738- ' at Fancy (node:vm:697:32)' ,
2739- // This file is not an actual Node.js core file.
2740- ' at tryModuleLoad (node:internal/modules/cjs/foo:629:12)' ,
2741- ' at Function.Module._load (node:internal/modules/cjs/loader:621:3)' ,
2742- // This file is not an actual Node.js core file.
2743- ' at Module.require [as weird/name] (node:internal/aaaaa/loader:735:19)' ,
2744- ' at require (node:internal/modules/cjs/helpers:14:16)' ,
2745- ' at /test/test-util-inspect.js:2239:9' ,
2746- ' at getActual (node:assert:592:5)' ,
2747- ] ;
2748- const isNodeCoreFile = [
2749- false , false , true , true , false , true , false , true , false , true ,
2750- ] ;
2751- const err = new TypeError ( 'Wonderful message!' ) ;
2752- err . stack = stack . join ( '\n' ) ;
2753- util . inspect ( err , { colors : true } ) . split ( '\n' ) . forEach ( ( line , i ) => {
2754- let actual = stack [ i ] . replace ( / n o d e _ m o d u l e s \/ ( [ a - z ] + ) / g, ( a , m ) => {
2755- return `node_modules/\u001b[4m${ m } \u001b[24m` ;
2756- } ) ;
2757- if ( isNodeCoreFile [ i ] ) {
2758- actual = `\u001b[90m${ actual } \u001b[39m` ;
2733+ const originalCWD = process . cwd ( ) ;
2734+
2735+ for ( const os of [ 'windows' , 'unix' ] ) {
2736+ process . cwd = ( ) => ( os === 'windows' ?
2737+ 'C:\\workspace\\node-test-binary-windows-js-suites\\node' :
2738+ '/home/user/repository/node' ) ;
2739+
2740+ // Use a fake stack to verify the expected colored outcome.
2741+ const stack = [
2742+ 'TypedError: Wonderful message!' ,
2743+ ' at A.<anonymous> (/t/node_modules/foo/node_modules/bar/baz.js:2:7)' ,
2744+ ' at Module._compile (node:internal/modules/cjs/loader:827:30)' ,
2745+ ' at Fancy (node:vm:697:32)' ,
2746+ // This file is not an actual Node.js core file.
2747+ ' at tryModuleLoad (node:internal/modules/cjs/foo:629:12)' ,
2748+ ' at Function.Module._load (node:internal/modules/cjs/loader:621:3)' ,
2749+ // This file is not an actual Node.js core file.
2750+ ' at Module.require [as weird/name] (node:internal/aaa/loader:735:19)' ,
2751+ ' at require (node:internal/modules/cjs/helpers:14:16)' ,
2752+ ' at Array.forEach (<anonymous>)' ,
2753+ ` at ${ process . cwd ( ) } /test/parallel/test-util-inspect.js:2760:12` ,
2754+ ` at Object.<anonymous> (${ process . cwd ( ) } /node_modules/hyper_module` +
2755+ '/folder/file.js:2753:10)' ,
2756+ ' at /test/test-util-inspect.js:2239:9' ,
2757+ ' at getActual (node:assert:592:5)' ,
2758+ ] ;
2759+ const err = new TypeError ( 'Wonderful message!' ) ;
2760+ err . stack = stack . join ( '\n' ) ;
2761+ if ( os === 'windows' ) {
2762+ err . stack = stack . map ( ( frame ) => ( frame . includes ( 'node:' ) ?
2763+ frame :
2764+ frame . replaceAll ( '/' , '\\' ) )
2765+ ) . join ( '\n' ) ;
27592766 }
2760- assert . strictEqual ( actual , line ) ;
2761- } ) ;
2767+ const escapedCWD = util . inspect ( process . cwd ( ) ) . slice ( 1 , - 1 ) ;
2768+ util . inspect ( err , { colors : true } ) . split ( '\n' ) . forEach ( ( line , i ) => {
2769+ let expected = stack [ i ] . replace ( / n o d e _ m o d u l e s \/ ( [ ^ / ] + ) / gi, ( _ , m ) => {
2770+ return `node_modules/\u001b[4m${ m } \u001b[24m` ;
2771+ } ) . replaceAll ( new RegExp ( `(\\(?${ escapedCWD } )` , 'gi' ) , ( _ , m ) => {
2772+ return `\x1B[90m${ m } \x1B[39m` ;
2773+ } ) ;
2774+ if ( expected . includes ( process . cwd ( ) ) && expected . endsWith ( ')' ) ) {
2775+ expected = `${ expected . slice ( 0 , - 1 ) } \x1B[90m)\x1B[39m` ;
2776+ }
2777+ if ( line . includes ( 'node:' ) ) {
2778+ if ( ! line . includes ( 'foo' ) && ! line . includes ( 'aaa' ) ) {
2779+ expected = `\u001b[90m${ expected } \u001b[39m` ;
2780+ }
2781+ } else if ( os === 'windows' ) {
2782+ expected = expected . replaceAll ( '/' , '\\' ) ;
2783+ }
2784+ assert . strictEqual ( line , expected ) ;
2785+ } ) ;
2786+ }
2787+
2788+ process . cwd = originalCWD ;
27622789}
27632790
27642791{
0 commit comments