@@ -32,7 +32,7 @@ const {
32
32
33
33
const { spawn } = require ( 'child_process' ) ;
34
34
const { finished } = require ( 'internal/streams/end-of-stream' ) ;
35
- const { resolve } = require ( 'path' ) ;
35
+ const { resolve, sep , isAbsolute } = require ( 'path' ) ;
36
36
const { DefaultDeserializer, DefaultSerializer } = require ( 'v8' ) ;
37
37
const { getOptionValue } = require ( 'internal/options' ) ;
38
38
const { Interface } = require ( 'internal/readline/interface' ) ;
@@ -62,7 +62,6 @@ const { isRegExp } = require('internal/util/types');
62
62
const { pathToFileURL } = require ( 'internal/url' ) ;
63
63
const {
64
64
createDeferredPromise,
65
- getCWDURL,
66
65
kEmptyObject,
67
66
} = require ( 'internal/util' ) ;
68
67
const { kEmitMessage } = require ( 'internal/test_runner/tests_stream' ) ;
@@ -96,7 +95,7 @@ let debug = require('internal/util/debuglog').debuglog('test_runner', (fn) => {
96
95
} ) ;
97
96
98
97
const kIsolatedProcessName = Symbol ( 'kIsolatedProcessName' ) ;
99
- const kFilterArgs = [ '--test' , '--experimental-test-coverage' , '--watch' ] ;
98
+ const kFilterArgs = [ '--test' , '--experimental-test-coverage' , '--watch' , '--experimental-test-cwd' ] ;
100
99
const kFilterArgValues = [ '--test-reporter' , '--test-reporter-destination' ] ;
101
100
const kDiagnosticsFilterArgs = [ 'tests' , 'suites' , 'pass' , 'fail' , 'cancelled' , 'skipped' , 'todo' , 'duration_ms' ] ;
102
101
@@ -130,7 +129,7 @@ function filterExecArgv(arg, i, arr) {
130
129
! ArrayPrototypeSome ( kFilterArgValues , ( p ) => arg === p || ( i > 0 && arr [ i - 1 ] === p ) || StringPrototypeStartsWith ( arg , `${ p } =` ) ) ;
131
130
}
132
131
133
- function getRunArgs ( path , { forceExit, inspectPort, testNamePatterns, testSkipPatterns, only } ) {
132
+ function getRunArgs ( path , { forceExit, inspectPort, testNamePatterns, testSkipPatterns, only, cwd } ) {
134
133
const argv = ArrayPrototypeFilter ( process . execArgv , filterExecArgv ) ;
135
134
if ( forceExit === true ) {
136
135
ArrayPrototypePush ( argv , '--test-force-exit' ) ;
@@ -629,7 +628,6 @@ function run(options = kEmptyObject) {
629
628
setup, // This line can be removed when parseCommandLine() is removed here.
630
629
} ;
631
630
const root = createTestTree ( rootTestOptions , globalOptions ) ;
632
-
633
631
let testFiles = files ?? createTestFileList ( globPatterns , cwd ) ;
634
632
635
633
if ( shard ) {
@@ -680,7 +678,9 @@ function run(options = kEmptyObject) {
680
678
} ;
681
679
} else if ( isolation === 'none' ) {
682
680
if ( watch ) {
683
- filesWatcher = watchFiles ( testFiles , opts ) ;
681
+ // TODO
682
+ const absoluteTestFiles = ArrayPrototypeMap ( testFiles , ( file ) => isAbsolute ( file ) ? file : resolve ( cwd , file ) ) ;
683
+ filesWatcher = watchFiles ( absoluteTestFiles , opts ) ;
684
684
runFiles = async ( ) => {
685
685
root . harness . bootstrapPromise = null ;
686
686
root . harness . buildPromise = null ;
@@ -693,7 +693,7 @@ function run(options = kEmptyObject) {
693
693
const { promise, resolve : finishBootstrap } = createDeferredPromise ( ) ;
694
694
695
695
await root . runInAsyncScope ( async ( ) => {
696
- const parentURL = getCWDURL ( ) . href ;
696
+ const parentURL = pathToFileURL ( cwd + sep ) . href ;
697
697
const cascadedLoader = esmLoader . getOrInitializeCascadedLoader ( ) ;
698
698
let topLevelTestCount = 0 ;
699
699
@@ -705,8 +705,8 @@ function run(options = kEmptyObject) {
705
705
}
706
706
707
707
for ( let i = 0 ; i < testFiles . length ; ++ i ) {
708
- const testFile = resolve ( cwd , testFiles [ i ] ) ;
709
- const fileURL = pathToFileURL ( testFile ) ;
708
+ const testFile = testFiles [ i ] ;
709
+ const fileURL = pathToFileURL ( resolve ( cwd , testFile ) ) ;
710
710
const parent = i === 0 ? undefined : parentURL ;
711
711
let threw = false ;
712
712
let importError ;
0 commit comments