@@ -275,136 +275,110 @@ class TestFeature(SetupConfigs):
275
275
def test_trivial (self ):
276
276
feature = dsl .Feature (name = 'name' )
277
277
origSubstitutions = copy .deepcopy (self .config .substitutions )
278
- self .assertTrue (feature .isSupported (self .config ))
279
- feature .enableIn (self .config )
278
+ actions = feature .getActions (self .config )
279
+ self .assertTrue (len (actions ) == 1 )
280
+ for a in actions :
281
+ a .applyTo (self .config )
280
282
self .assertEqual (origSubstitutions , self .config .substitutions )
281
283
self .assertIn ('name' , self .config .available_features )
282
284
283
285
def test_name_can_be_a_callable (self ):
284
286
feature = dsl .Feature (name = lambda cfg : 'name' )
285
- assert feature .isSupported (self .config )
286
- self .assertEqual ('name' , feature .getName (self .config ))
287
- feature .enableIn (self .config )
287
+ for a in feature .getActions (self .config ):
288
+ a .applyTo (self .config )
288
289
self .assertIn ('name' , self .config .available_features )
289
290
290
291
def test_name_is_not_a_string_1 (self ):
291
292
feature = dsl .Feature (name = None )
292
- assert feature .isSupported (self .config )
293
- self .assertRaises (ValueError , lambda : feature .getName (self .config ))
294
- self .assertRaises (ValueError , lambda : feature .enableIn (self .config ))
293
+ self .assertRaises (ValueError , lambda : feature .getActions (self .config ))
294
+ self .assertRaises (ValueError , lambda : feature .pretty (self .config ))
295
295
296
296
def test_name_is_not_a_string_2 (self ):
297
297
feature = dsl .Feature (name = lambda cfg : None )
298
- assert feature .isSupported (self .config )
299
- self .assertRaises (ValueError , lambda : feature .getName (self .config ))
300
- self .assertRaises (ValueError , lambda : feature .enableIn (self .config ))
298
+ self .assertRaises (ValueError , lambda : feature .getActions (self .config ))
299
+ self .assertRaises (ValueError , lambda : feature .pretty (self .config ))
301
300
302
- def test_getName_when_unsupported (self ):
303
- feature = dsl .Feature (name = 'name' , when = lambda _ : False )
304
- assert not feature .isSupported (self .config )
305
- self .assertRaises (AssertionError , lambda : feature .getName (self .config ))
306
-
307
- def test_adding_compile_flag (self ):
308
- feature = dsl .Feature (name = 'name' , compileFlag = '-foo' )
301
+ def test_adding_action (self ):
302
+ feature = dsl .Feature (name = 'name' , actions = [dsl .AddCompileFlag ('-std=c++03' )])
309
303
origLinkFlags = copy .deepcopy (self .getSubstitution ('%{link_flags}' ))
310
- assert feature .isSupported (self .config )
311
- feature . enableIn (self .config )
304
+ for a in feature .getActions (self .config ):
305
+ a . applyTo (self .config )
312
306
self .assertIn ('name' , self .config .available_features )
313
- self .assertIn ('-foo ' , self .getSubstitution ('%{compile_flags}' ))
307
+ self .assertIn ('-std=c++03 ' , self .getSubstitution ('%{compile_flags}' ))
314
308
self .assertEqual (origLinkFlags , self .getSubstitution ('%{link_flags}' ))
315
309
316
- def test_compile_flag_can_be_a_callable (self ):
310
+ def test_actions_can_be_a_callable (self ):
317
311
feature = dsl .Feature (name = 'name' ,
318
- compileFlag = lambda cfg : (self .assertIs (self .config , cfg ), '-foo' )[1 ])
319
- assert feature .isSupported (self .config )
320
- feature .enableIn (self .config )
321
- self .assertIn ('-foo' , self .getSubstitution ('%{compile_flags}' ))
322
-
323
- def test_adding_link_flag (self ):
324
- feature = dsl .Feature (name = 'name' , linkFlag = '-foo' )
325
- origCompileFlags = copy .deepcopy (self .getSubstitution ('%{compile_flags}' ))
326
- assert feature .isSupported (self .config )
327
- feature .enableIn (self .config )
328
- self .assertIn ('name' , self .config .available_features )
329
- self .assertIn ('-foo' , self .getSubstitution ('%{link_flags}' ))
330
- self .assertEqual (origCompileFlags , self .getSubstitution ('%{compile_flags}' ))
331
-
332
- def test_link_flag_can_be_a_callable (self ):
333
- feature = dsl .Feature (name = 'name' ,
334
- linkFlag = lambda cfg : (self .assertIs (self .config , cfg ), '-foo' )[1 ])
335
- assert feature .isSupported (self .config )
336
- feature .enableIn (self .config )
337
- self .assertIn ('-foo' , self .getSubstitution ('%{link_flags}' ))
338
-
339
- def test_adding_both_flags (self ):
340
- feature = dsl .Feature (name = 'name' , compileFlag = '-hello' , linkFlag = '-world' )
341
- assert feature .isSupported (self .config )
342
- feature .enableIn (self .config )
343
- self .assertIn ('name' , self .config .available_features )
344
-
345
- self .assertIn ('-hello' , self .getSubstitution ('%{compile_flags}' ))
346
- self .assertNotIn ('-world' , self .getSubstitution ('%{compile_flags}' ))
347
-
348
- self .assertIn ('-world' , self .getSubstitution ('%{link_flags}' ))
349
- self .assertNotIn ('-hello' , self .getSubstitution ('%{link_flags}' ))
312
+ actions = lambda cfg : (
313
+ self .assertIs (self .config , cfg ),
314
+ [dsl .AddCompileFlag ('-std=c++03' )]
315
+ )[1 ])
316
+ for a in feature .getActions (self .config ):
317
+ a .applyTo (self .config )
318
+ self .assertIn ('-std=c++03' , self .getSubstitution ('%{compile_flags}' ))
350
319
351
320
def test_unsupported_feature (self ):
352
321
feature = dsl .Feature (name = 'name' , when = lambda _ : False )
353
- self .assertFalse (feature .isSupported (self .config ))
354
- # Also make sure we assert if we ever try to add it to a config
355
- self .assertRaises (AssertionError , lambda : feature .enableIn (self .config ))
322
+ self .assertEqual (feature .getActions (self .config ), [])
356
323
357
324
def test_is_supported_gets_passed_the_config (self ):
358
325
feature = dsl .Feature (name = 'name' , when = lambda cfg : (self .assertIs (self .config , cfg ), True )[1 ])
359
- self .assertTrue (feature .isSupported (self .config ))
326
+ self .assertEqual (len (feature .getActions (self .config )), 1 )
327
+
360
328
329
+ def _throw ():
330
+ raise ValueError ()
361
331
362
332
class TestParameter (SetupConfigs ):
363
333
"""
364
334
Tests for libcxx.test.dsl.Parameter
365
335
"""
366
336
def test_empty_name_should_blow_up (self ):
367
- self .assertRaises (ValueError , lambda : dsl .Parameter (name = '' , choices = ['c++03' ], type = str , help = '' , feature = lambda _ : None ))
337
+ self .assertRaises (ValueError , lambda : dsl .Parameter (name = '' , choices = ['c++03' ], type = str , help = '' , actions = lambda _ : [] ))
368
338
369
339
def test_empty_choices_should_blow_up (self ):
370
- self .assertRaises (ValueError , lambda : dsl .Parameter (name = 'std' , choices = [], type = str , help = '' , feature = lambda _ : None ))
340
+ self .assertRaises (ValueError , lambda : dsl .Parameter (name = 'std' , choices = [], type = str , help = '' , actions = lambda _ : [] ))
371
341
372
342
def test_name_is_set_correctly (self ):
373
- param = dsl .Parameter (name = 'std' , choices = ['c++03' ], type = str , help = '' , feature = lambda _ : None )
343
+ param = dsl .Parameter (name = 'std' , choices = ['c++03' ], type = str , help = '' , actions = lambda _ : [] )
374
344
self .assertEqual (param .name , 'std' )
375
345
376
346
def test_no_value_provided_and_no_default_value (self ):
377
- param = dsl .Parameter (name = 'std' , choices = ['c++03' ], type = str , help = '' , feature = lambda _ : None )
378
- self .assertRaises (ValueError , lambda : param .getFeature (self .config , self .litConfig .params ))
347
+ param = dsl .Parameter (name = 'std' , choices = ['c++03' ], type = str , help = '' , actions = lambda _ : [] )
348
+ self .assertRaises (ValueError , lambda : param .getActions (self .config , self .litConfig .params ))
379
349
380
350
def test_no_value_provided_and_default_value (self ):
381
351
param = dsl .Parameter (name = 'std' , choices = ['c++03' ], type = str , help = '' , default = 'c++03' ,
382
- feature = lambda std : dsl .Feature (name = std ))
383
- param .getFeature (self .config , self .litConfig .params ).enableIn (self .config )
352
+ actions = lambda std : [dsl .AddFeature (std )])
353
+ for a in param .getActions (self .config , self .litConfig .params ):
354
+ a .applyTo (self .config )
384
355
self .assertIn ('c++03' , self .config .available_features )
385
356
386
357
def test_value_provided_on_command_line_and_no_default_value (self ):
387
358
self .litConfig .params ['std' ] = 'c++03'
388
359
param = dsl .Parameter (name = 'std' , choices = ['c++03' ], type = str , help = '' ,
389
- feature = lambda std : dsl .Feature (name = std ))
390
- param .getFeature (self .config , self .litConfig .params ).enableIn (self .config )
360
+ actions = lambda std : [dsl .AddFeature (std )])
361
+ for a in param .getActions (self .config , self .litConfig .params ):
362
+ a .applyTo (self .config )
391
363
self .assertIn ('c++03' , self .config .available_features )
392
364
393
365
def test_value_provided_on_command_line_and_default_value (self ):
394
366
"""The value provided on the command line should override the default value"""
395
367
self .litConfig .params ['std' ] = 'c++11'
396
368
param = dsl .Parameter (name = 'std' , choices = ['c++03' , 'c++11' ], type = str , default = 'c++03' , help = '' ,
397
- feature = lambda std : dsl .Feature (name = std ))
398
- param .getFeature (self .config , self .litConfig .params ).enableIn (self .config )
369
+ actions = lambda std : [dsl .AddFeature (std )])
370
+ for a in param .getActions (self .config , self .litConfig .params ):
371
+ a .applyTo (self .config )
399
372
self .assertIn ('c++11' , self .config .available_features )
400
373
self .assertNotIn ('c++03' , self .config .available_features )
401
374
402
375
def test_value_provided_in_config_and_default_value (self ):
403
376
"""The value provided in the config should override the default value"""
404
377
self .config .std = 'c++11'
405
378
param = dsl .Parameter (name = 'std' , choices = ['c++03' , 'c++11' ], type = str , default = 'c++03' , help = '' ,
406
- feature = lambda std : dsl .Feature (name = std ))
407
- param .getFeature (self .config , self .litConfig .params ).enableIn (self .config )
379
+ actions = lambda std : [dsl .AddFeature (std )])
380
+ for a in param .getActions (self .config , self .litConfig .params ):
381
+ a .applyTo (self .config )
408
382
self .assertIn ('c++11' , self .config .available_features )
409
383
self .assertNotIn ('c++03' , self .config .available_features )
410
384
@@ -413,42 +387,45 @@ def test_value_provided_in_config_and_on_command_line(self):
413
387
self .config .std = 'c++11'
414
388
self .litConfig .params ['std' ] = 'c++03'
415
389
param = dsl .Parameter (name = 'std' , choices = ['c++03' , 'c++11' ], type = str , help = '' ,
416
- feature = lambda std : dsl .Feature (name = std ))
417
- param .getFeature (self .config , self .litConfig .params ).enableIn (self .config )
390
+ actions = lambda std : [dsl .AddFeature (std )])
391
+ for a in param .getActions (self .config , self .litConfig .params ):
392
+ a .applyTo (self .config )
418
393
self .assertIn ('c++03' , self .config .available_features )
419
394
self .assertNotIn ('c++11' , self .config .available_features )
420
395
421
- def test_feature_is_None (self ):
396
+ def test_no_actions (self ):
422
397
self .litConfig .params ['std' ] = 'c++03'
423
398
param = dsl .Parameter (name = 'std' , choices = ['c++03' ], type = str , help = '' ,
424
- feature = lambda _ : None )
425
- feature = param .getFeature (self .config , self .litConfig .params )
426
- self .assertIsNone ( feature )
399
+ actions = lambda _ : [] )
400
+ actions = param .getActions (self .config , self .litConfig .params )
401
+ self .assertEqual ( actions , [] )
427
402
428
403
def test_boolean_value_parsed_from_trueish_string_parameter (self ):
429
404
self .litConfig .params ['enable_exceptions' ] = "True"
430
405
param = dsl .Parameter (name = 'enable_exceptions' , choices = [True , False ], type = bool , help = '' ,
431
- feature = lambda exceptions : None if exceptions else ValueError ())
432
- self .assertIsNone (param .getFeature (self .config , self .litConfig .params ))
406
+ actions = lambda exceptions : [] if exceptions else _throw ())
407
+ self .assertEqual (param .getActions (self .config , self .litConfig .params ), [] )
433
408
434
409
def test_boolean_value_from_true_boolean_parameter (self ):
435
410
self .litConfig .params ['enable_exceptions' ] = True
436
411
param = dsl .Parameter (name = 'enable_exceptions' , choices = [True , False ], type = bool , help = '' ,
437
- feature = lambda exceptions : None if exceptions else ValueError ())
438
- self .assertIsNone (param .getFeature (self .config , self .litConfig .params ))
412
+ actions = lambda exceptions : [] if exceptions else _throw ())
413
+ self .assertEqual (param .getActions (self .config , self .litConfig .params ), [] )
439
414
440
415
def test_boolean_value_parsed_from_falseish_string_parameter (self ):
441
416
self .litConfig .params ['enable_exceptions' ] = "False"
442
417
param = dsl .Parameter (name = 'enable_exceptions' , choices = [True , False ], type = bool , help = '' ,
443
- feature = lambda exceptions : None if exceptions else dsl .Feature (name = "-fno-exceptions" ))
444
- param .getFeature (self .config , self .litConfig .params ).enableIn (self .config )
418
+ actions = lambda exceptions : [] if exceptions else [dsl .AddFeature ("-fno-exceptions" )])
419
+ for a in param .getActions (self .config , self .litConfig .params ):
420
+ a .applyTo (self .config )
445
421
self .assertIn ('-fno-exceptions' , self .config .available_features )
446
422
447
423
def test_boolean_value_from_false_boolean_parameter (self ):
448
424
self .litConfig .params ['enable_exceptions' ] = False
449
425
param = dsl .Parameter (name = 'enable_exceptions' , choices = [True , False ], type = bool , help = '' ,
450
- feature = lambda exceptions : None if exceptions else dsl .Feature (name = "-fno-exceptions" ))
451
- param .getFeature (self .config , self .litConfig .params ).enableIn (self .config )
426
+ actions = lambda exceptions : [] if exceptions else [dsl .AddFeature ("-fno-exceptions" )])
427
+ for a in param .getActions (self .config , self .litConfig .params ):
428
+ a .applyTo (self .config )
452
429
self .assertIn ('-fno-exceptions' , self .config .available_features )
453
430
454
431
0 commit comments