import autopath from py.test import raises from tiramisu.config import * from tiramisu.option import * def make_description(): gcoption = ChoiceOption('name', 'GC name', ['ref', 'framework'], 'ref') gcdummy = BoolOption('dummy', 'dummy', callback="toto") objspaceoption = ChoiceOption('objspace', 'Object space', ['std', 'thunk'], 'std') booloption = BoolOption('bool', 'Test boolean option', default=True) intoption = IntOption('int', 'Test int option', default=0) floatoption = FloatOption('float', 'Test float option', default=2.3) stroption = StrOption('str', 'Test string option', default="abc") boolop = BoolOption('boolop', 'Test boolean option op', default=True) wantref_option = BoolOption('wantref', 'Test requires', default=False, requires=['boolop']) wantframework_option = BoolOption('wantframework', 'Test requires', default=False, requires=['boolop']) gcgroup = OptionDescription('gc', '', [gcoption, gcdummy, floatoption]) descr = OptionDescription('constraints', '', [gcgroup, booloption, objspaceoption, wantref_option, stroption, wantframework_option, intoption, boolop]) return descr def make_description2(): gcoption = ChoiceOption('name', 'GC name', ['ref', 'framework'], 'ref') gcdummy = BoolOption('dummy', 'dummy', default=False) objspaceoption = ChoiceOption('objspace', 'Object space', ['std', 'thunk'], 'std') booloption = BoolOption('bool', 'Test boolean option', default=True) intoption = IntOption('int', 'Test int option', default=0) floatoption = FloatOption('float', 'Test float option', default=2.3) stroption = StrOption('str', 'Test string option', default="abc") boolop = BoolOption('boolop', 'Test boolean option op', default=True) wantref_option = BoolOption('wantref', 'Test requires', default=False, requires=['boolop']) wantframework_option = BoolOption('wantframework', 'Test requires', default=False, requires=['boolop']) gcgroup = OptionDescription('gc', '', [gcoption, gcdummy, floatoption]) descr = OptionDescription('constraints', '', [gcgroup, booloption, objspaceoption, wantref_option, stroption, wantframework_option, intoption, boolop]) return descr def test_override_are_default_owner(): "config.override() implies that the owner is 'default' again" descr = make_description2() config = Config(descr, bool=False) # default assert config.gc._cfgimpl_value_owners['dummy'] == 'default' # user config.gc.dummy = True assert config.gc._cfgimpl_value_owners['dummy'] == 'user' assert config._cfgimpl_values['gc']._cfgimpl_value_owners['dummy'] == 'user' #Options have an available default setting and can give it back assert config._cfgimpl_descr._children[0]._children[1].getdefault() == False config.override({'gc.dummy':True}) assert config.gc._cfgimpl_value_owners['dummy'] == 'default' # user again config.gc.dummy = False assert config.gc._cfgimpl_value_owners['dummy'] == 'user' def test_has_callback(): descr = make_description() # here the owner is 'default' config = Config(descr, bool=False) # because dummy has a callback raises(ConflictConfigError, "config.gc.dummy = True") #____________________________________________________________ def test_has_callback_with_setoption(): descr = make_description() config = Config(descr, bool=False) raises(ConflictConfigError, "config.gc.setoption('dummy', True, 'gen_config')") def test_cannot_override_special_owners(): descr = make_description() config = Config(descr, bool=False) raises(ConflictConfigError, "config.override({'gc.dummy': True})")