comparison tests/unit.py @ 102:c530f6265deb

allow extensible configuration; also start using deepcopy heavily since otherwise you have artefacts
author Jeff Hammel <jhammel@mozilla.com>
date Tue, 01 May 2012 10:33:37 -0700
parents 0804a706d6bf
children a2184db43fe2
comparison
equal deleted inserted replaced
101:f4590492cb4c 102:c530f6265deb
57 self.assertFalse(os.path.exists(filename)) 57 self.assertFalse(os.path.exists(filename))
58 config = {'browser_path': '/home/jhammel/bin/firefox', 58 config = {'browser_path': '/home/jhammel/bin/firefox',
59 'activeTests': ['ts']} 59 'activeTests': ['ts']}
60 example(config) 60 example(config)
61 config['test_timeout'] = 1200 # default 61 config['test_timeout'] = 1200 # default
62 config['preferences'] = {"browser.bookmarks.max_backups": 0,
63 "browser.cache.disk.smart_size.enabled": False}
64
65 # ensure they are equal
62 self.assertEqual(config, example.config) 66 self.assertEqual(config, example.config)
63 example.serialize(filename) 67 example.serialize(filename)
64 self.assertTrue(os.path.exists(filename)) 68 self.assertTrue(os.path.exists(filename))
65 serialized = json.loads(file(filename).read()) 69 serialized = json.loads(file(filename).read())
66 self.assertEqual(serialized, config) 70 self.assertEqual(serialized, config)
99 example() 103 example()
100 except configuration.MissingValueException, e: 104 except configuration.MissingValueException, e:
101 missingvalueexception = e 105 missingvalueexception = e
102 self.assertTrue(isinstance(e, configuration.MissingValueException)) 106 self.assertTrue(isinstance(e, configuration.MissingValueException))
103 107
108
104 def test_multiple_configurations(self): 109 def test_multiple_configurations(self):
105 """test having multiple configurations""" 110 """test having multiple configurations"""
106 111
107 # simple override 112 # simple override
108 args1 = ['-e', '/opt/bin/firefox'] 113 args1 = ['-e', '/opt/bin/firefox']
139 # but we can override it back from the "command line" 144 # but we can override it back from the "command line"
140 example.parse_args(args1 + [json_file, '--test_timeout', '1200']) 145 example.parse_args(args1 + [json_file, '--test_timeout', '1200'])
141 config['test_timeout'] = 1200 146 config['test_timeout'] = 1200
142 self.assertEqual(example.config, config) 147 self.assertEqual(example.config, config)
143 148
149 def test_extend(self):
150
151 # default preferences
152 example = ExampleConfiguration()
153 default_prefs = {"browser.bookmarks.max_backups": 0,
154 "browser.cache.disk.smart_size.enabled": False}
155 example.parse_args(['-a', 'ts', '-e', '/opt/bin/firefox'])
156 self.assertEqual(example.config['preferences'], default_prefs)
157
158 # now extend them
159 example = ExampleConfiguration()
160 default_prefs['network.dns.ipv4OnlyDomains'] = 'localhost'
161 tf = tempfile.mktemp()
162 f = file(tf, 'w')
163 f.write(json.dumps({'preferences': {'network.dns.ipv4OnlyDomains': 'localhost'}}))
164 f.close()
165 example.parse_args(['-a', 'ts', '-e', '/opt/bin/firefox', tf])
166 self.assertEqual(example.config['preferences'], default_prefs)
167 os.remove(tf)
168
144 if __name__ == '__main__': 169 if __name__ == '__main__':
145 unittest.main() 170 unittest.main()