@@ -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 } , ( ) => {
@@ -113,4 +128,19 @@ describe('Loader hooks', { concurrency: true }, () => {
113
128
assert . strictEqual ( signal , null ) ;
114
129
} ) ;
115
130
} ) ;
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
+ } ) ;
116
146
} ) ;
0 commit comments