@@ -67,6 +67,21 @@ describe('Loader hooks', { concurrency: true }, () => {
6767 assert . strictEqual ( code , 0 ) ;
6868 assert . strictEqual ( signal , null ) ;
6969 } ) ;
70+
71+ it ( 'import.meta.resolve of a never-settling resolve' , async ( ) => {
72+ const { code, signal, stdout, stderr } = await spawnPromisified ( execPath , [
73+ '--no-warnings' ,
74+ '--experimental-import-meta-resolve' ,
75+ '--experimental-loader' ,
76+ fixtures . fileURL ( 'es-module-loaders/never-settling-resolve-step/loader.mjs' ) ,
77+ fixtures . path ( 'es-module-loaders/never-settling-resolve-step/import.meta.never-resolve.mjs' ) ,
78+ ] ) ;
79+
80+ assert . strictEqual ( stderr , '' ) ;
81+ assert . match ( stdout , / ^ s h o u l d b e o u t p u t \r ? \n $ / ) ;
82+ assert . strictEqual ( code , 13 ) ;
83+ assert . strictEqual ( signal , null ) ;
84+ } ) ;
7085 } ) ;
7186
7287 describe ( 'should handle never-settling hooks in CJS files' , { concurrency : true } , ( ) => {
@@ -113,4 +128,19 @@ describe('Loader hooks', { concurrency: true }, () => {
113128 assert . strictEqual ( signal , null ) ;
114129 } ) ;
115130 } ) ;
131+
132+ it ( 'should not leak internals or expose import.meta.resolve' , async ( ) => {
133+ const { code, signal, stdout, stderr } = await spawnPromisified ( execPath , [
134+ '--no-warnings' ,
135+ '--experimental-import-meta-resolve' ,
136+ '--experimental-loader' ,
137+ fixtures . fileURL ( 'es-module-loaders/loader-edge-cases.mjs' ) ,
138+ fixtures . path ( 'empty.js' ) ,
139+ ] ) ;
140+
141+ assert . strictEqual ( stderr , '' ) ;
142+ assert . strictEqual ( stdout , '' ) ;
143+ assert . strictEqual ( code , 0 ) ;
144+ assert . strictEqual ( signal , null ) ;
145+ } ) ;
116146} ) ;
0 commit comments