Package VMBuilder :: Package tests :: Module plugin_tests
[frames] | no frames]

Source Code for Module VMBuilder.tests.plugin_tests

  1  import unittest 
  2   
  3  import VMBuilder.plugins 
  4  from   VMBuilder.exception import VMBuilderException 
  5   
6 -class TestPluginsSettings(unittest.TestCase):
7 - class VM(VMBuilder.plugins.Plugin):
8 - def __init__(self, *args, **kwargs):
9 self._config = {} 10 self.context = self
11
12 - class TestPlugin(VMBuilder.plugins.Plugin):
13 pass
14
15 - def setUp(self):
16 self.vm = self.VM() 17 self.plugin = self.TestPlugin(self.vm) 18 self.i = 0
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
38 setting_group = self.plugin.setting_group('Test Setting Group') 39 self.assertRaises(VMBuilderException, setting_group.add_setting, 'oddsetting', type='odd')
40
41 - def test_valid_options(self):
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 # print setting_name, in_value 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
115 - def test_set_setting_raises_exception_on_invalid_setting(self):
116 self.assertRaises(VMBuilderException, self.vm.set_setting_default, 'testsetting', 'newdefault')
117
118 - def test_add_setting(self):
119 setting_group = self.plugin.setting_group('Test Setting Group')
120