1 import unittest
2
3 import VMBuilder.plugins
4 from VMBuilder.exception import VMBuilderException
5
7 - class VM(VMBuilder.plugins.Plugin):
9 self._config = {}
10 self.context = self
11
14
19
21 setting_group = self.plugin.setting_group('Test Setting Group')
22 self.assertTrue(setting_group in self.plugin._setting_groups, "Setting not added correctly to plugin's registry of setting groups.")
23
24 setting_group.add_setting('testsetting')
25 self.assertEqual(self.vm.get_setting('testsetting'), None, "Setting's default value is not None.")
26
27 self.vm.set_setting_default('testsetting', 'newdefault')
28 self.assertEqual(self.vm.get_setting('testsetting'), 'newdefault', "Setting does not return custom default value when no value is set.")
29 self.assertEqual(self.vm.get_setting_default('testsetting'), 'newdefault', "Setting does not return custom default value through get_setting_default().")
30
31 self.vm.set_setting('testsetting', 'foo')
32 self.assertEqual(self.vm.get_setting('testsetting'), 'foo', "Setting does not return set value.")
33
34 self.vm.set_setting_default('testsetting', 'newerdefault')
35 self.assertEqual(self.vm.get_setting('testsetting'), 'foo', "Setting does not return set value after setting new default value.")
36
40
42 setting_group = self.plugin.setting_group('Test Setting Group')
43
44 setting_group.add_setting('strsetting')
45 self.assertRaises(VMBuilderException, self.vm.set_setting_valid_options, 'strsetting', '')
46 self.vm.set_setting_valid_options('strsetting', ['foo', 'bar'])
47 self.assertEqual(self.vm.get_setting_valid_options('strsetting'), ['foo', 'bar'])
48 self.vm.set_setting('strsetting', 'foo')
49 self.assertRaises(VMBuilderException, self.vm.set_setting, 'strsetting', 'baz')
50 self.vm.set_setting_valid_options('strsetting', None)
51 self.vm.set_setting('strsetting', 'baz')
52
54 setting_group = self.plugin.setting_group('Test Setting Group')
55
56 test_table = [{ 'type' : 'str',
57 'good' : [''],
58 'fuzzy': [''],
59 'bad' : [0, True, ['foo']]
60 },
61 { 'type' : 'int',
62 'good' : [0],
63 'fuzzy': [('0', 0), ('34', 34), (0, 0), (34, 34)],
64 'bad' : ['', '0', True, ['foo']]
65 },
66 { 'type' : 'bool',
67 'good' : [True],
68 'fuzzy': [(True, True), ('tRuE', True), ('oN', True), ('yEs', True), ('1', True),
69 (False, False), ('fAlSe', False), ('oFf', False), ('nO', False), ('0', False) ],
70 'bad' : ['', 0, '0', ['foo'], '1']
71 },
72 { 'type' : 'list',
73 'good' : [['foo']],
74 'fuzzy': [('main , universe,multiverse', ['main', 'universe', 'multiverse']),
75 ('main:universe:multiverse', ['main', 'universe', 'multiverse']),
76 ('''main:
77 universe:multiverse''', ['main', 'universe', 'multiverse']),
78 ('', [])],
79 'bad' : [True, '', 0, '0']
80 }]
81
82 def get_new_setting(setting_type):
83 setting_name = '%ssetting%d' % (setting_type, self.i)
84 self.i += 1
85 setting_group.add_setting(setting_name, type=setting_type)
86 return setting_name
87
88 def try_bad_setting(setting_type, bad, setter):
89 setting_name = get_new_setting(setting_type)
90 self.assertRaises(VMBuilderException, setter, setting_name, bad)
91
92 def try_good_setting(setting_type, good, getter, setter):
93 setting_name = get_new_setting(setting_type)
94 if type(good) == tuple:
95 in_value, out_value = good
96 else:
97 in_value, out_value = good, good
98
99
100 setter(setting_name, in_value)
101 self.assertEqual(getter(setting_name), out_value)
102
103 for setting_type in test_table:
104 for good in setting_type['good']:
105 try_good_setting(setting_type['type'], good, self.vm.get_setting, self.vm.set_setting)
106 try_good_setting(setting_type['type'], good, self.vm.get_setting, self.vm.set_setting_default)
107 try_good_setting(setting_type['type'], good, self.vm.get_setting_default, self.vm.set_setting_default)
108 try_good_setting(setting_type['type'], good, self.vm.get_setting, self.vm.set_setting_fuzzy)
109 for fuzzy in setting_type['fuzzy']:
110 try_good_setting(setting_type['type'], fuzzy, self.vm.get_setting, self.vm.set_setting_fuzzy)
111 for bad in setting_type['bad']:
112 try_bad_setting(setting_type['type'], bad, self.vm.set_setting)
113 try_bad_setting(setting_type['type'], bad, self.vm.set_setting_default)
114
117
120