1 "test all types of option default values for options, add new option in a descr"
4 from tiramisu.config import Config
5 from tiramisu.option import IntOption, FloatOption, StrOption, ChoiceOption, \
6 BoolOption, OptionDescription
9 def make_description():
10 gcoption = ChoiceOption('name', 'GC name', ['ref', 'framework'], 'ref')
11 gcdummy = BoolOption('dummy', 'dummy', default=False)
12 objspaceoption = ChoiceOption('objspace', 'Object space',
13 ['std', 'thunk'], 'std')
14 booloption = BoolOption('bool', 'Test boolean option', default=True)
15 intoption = IntOption('int', 'Test int option', default=0)
16 floatoption = FloatOption('float', 'Test float option', default=2.3)
17 stroption = StrOption('str', 'Test string option', default="abc")
18 boolop = BoolOption('boolop', 'Test boolean option op', default=True)
19 wantref_option = BoolOption('wantref', 'Test requires', default=False,
21 wantframework_option = BoolOption('wantframework', 'Test requires',
25 gcgroup = OptionDescription('gc', '', [gcoption, gcdummy, floatoption])
26 descr = OptionDescription('tiramisu', '', [gcgroup, booloption, objspaceoption,
27 wantref_option, stroption,
33 #____________________________________________________________
35 def test_default_is_none():
37 Most constructors take a ``default`` argument that specifies the default
38 value of the option. If this argument is not supplied the default value is
39 assumed to be ``None``.
41 dummy1 = BoolOption('dummy1', 'doc dummy')
42 dummy2 = BoolOption('dummy2', 'doc dummy')
43 group = OptionDescription('group', '', [dummy1, dummy2])
44 config = Config(group)
45 # so when the default value is not set, there is actually a default value
46 assert config.dummy1 is None
47 assert config.dummy2 is None
50 def test_set_defaut_value_from_option_object():
51 """Options have an available default setting and can give it back"""
52 b = BoolOption("boolean", "", default=False)
53 assert b.impl_getdefault() is False
56 def test_force_default_on_freeze():
57 "a frozen option wich is forced returns his default"
58 dummy1 = BoolOption('dummy1', 'doc dummy', default=False, properties=('force_default_on_freeze',))
59 dummy2 = BoolOption('dummy2', 'doc dummy', default=True)
60 group = OptionDescription('group', '', [dummy1, dummy2])
61 config = Config(group)
64 setting = config.cfgimpl_get_settings()
65 setting[dummy1].append('frozen')
66 setting[dummy2].append('frozen')
67 assert config.dummy1 is False
68 assert config.dummy2 is False
71 def test_overrides_changes_option_value():
72 "with config.override(), the default is changed and the value is changed"
73 descr = OptionDescription("test", "", [
74 BoolOption("b", "", default=False)])
75 config = Config(descr)
79 def test_choice_with_no_default():
80 descr = OptionDescription("test", "", [
81 ChoiceOption("backend", "", ("c", "cli"))])
82 config = Config(descr)
83 assert config.backend is None
87 def test_choice_with_default():
88 descr = OptionDescription("test", "", [
89 ChoiceOption("backend", "", ("c", "cli"), default="cli")])
90 config = Config(descr)
91 assert config.backend == "cli"