1 "test all types of option default values for options, add new option in a descr"
4 from py.test import raises
5 from tiramisu.config import *
6 from tiramisu.option import *
7 from tiramisu.error import MandatoryError
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,
32 #____________________________________________________________
34 def test_default_is_none():
36 Most constructors take a ``default`` argument that specifies the default
37 value of the option. If this argument is not supplied the default value is
38 assumed to be ``None``.
40 dummy1 = BoolOption('dummy1', 'doc dummy')
41 dummy2 = BoolOption('dummy2', 'doc dummy')
42 group = OptionDescription('group', '', [dummy1, dummy2])
43 config = Config(group)
44 # so when the default value is not set, there is actually a default value
45 assert config.dummy1 == None
46 assert config.dummy2 == None
48 def test_set_defaut_value_from_option_object():
49 """Options have an available default setting and can give it back"""
50 b = BoolOption("boolean", "", default=False)
51 assert b.getdefault() == False
54 dummy1 = BoolOption('dummy1', 'doc dummy', properties=('mandatory', ))
55 dummy2 = BoolOption('dummy2', 'doc dummy', properties=('mandatory', ))
56 group = OptionDescription('group', '', [dummy1, dummy2])
57 config = Config(group)
58 setting = config.cfgimpl_get_settings()
60 # config.setoption('dummy1', True)
61 raises(MandatoryError, 'config.dummy1')
65 assert config.dummy1 == True
66 raises(MandatoryError, 'config.dummy2 == None')
67 # raises(MandatoryError, "config.override({'dummy2':None})")
69 config.set(dummy2=True)
72 assert config.dummy2 == False
74 def test_force_default_on_freeze():
75 "a frozen option wich is forced returns his default"
76 dummy1 = BoolOption('dummy1', 'doc dummy', default=False, properties=('force_default_on_freeze',))
77 dummy2 = BoolOption('dummy2', 'doc dummy', default=True)
78 group = OptionDescription('group', '', [dummy1, dummy2])
79 config = Config(group)
82 config.cfgimpl_get_settings().add_property('frozen', dummy1)
83 config.cfgimpl_get_settings().add_property('frozen', dummy2)
84 assert config.dummy1 == False
85 assert config.dummy2 == False
87 #def test_override_are_defaults():
88 # descr = make_description()
89 # config = Config(descr)
91 # config.gc.dummy = True
92 # assert config._cfgimpl_values['gc']._cfgimpl_values.owners['dummy'] == 'user'
93 # #Options have an available default setting and can give it back
94 # assert config._cfgimpl_descr._children[0]._children[1].getdefault() == False
95 ## config.override({'gc.dummy':True})
96 # #assert config.gc.dummy == True
97 # #assert config._cfgimpl_descr._children[0]._children[1].getdefault() == True
98 # #assert config._cfgimpl_values['gc']._cfgimpl_value_owners['dummy'] == 'default'
100 def test_overrides_changes_option_value():
101 "with config.override(), the default is changed and the value is changed"
102 descr = OptionDescription("test", "", [
103 BoolOption("b", "", default=False)])
104 config = Config(descr)
106 # config.override({'b': False})
107 # assert config.b == False
108 #____________________________________________________________
109 # test various option types
110 def test_choice_with_no_default():
111 descr = OptionDescription("test", "", [
112 ChoiceOption("backend", "", ("c", "cli"))])
113 config = Config(descr)
114 assert config.backend is None
117 def test_choice_with_default():
118 descr = OptionDescription("test", "", [
119 ChoiceOption("backend", "", ("c", "cli"), default="cli")])
120 config = Config(descr)
121 assert config.backend == "cli"
123 #def test_arbitrary_option():
124 # descr = OptionDescription("top", "", [
125 # ArbitraryOption("a", "no help", default=None)
127 # config = Config(descr)
130 # assert config.a == [1]
132 # descr = OptionDescription("top", "", [
133 # ArbitraryOption("a", "no help", defaultfactory=list)