@@ -263,93 +263,108 @@ describe("options", () => {
263
263
} ) ;
264
264
265
265
describe ( "setupOptions" , ( ) => {
266
- const testsWithNoHmrByDefault = [
266
+ const testCases = [
267
267
{
268
- name : "no nsconfig.json " ,
269
- isHmrEnabledByDefault : false ,
268
+ name : "no options are provided" ,
270
269
args : [ ] ,
271
- expectedHmr : false ,
272
- expectedBundle : false
270
+ data : [
271
+ { useLegacyWorkflow : undefined , expectedHmr : false , expectedBundle : false } ,
272
+ { useLegacyWorkflow : false , expectedHmr : true , expectedBundle : true } ,
273
+ { useLegacyWorkflow : true , expectedHmr : false , expectedBundle : false }
274
+ ]
273
275
} ,
274
276
{
275
- name : "no nsconfig.json and --hmr is provided" ,
276
- isHmrEnabledByDefault : false ,
277
+ name : " --hmr is provided" ,
277
278
args : [ "--hmr" ] ,
278
- expectedHmr : true ,
279
- expectedBundle : true
279
+ data : [
280
+ { useLegacyWorkflow : undefined , expectedHmr : true , expectedBundle : true } ,
281
+ { useLegacyWorkflow : false , expectedHmr : true , expectedBundle : true } ,
282
+ { useLegacyWorkflow : true , expectedHmr : true , expectedBundle : true }
283
+ ]
280
284
} ,
281
285
{
282
- name : "no nsconfig.json and --no-hmr is provided" ,
283
- isHmrEnabledByDefault : false ,
286
+ name : " --no-hmr is provided" ,
284
287
args : [ "--no-hmr" ] ,
285
- expectedHmr : false ,
286
- expectedBundle : false
288
+ data : [
289
+ { useLegacyWorkflow : undefined , expectedHmr : false , expectedBundle : false } ,
290
+ { useLegacyWorkflow : false , expectedHmr : false , expectedBundle : true } ,
291
+ { useLegacyWorkflow : true , expectedHmr : false , expectedBundle : false }
292
+ ]
287
293
} ,
288
294
{
289
- name : "no nsconfig.json and --release is provided" ,
290
- isHmrEnabledByDefault : false ,
291
- args : [ "--release" ] ,
292
- expectedHmr : false ,
293
- expectedBundle : false
294
- } ,
295
- {
296
- name : "no nsconfig.json and --bundle is provided" ,
297
- isHmrEnabledByDefault : false ,
295
+ name : " --bundle is provided" ,
298
296
args : [ "--bundle" ] ,
299
- expectedHmr : false ,
300
- expectedBundle : true
301
- }
302
- ] ;
303
- const testsWithHmrByDefault = < any > [
304
- {
305
- name : "has nsconfig.json" ,
306
- isHmrEnabledByDefault : true ,
307
- expectedHmr : true ,
308
- expectedBundle : true
297
+ data : [
298
+ { useLegacyWorkflow : undefined , expectedHmr : false , expectedBundle : true } ,
299
+ { useLegacyWorkflow : false , expectedHmr : true , expectedBundle : true } ,
300
+ { useLegacyWorkflow : true , expectedHmr : false , expectedBundle : true }
301
+ ]
309
302
} ,
310
303
{
311
- name : "has nsconfig.json and --hmr is provided" ,
312
- isHmrEnabledByDefault : true ,
313
- args : [ "--hmr" ] ,
314
- expectedHmr : true ,
315
- expectedBundle : true
304
+ name : " --no-bundle is provided" ,
305
+ args : [ "--no-bundle" ] ,
306
+ data : [
307
+ { useLegacyWorkflow : undefined , expectedHmr : false , expectedBundle : false } ,
308
+ { useLegacyWorkflow : false , expectedHmr : false , expectedBundle : false } ,
309
+ { useLegacyWorkflow : true , expectedHmr : false , expectedBundle : false }
310
+ ]
316
311
} ,
317
312
{
318
- name : "has nsconfig.json and --no-hmr is provided" ,
319
- isHmrEnabledByDefault : true ,
320
- args : [ "--no-hmr" ] ,
321
- expectedHmr : false ,
322
- expectedBundle : false
323
- } ,
324
- {
325
- name : "has nsconfig.json and --release is provided" ,
326
- isHmrEnabledByDefault : true ,
313
+ name : " --release is provided" ,
327
314
args : [ "--release" ] ,
328
- expectedHmr : false ,
329
- expectedBundle : true
315
+ data : [
316
+ { useLegacyWorkflow : undefined , expectedHmr : false , expectedBundle : false } ,
317
+ { useLegacyWorkflow : false , expectedHmr : false , expectedBundle : true } ,
318
+ { useLegacyWorkflow : true , expectedHmr : false , expectedBundle : false }
319
+ ]
320
+ }
321
+ ] ;
322
+
323
+ _ . each ( [ undefined , false , true ] , useLegacyWorkflow => {
324
+ _ . each ( testCases , testCase => {
325
+ it ( `should pass correctly when ${ testCase . name } and useLegacyWorkflow is ${ useLegacyWorkflow } ` , ( ) => {
326
+ ( testCase . args || [ ] ) . forEach ( arg => process . argv . push ( arg ) ) ;
327
+
328
+ const options = createOptions ( testInjector ) ;
329
+ const projectData = < IProjectData > { useLegacyWorkflow } ;
330
+ options . setupOptions ( projectData ) ;
331
+
332
+ ( testCase . args || [ ] ) . forEach ( arg => process . argv . pop ( ) ) ;
333
+
334
+ const data = testCase . data . find ( item => item . useLegacyWorkflow === useLegacyWorkflow ) ;
335
+
336
+ assert . equal ( ! ! options . argv . hmr , ! ! data . expectedHmr ) ;
337
+ assert . equal ( ! ! options . argv . bundle , ! ! data . expectedBundle ) ;
338
+ } ) ;
339
+ } ) ;
340
+ } ) ;
341
+
342
+ const testCasesExpectingToThrow = [
343
+ {
344
+ name : "--release --hmr" ,
345
+ args : [ "--release" , "--hmr" ] ,
346
+ expectedError : "The options --release and --hmr cannot be used simultaneously."
330
347
} ,
331
348
{
332
- name : "has nsconfig.json and --bundle is provided" ,
333
- isHmrEnabledByDefault : true ,
334
- args : [ "--bundle" ] ,
335
- expectedHmr : true ,
336
- expectedBundle : true
349
+ name : "--no-bundle --hmr" ,
350
+ args : [ "--no-bundle" , "--hmr" ] ,
351
+ expectedError : "The options --no-bundle and --hmr cannot be used simultaneously."
337
352
}
338
353
] ;
339
- const testCases = testsWithNoHmrByDefault . concat ( testsWithHmrByDefault ) ;
340
354
341
- _ . each ( testCases , testCase => {
342
- it ( `should pass correctly when ${ testCase . name } ` , ( ) => {
355
+ _ . each ( testCasesExpectingToThrow , testCase => {
356
+ it ( `should fail when ${ testCase . name } ` , ( ) => {
357
+ let actualError = null ;
358
+ const errors = testInjector . resolve ( "errors" ) ;
359
+ errors . failWithoutHelp = ( error : string ) => actualError = error ;
343
360
( testCase . args || [ ] ) . forEach ( arg => process . argv . push ( arg ) ) ;
344
361
345
362
const options = createOptions ( testInjector ) ;
346
- const projectData = < IProjectData > { isHmrEnabledByDefault : testCase . isHmrEnabledByDefault } ;
347
- options . setupOptions ( projectData ) ;
363
+ options . setupOptions ( null ) ;
348
364
349
365
( testCase . args || [ ] ) . forEach ( arg => process . argv . pop ( ) ) ;
350
366
351
- assert . equal ( ! ! options . argv . hmr , ! ! testCase . expectedHmr ) ;
352
- assert . equal ( ! ! options . argv . bundle , ! ! testCase . expectedBundle ) ;
367
+ assert . deepEqual ( actualError , testCase . expectedError ) ;
353
368
} ) ;
354
369
} ) ;
355
370
} ) ;
0 commit comments