@@ -135,42 +135,84 @@ export default testSuite(({ describe }, node: NodeApis) => {
135
135
expect ( stdout ) . toBe ( 'js working\nts working' ) ;
136
136
} ) ;
137
137
138
- test ( 'register / unregister' , async ( ) => {
139
- await using fixture = await createFixture ( {
140
- 'register.cjs' : `
141
- const { register } = require(${ JSON . stringify ( tsxCjsApiPath ) } );
142
- try {
143
- require('./file');
144
- } catch {
145
- console.log('Fails as expected');
146
- }
147
-
148
- const unregister = register();
149
-
150
- const loaded = require('./file');
151
- console.log(loaded.message);
152
-
153
- // Remove from cache
154
- const loadedPath = require.resolve('./file');
155
- delete require.cache[loadedPath];
156
-
157
- unregister();
158
-
159
- try {
160
- require('./file');
161
- } catch {
162
- console.log('Unregistered');
163
- }
164
- ` ,
165
- ...tsFiles ,
166
- } ) ;
138
+ describe ( 'register' , ( { test } ) => {
139
+ test ( 'register / unregister' , async ( ) => {
140
+ await using fixture = await createFixture ( {
141
+ 'register.cjs' : `
142
+ const { register } = require(${ JSON . stringify ( tsxCjsApiPath ) } );
143
+ try {
144
+ require('./file');
145
+ } catch {
146
+ console.log('Fails as expected');
147
+ }
148
+
149
+ const unregister = register();
150
+
151
+ const loaded = require('./file');
152
+ console.log(loaded.message);
153
+
154
+ // Remove from cache
155
+ const loadedPath = require.resolve('./file');
156
+ delete require.cache[loadedPath];
157
+
158
+ unregister();
159
+
160
+ try {
161
+ require('./file');
162
+ } catch {
163
+ console.log('Unregistered');
164
+ }
165
+ ` ,
166
+ ...tsFiles ,
167
+ } ) ;
167
168
168
- const { stdout } = await execaNode ( fixture . getPath ( 'register.cjs' ) , [ ] , {
169
- nodePath : node . path ,
170
- nodeOptions : [ ] ,
169
+ const { stdout } = await execaNode ( fixture . getPath ( 'register.cjs' ) , [ ] , {
170
+ nodePath : node . path ,
171
+ nodeOptions : [ ] ,
172
+ } ) ;
173
+
174
+ expect ( stdout ) . toBe ( 'Fails as expected\nfoo bar json file.ts\nUnregistered' ) ;
171
175
} ) ;
172
176
173
- expect ( stdout ) . toBe ( 'Fails as expected\nfoo bar json file.ts\nUnregistered' ) ;
177
+ test ( 'namespace' , async ( ) => {
178
+ await using fixture = await createFixture ( {
179
+ 'require.cjs' : `
180
+ const { expectErrors } = require('expect-errors');
181
+ const path = require('node:path');
182
+ const tsx = require(${ JSON . stringify ( tsxCjsApiPath ) } );
183
+
184
+ const api = tsx.register({ namespace: 'abcd' });
185
+
186
+ expectErrors(
187
+ // Loading explicit/resolved file path should be ignored by loader (extensions)
188
+ [() => require('./file.ts'), 'SyntaxError'],
189
+
190
+ // resolver should preserve full file path when ignoring
191
+ [() => require('./file.ts?asdf'), "Cannot find module './file.ts?asdf'"]
192
+ );
193
+
194
+ const { message, async } = api.require('./file', __filename);
195
+ console.log(message);
196
+ async.then(m => console.log(m.default));
197
+
198
+ api.require('./tsx?query=1', __filename);
199
+ api.require('./jsx', __filename);
200
+ api.require('./dir?query=3', __filename);
201
+ ` ,
202
+ ...tsFiles ,
203
+
204
+ 'tsx.tsx' : 'console.log(\'tsx\');' ,
205
+ 'jsx.jsx' : 'console.log(\'jsx\');' ,
206
+ 'dir/index.jsx' : 'console.log(\'dir\');' ,
207
+ } ) ;
208
+
209
+ const { stdout } = await execaNode ( fixture . getPath ( 'require.cjs' ) , [ ] , {
210
+ nodePath : node . path ,
211
+ nodeOptions : [ ] ,
212
+ } ) ;
213
+
214
+ expect ( stdout ) . toBe ( 'foo bar json file.ts\ntsx\njsx\ndir\nasync' ) ;
215
+ } ) ;
174
216
} ) ;
175
217
176
218
describe ( 'tsx.require()' , ( { test } ) => {
@@ -265,46 +307,6 @@ export default testSuite(({ describe }, node: NodeApis) => {
265
307
266
308
expect ( stdout ) . toBe ( 'foo bar json file.ts\nfoo bar json file.ts\nfoo bar json file.ts\nUnregistered' ) ;
267
309
} ) ;
268
-
269
- test ( 'namespace' , async ( ) => {
270
- await using fixture = await createFixture ( {
271
- 'require.cjs' : `
272
- const { expectErrors } = require('expect-errors');
273
- const path = require('node:path');
274
- const tsx = require(${ JSON . stringify ( tsxCjsApiPath ) } );
275
-
276
- const api = tsx.register({ namespace: 'abcd' });
277
-
278
- expectErrors(
279
- // Loading explicit/resolved file path should be ignored by loader (extensions)
280
- [() => require('./file.ts'), 'SyntaxError'],
281
-
282
- // resolver should preserve full file path when ignoring
283
- [() => require('./file.ts?asdf'), "Cannot find module './file.ts?asdf'"]
284
- );
285
-
286
- const { message, async } = api.require('./file', __filename);
287
- console.log(message);
288
- async.then(m => console.log(m.default));
289
-
290
- api.require('./tsx?query=1', __filename);
291
- api.require('./jsx', __filename);
292
- api.require('./dir?query=3', __filename);
293
- ` ,
294
- ...tsFiles ,
295
-
296
- 'tsx.tsx' : 'console.log(\'tsx\');' ,
297
- 'jsx.jsx' : 'console.log(\'jsx\');' ,
298
- 'dir/index.jsx' : 'console.log(\'dir\');' ,
299
- } ) ;
300
-
301
- const { stdout } = await execaNode ( fixture . getPath ( 'require.cjs' ) , [ ] , {
302
- nodePath : node . path ,
303
- nodeOptions : [ ] ,
304
- } ) ;
305
-
306
- expect ( stdout ) . toBe ( 'foo bar json file.ts\ntsx\njsx\ndir\nasync' ) ;
307
- } ) ;
308
310
} ) ;
309
311
} ) ;
310
312
0 commit comments