@@ -447,40 +447,49 @@ class TestRunner {
447447 const esm = getModuleInstance ( modulePath , content ) ;
448448 if ( esmReturnStatus === ESModuleStatus . Unlinked ) return esm ;
449449
450- const evaluate = async ( ) => {
451- // 1. Link all deps
452- if ( esm . status === ESModuleStatus . Unlinked ) {
453- await esm . link (
454- async ( specifier , referrer ) =>
455- // `linker` should return `vm.SourceTextModule`
456- await asModule (
457- await this . require (
458- path . dirname (
459- referrer . identifier || fileURLToPath ( referrer . url )
460- ) ,
461- specifier ,
462- { esmReturnStatus : ESModuleStatus . Unlinked }
450+ const link = async ( ) => {
451+ await esm . link (
452+ async ( specifier , referencingModule ) =>
453+ // `linker` should return `vm.SourceTextModule`
454+ await asModule (
455+ await this . require (
456+ path . dirname (
457+ referencingModule . identifier ||
458+ fileURLToPath ( referencingModule . url )
463459 ) ,
464- referrer . context ,
465- {
466- esmReturnStatus : ESModuleStatus . Unlinked
467- }
468- )
469- ) ;
460+ specifier ,
461+ { esmReturnStatus : ESModuleStatus . Unlinked }
462+ ) ,
463+ referencingModule . context ,
464+ {
465+ esmReturnStatus : ESModuleStatus . Unlinked
466+ }
467+ )
468+ ) ;
469+ } ;
470+
471+ const run = async ( ) => {
472+ // Link module dependencies
473+ if ( major === 10 ) {
474+ if ( esm . linkingStatus === ESModuleStatus . Unlinked ) {
475+ await link ( ) ;
476+ }
477+ if ( esm . linkingStatus === ESModuleStatus . Linked ) {
478+ esm . instantiate ( ) ;
479+ }
480+ } else {
481+ await link ( ) ;
470482 }
471483
472- // 2. Evaluate the module
473- // Node.js 10 needs instantiate
474- if ( major === 10 && esm . instantiate ) esm . instantiate ( ) ;
484+ // Evaluate the module
475485 await esm . evaluate ( ) ;
476486 if ( esmReturnStatus === ESModuleStatus . Evaluated ) return esm ;
477487
478- // 3. Return module namespace
479488 const ns = esm . namespace ;
480489 return ns . default && ns . default instanceof Promise ? ns . default : ns ;
481490 } ;
482491
483- return evaluate ( ) ;
492+ return run ( ) ;
484493 } ;
485494 }
486495
0 commit comments