@@ -67,6 +67,21 @@ describe('Loader hooks', { concurrency: true }, () => {
67
67
assert . strictEqual ( code , 0 ) ;
68
68
assert . strictEqual ( signal , null ) ;
69
69
} ) ;
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
+ } ) ;
70
85
} ) ;
71
86
72
87
describe ( 'should handle never-settling hooks in CJS files' , { concurrency : true } , ( ) => {
@@ -165,4 +180,19 @@ describe('Loader hooks', { concurrency: true }, () => {
165
180
assert . strictEqual ( code , 1 ) ;
166
181
assert . strictEqual ( signal , null ) ;
167
182
} ) ;
183
+
184
+ it ( 'should not leak internals or expose import.meta.resolve' , async ( ) => {
185
+ const { code, signal, stdout, stderr } = await spawnPromisified ( execPath , [
186
+ '--no-warnings' ,
187
+ '--experimental-import-meta-resolve' ,
188
+ '--experimental-loader' ,
189
+ fixtures . fileURL ( 'es-module-loaders/loader-edge-cases.mjs' ) ,
190
+ fixtures . path ( 'empty.js' ) ,
191
+ ] ) ;
192
+
193
+ assert . strictEqual ( stderr , '' ) ;
194
+ assert . strictEqual ( stdout , '' ) ;
195
+ assert . strictEqual ( code , 0 ) ;
196
+ assert . strictEqual ( signal , null ) ;
197
+ } ) ;
168
198
} ) ;
0 commit comments