@@ -209,3 +209,59 @@ test('options.transforms', t => {
209
209
t . end ( ) ;
210
210
}
211
211
} ) ;
212
+
213
+ test ( 'evaluateModule needs explicit enabling' , async t => {
214
+ try {
215
+ const {
216
+ evaluateModule : defaultModule ,
217
+ evaluateProgram : defaultProgram ,
218
+ } = makeEvaluators ( ) ;
219
+
220
+ t . equal ( defaultProgram ( '123; 456' ) , 456 , 'default program works' ) ;
221
+ t . throws (
222
+ ( ) => defaultModule ( '123; 456' ) ,
223
+ SyntaxError ,
224
+ 'default module fails' ,
225
+ ) ;
226
+
227
+ let rewriteAll = false ;
228
+ const moduleTransform = {
229
+ rewrite ( ss ) {
230
+ if ( rewriteAll || ss . sourceType === 'module' ) {
231
+ return {
232
+ ...ss ,
233
+ src : 'Promise.resolve({default: 123})' ,
234
+ moduleRewritten : true ,
235
+ } ;
236
+ }
237
+ return ss ;
238
+ } ,
239
+ } ;
240
+
241
+ const {
242
+ evaluateModule : myModule ,
243
+ evaluateProgram : myProgram ,
244
+ } = makeEvaluators ( {
245
+ transforms : [ moduleTransform ] ,
246
+ } ) ;
247
+
248
+ t . equal ( myProgram ( '123; 456' ) , 456 , 'my program works' ) ;
249
+ t . deepEqual (
250
+ await myModule ( 'export default 345;' ) ,
251
+ { default : 123 } ,
252
+ 'module rewrites' ,
253
+ ) ;
254
+
255
+ rewriteAll = true ;
256
+ t . throws (
257
+ ( ) => myProgram ( '123; 456' ) ,
258
+ SyntaxError ,
259
+ 'module rewrite in program context fails' ,
260
+ ) ;
261
+ } catch ( e ) {
262
+ console . log ( 'unexpected exception' , e ) ;
263
+ t . assert ( false , e ) ;
264
+ } finally {
265
+ t . end ( ) ;
266
+ }
267
+ } ) ;
0 commit comments