@@ -263,93 +263,108 @@ describe("options", () => {
263263 } ) ;
264264
265265 describe ( "setupOptions" , ( ) => {
266- const testsWithNoHmrByDefault = [
266+ const testCases = [
267267 {
268- name : "no nsconfig.json " ,
269- isHmrEnabledByDefault : false ,
268+ name : "no options are provided" ,
270269 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+ ]
273275 } ,
274276 {
275- name : "no nsconfig.json and --hmr is provided" ,
276- isHmrEnabledByDefault : false ,
277+ name : " --hmr is provided" ,
277278 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+ ]
280284 } ,
281285 {
282- name : "no nsconfig.json and --no-hmr is provided" ,
283- isHmrEnabledByDefault : false ,
286+ name : " --no-hmr is provided" ,
284287 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+ ]
287293 } ,
288294 {
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" ,
298296 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+ ]
309302 } ,
310303 {
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+ ]
316311 } ,
317312 {
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" ,
327314 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."
330347 } ,
331348 {
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."
337352 }
338353 ] ;
339- const testCases = testsWithNoHmrByDefault . concat ( testsWithHmrByDefault ) ;
340354
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 ;
343360 ( testCase . args || [ ] ) . forEach ( arg => process . argv . push ( arg ) ) ;
344361
345362 const options = createOptions ( testInjector ) ;
346- const projectData = < IProjectData > { isHmrEnabledByDefault : testCase . isHmrEnabledByDefault } ;
347- options . setupOptions ( projectData ) ;
363+ options . setupOptions ( null ) ;
348364
349365 ( testCase . args || [ ] ) . forEach ( arg => process . argv . pop ( ) ) ;
350366
351- assert . equal ( ! ! options . argv . hmr , ! ! testCase . expectedHmr ) ;
352- assert . equal ( ! ! options . argv . bundle , ! ! testCase . expectedBundle ) ;
367+ assert . deepEqual ( actualError , testCase . expectedError ) ;
353368 } ) ;
354369 } ) ;
355370 } ) ;
0 commit comments