annotate tests/unit.py @ 108:a2184db43fe2

fix dict command line processing
author Jeff Hammel <jhammel@mozilla.com>
date Thu, 03 May 2012 15:46:13 -0700
parents c530f6265deb
children 56db0b2b90af
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
1 #!/usr/bin/env python
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
2
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
3 """
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
4 unit tests
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
5 """
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
6
30
b27a7cb2dd5b stub test for configuration providers
Jeff Hammel <jhammel@mozilla.com>
parents: 28
diff changeset
7 import configuration
0
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
8 import os
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
9 import sys
32
da4d5c5831c6 serialization testing stubbing
Jeff Hammel <jhammel@mozilla.com>
parents: 30
diff changeset
10 import tempfile
0
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
11 import unittest
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
12
32
da4d5c5831c6 serialization testing stubbing
Jeff Hammel <jhammel@mozilla.com>
parents: 30
diff changeset
13 try:
da4d5c5831c6 serialization testing stubbing
Jeff Hammel <jhammel@mozilla.com>
parents: 30
diff changeset
14 import json
da4d5c5831c6 serialization testing stubbing
Jeff Hammel <jhammel@mozilla.com>
parents: 30
diff changeset
15 except ImportError:
da4d5c5831c6 serialization testing stubbing
Jeff Hammel <jhammel@mozilla.com>
parents: 30
diff changeset
16 import simplejson as json
da4d5c5831c6 serialization testing stubbing
Jeff Hammel <jhammel@mozilla.com>
parents: 30
diff changeset
17
19
cadc9514f60a we have a legitimately failing test!
Jeff Hammel <jhammel@mozilla.com>
parents: 11
diff changeset
18 from example import ExampleConfiguration # example configuration to test
11
e00afe2c83bf stubbing configuration parser
Jeff Hammel <jhammel@mozilla.com>
parents: 0
diff changeset
19
0
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
20 # globals
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
21 here = os.path.dirname(os.path.abspath(__file__))
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
22
24
39f2611db9be rename a bunch of things and begin to work on the sanity of validation
Jeff Hammel <jhammel@mozilla.com>
parents: 19
diff changeset
23 class ConfigurationUnitTest(unittest.TestCase):
0
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
24
24
39f2611db9be rename a bunch of things and begin to work on the sanity of validation
Jeff Hammel <jhammel@mozilla.com>
parents: 19
diff changeset
25 def test_cli(self):
28
c516ab813079 begin stubbing serialization/deserialization
Jeff Hammel <jhammel@mozilla.com>
parents: 25
diff changeset
26 """test command line interface"""
c516ab813079 begin stubbing serialization/deserialization
Jeff Hammel <jhammel@mozilla.com>
parents: 25
diff changeset
27
19
cadc9514f60a we have a legitimately failing test!
Jeff Hammel <jhammel@mozilla.com>
parents: 11
diff changeset
28 example = ExampleConfiguration()
cadc9514f60a we have a legitimately failing test!
Jeff Hammel <jhammel@mozilla.com>
parents: 11
diff changeset
29
cadc9514f60a we have a legitimately failing test!
Jeff Hammel <jhammel@mozilla.com>
parents: 11
diff changeset
30 # parse command line arguments
65
2a2e9aee5bc6 refactor completed and tests pass again
Jeff Hammel <jhammel@mozilla.com>
parents: 58
diff changeset
31 options, args = example.parse_args(['-a', 'ts', '--develop', '-e', '/home/jhammel/bin/firefox'])
25
b39e550402ea we now update configuration correctly
Jeff Hammel <jhammel@mozilla.com>
parents: 24
diff changeset
32
b39e550402ea we now update configuration correctly
Jeff Hammel <jhammel@mozilla.com>
parents: 24
diff changeset
33 # ensure that the options appropriately get set
19
cadc9514f60a we have a legitimately failing test!
Jeff Hammel <jhammel@mozilla.com>
parents: 11
diff changeset
34 self.assertEqual(bool(args), False) # no arguments
cadc9514f60a we have a legitimately failing test!
Jeff Hammel <jhammel@mozilla.com>
parents: 11
diff changeset
35 self.assertEqual(options.develop, True)
25
b39e550402ea we now update configuration correctly
Jeff Hammel <jhammel@mozilla.com>
parents: 24
diff changeset
36 self.assertEqual(options.activeTests, ['ts'])
b39e550402ea we now update configuration correctly
Jeff Hammel <jhammel@mozilla.com>
parents: 24
diff changeset
37 self.assertEqual(options.browser_path, '/home/jhammel/bin/firefox')
b39e550402ea we now update configuration correctly
Jeff Hammel <jhammel@mozilla.com>
parents: 24
diff changeset
38
b39e550402ea we now update configuration correctly
Jeff Hammel <jhammel@mozilla.com>
parents: 24
diff changeset
39 # ensure that the configuration appropriately gets updated
b39e550402ea we now update configuration correctly
Jeff Hammel <jhammel@mozilla.com>
parents: 24
diff changeset
40 self.assertEqual(example.config['develop'], True)
b39e550402ea we now update configuration correctly
Jeff Hammel <jhammel@mozilla.com>
parents: 24
diff changeset
41 self.assertEqual(example.config['activeTests'], ['ts'])
b39e550402ea we now update configuration correctly
Jeff Hammel <jhammel@mozilla.com>
parents: 24
diff changeset
42 self.assertEqual(example.config['browser_path'], '/home/jhammel/bin/firefox')
0
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
43
108
a2184db43fe2 fix dict command line processing
Jeff Hammel <jhammel@mozilla.com>
parents: 102
diff changeset
44 def test_dict(self):
a2184db43fe2 fix dict command line processing
Jeff Hammel <jhammel@mozilla.com>
parents: 102
diff changeset
45 """test dictionary parsing from the "command line" """
a2184db43fe2 fix dict command line processing
Jeff Hammel <jhammel@mozilla.com>
parents: 102
diff changeset
46
a2184db43fe2 fix dict command line processing
Jeff Hammel <jhammel@mozilla.com>
parents: 102
diff changeset
47
a2184db43fe2 fix dict command line processing
Jeff Hammel <jhammel@mozilla.com>
parents: 102
diff changeset
48 # test adding a preference
a2184db43fe2 fix dict command line processing
Jeff Hammel <jhammel@mozilla.com>
parents: 102
diff changeset
49 example = ExampleConfiguration()
a2184db43fe2 fix dict command line processing
Jeff Hammel <jhammel@mozilla.com>
parents: 102
diff changeset
50 options, args = example.parse_args(['-a', 'ts', '--develop', '-e', '/home/jhammel/bin/firefox',
a2184db43fe2 fix dict command line processing
Jeff Hammel <jhammel@mozilla.com>
parents: 102
diff changeset
51 '--pref', 'hangmonitor.timeout=0'])
a2184db43fe2 fix dict command line processing
Jeff Hammel <jhammel@mozilla.com>
parents: 102
diff changeset
52 self.assertTrue('hangmonitor.timeout' in options.preferences)
a2184db43fe2 fix dict command line processing
Jeff Hammel <jhammel@mozilla.com>
parents: 102
diff changeset
53
a2184db43fe2 fix dict command line processing
Jeff Hammel <jhammel@mozilla.com>
parents: 102
diff changeset
54 # test overriding a preference
a2184db43fe2 fix dict command line processing
Jeff Hammel <jhammel@mozilla.com>
parents: 102
diff changeset
55 example = ExampleConfiguration()
a2184db43fe2 fix dict command line processing
Jeff Hammel <jhammel@mozilla.com>
parents: 102
diff changeset
56 options, args = example.parse_args(['-a', 'ts', '--develop', '-e', '/home/jhammel/bin/firefox',
a2184db43fe2 fix dict command line processing
Jeff Hammel <jhammel@mozilla.com>
parents: 102
diff changeset
57 '--pref', 'browser.bookmarks.max_backups=1'])
a2184db43fe2 fix dict command line processing
Jeff Hammel <jhammel@mozilla.com>
parents: 102
diff changeset
58 self.assertTrue(options.preferences['browser.bookmarks.max_backups'] == '1')
a2184db43fe2 fix dict command line processing
Jeff Hammel <jhammel@mozilla.com>
parents: 102
diff changeset
59
a2184db43fe2 fix dict command line processing
Jeff Hammel <jhammel@mozilla.com>
parents: 102
diff changeset
60
a2184db43fe2 fix dict command line processing
Jeff Hammel <jhammel@mozilla.com>
parents: 102
diff changeset
61
28
c516ab813079 begin stubbing serialization/deserialization
Jeff Hammel <jhammel@mozilla.com>
parents: 25
diff changeset
62 def test_configuration_providers(self):
c516ab813079 begin stubbing serialization/deserialization
Jeff Hammel <jhammel@mozilla.com>
parents: 25
diff changeset
63 """test file-based configuration providers"""
39
3c91bf85adb5 actually test serialization
Jeff Hammel <jhammel@mozilla.com>
parents: 38
diff changeset
64 # requires json/simplejson to be installed
30
b27a7cb2dd5b stub test for configuration providers
Jeff Hammel <jhammel@mozilla.com>
parents: 28
diff changeset
65
b27a7cb2dd5b stub test for configuration providers
Jeff Hammel <jhammel@mozilla.com>
parents: 28
diff changeset
66 example = ExampleConfiguration()
b27a7cb2dd5b stub test for configuration providers
Jeff Hammel <jhammel@mozilla.com>
parents: 28
diff changeset
67
b27a7cb2dd5b stub test for configuration providers
Jeff Hammel <jhammel@mozilla.com>
parents: 28
diff changeset
68 # see what providers you got
b27a7cb2dd5b stub test for configuration providers
Jeff Hammel <jhammel@mozilla.com>
parents: 28
diff changeset
69 json_provider = example.configuration_provider('json')
b27a7cb2dd5b stub test for configuration providers
Jeff Hammel <jhammel@mozilla.com>
parents: 28
diff changeset
70 self.assertTrue(isinstance(json_provider, configuration.JSON))
28
c516ab813079 begin stubbing serialization/deserialization
Jeff Hammel <jhammel@mozilla.com>
parents: 25
diff changeset
71
33
b7d6a90b0bb5 setup for serialization testing
Jeff Hammel <jhammel@mozilla.com>
parents: 32
diff changeset
72 # serialize to a temporary file
37
a1f8dec4d4f9 we has another broken test
Jeff Hammel <jhammel@mozilla.com>
parents: 36
diff changeset
73 filename = tempfile.mktemp(suffix='.json')
38
8909ae1cc4ea fix serialization (stub) tests
Jeff Hammel <jhammel@mozilla.com>
parents: 37
diff changeset
74 self.assertEqual(example.filename2format(filename), 'json')
37
a1f8dec4d4f9 we has another broken test
Jeff Hammel <jhammel@mozilla.com>
parents: 36
diff changeset
75 self.assertFalse(os.path.exists(filename))
34
79aca36abd9a fill in defaults if not present
Jeff Hammel <jhammel@mozilla.com>
parents: 33
diff changeset
76 config = {'browser_path': '/home/jhammel/bin/firefox',
79aca36abd9a fill in defaults if not present
Jeff Hammel <jhammel@mozilla.com>
parents: 33
diff changeset
77 'activeTests': ['ts']}
79aca36abd9a fill in defaults if not present
Jeff Hammel <jhammel@mozilla.com>
parents: 33
diff changeset
78 example(config)
79aca36abd9a fill in defaults if not present
Jeff Hammel <jhammel@mozilla.com>
parents: 33
diff changeset
79 config['test_timeout'] = 1200 # default
102
c530f6265deb allow extensible configuration; also start using deepcopy heavily since otherwise you have artefacts
Jeff Hammel <jhammel@mozilla.com>
parents: 89
diff changeset
80 config['preferences'] = {"browser.bookmarks.max_backups": 0,
c530f6265deb allow extensible configuration; also start using deepcopy heavily since otherwise you have artefacts
Jeff Hammel <jhammel@mozilla.com>
parents: 89
diff changeset
81 "browser.cache.disk.smart_size.enabled": False}
c530f6265deb allow extensible configuration; also start using deepcopy heavily since otherwise you have artefacts
Jeff Hammel <jhammel@mozilla.com>
parents: 89
diff changeset
82
c530f6265deb allow extensible configuration; also start using deepcopy heavily since otherwise you have artefacts
Jeff Hammel <jhammel@mozilla.com>
parents: 89
diff changeset
83 # ensure they are equal
34
79aca36abd9a fill in defaults if not present
Jeff Hammel <jhammel@mozilla.com>
parents: 33
diff changeset
84 self.assertEqual(config, example.config)
37
a1f8dec4d4f9 we has another broken test
Jeff Hammel <jhammel@mozilla.com>
parents: 36
diff changeset
85 example.serialize(filename)
a1f8dec4d4f9 we has another broken test
Jeff Hammel <jhammel@mozilla.com>
parents: 36
diff changeset
86 self.assertTrue(os.path.exists(filename))
39
3c91bf85adb5 actually test serialization
Jeff Hammel <jhammel@mozilla.com>
parents: 38
diff changeset
87 serialized = json.loads(file(filename).read())
3c91bf85adb5 actually test serialization
Jeff Hammel <jhammel@mozilla.com>
parents: 38
diff changeset
88 self.assertEqual(serialized, config)
42
75886253ee73 test deserialization
Jeff Hammel <jhammel@mozilla.com>
parents: 41
diff changeset
89
75886253ee73 test deserialization
Jeff Hammel <jhammel@mozilla.com>
parents: 41
diff changeset
90 # deserialize
75886253ee73 test deserialization
Jeff Hammel <jhammel@mozilla.com>
parents: 41
diff changeset
91 deserialized = example.deserialize(filename)
75886253ee73 test deserialization
Jeff Hammel <jhammel@mozilla.com>
parents: 41
diff changeset
92 self.assertEqual(deserialized, config)
75886253ee73 test deserialization
Jeff Hammel <jhammel@mozilla.com>
parents: 41
diff changeset
93
75886253ee73 test deserialization
Jeff Hammel <jhammel@mozilla.com>
parents: 41
diff changeset
94 # cleanup
33
b7d6a90b0bb5 setup for serialization testing
Jeff Hammel <jhammel@mozilla.com>
parents: 32
diff changeset
95 if os.path.exists(filename):
b7d6a90b0bb5 setup for serialization testing
Jeff Hammel <jhammel@mozilla.com>
parents: 32
diff changeset
96 os.remove(filename)
b7d6a90b0bb5 setup for serialization testing
Jeff Hammel <jhammel@mozilla.com>
parents: 32
diff changeset
97
48
84fb8ad5ba81 ensure that missing values raise the correct exception
Jeff Hammel <jhammel@mozilla.com>
parents: 43
diff changeset
98 def test_missing_values(self):
84fb8ad5ba81 ensure that missing values raise the correct exception
Jeff Hammel <jhammel@mozilla.com>
parents: 43
diff changeset
99 """ensure that Configuration raises a missing value exception"""
84fb8ad5ba81 ensure that missing values raise the correct exception
Jeff Hammel <jhammel@mozilla.com>
parents: 43
diff changeset
100
84fb8ad5ba81 ensure that missing values raise the correct exception
Jeff Hammel <jhammel@mozilla.com>
parents: 43
diff changeset
101 example = ExampleConfiguration()
84fb8ad5ba81 ensure that missing values raise the correct exception
Jeff Hammel <jhammel@mozilla.com>
parents: 43
diff changeset
102
89
0804a706d6bf handle CLI errors with optparse
Jeff Hammel <jhammel@mozilla.com>
parents: 65
diff changeset
103 # monkey-patch the error method from optparse.OptionParser
0804a706d6bf handle CLI errors with optparse
Jeff Hammel <jhammel@mozilla.com>
parents: 65
diff changeset
104 error_msg = []
0804a706d6bf handle CLI errors with optparse
Jeff Hammel <jhammel@mozilla.com>
parents: 65
diff changeset
105 def error(msg):
0804a706d6bf handle CLI errors with optparse
Jeff Hammel <jhammel@mozilla.com>
parents: 65
diff changeset
106 error_msg.append(msg)
0804a706d6bf handle CLI errors with optparse
Jeff Hammel <jhammel@mozilla.com>
parents: 65
diff changeset
107 example.error = error
0804a706d6bf handle CLI errors with optparse
Jeff Hammel <jhammel@mozilla.com>
parents: 65
diff changeset
108
0804a706d6bf handle CLI errors with optparse
Jeff Hammel <jhammel@mozilla.com>
parents: 65
diff changeset
109 # trigger it
0804a706d6bf handle CLI errors with optparse
Jeff Hammel <jhammel@mozilla.com>
parents: 65
diff changeset
110 example.parse_args(args=[])
0804a706d6bf handle CLI errors with optparse
Jeff Hammel <jhammel@mozilla.com>
parents: 65
diff changeset
111 self.assertEqual(error_msg, ['Parameter browser_path is required but not present'])
48
84fb8ad5ba81 ensure that missing values raise the correct exception
Jeff Hammel <jhammel@mozilla.com>
parents: 43
diff changeset
112
36
d218df4d0b4c add test for missing values
Jeff Hammel <jhammel@mozilla.com>
parents: 34
diff changeset
113 def test_required(self):
d218df4d0b4c add test for missing values
Jeff Hammel <jhammel@mozilla.com>
parents: 34
diff changeset
114 """ensure you have to have required values"""
d218df4d0b4c add test for missing values
Jeff Hammel <jhammel@mozilla.com>
parents: 34
diff changeset
115
d218df4d0b4c add test for missing values
Jeff Hammel <jhammel@mozilla.com>
parents: 34
diff changeset
116 example = ExampleConfiguration()
d218df4d0b4c add test for missing values
Jeff Hammel <jhammel@mozilla.com>
parents: 34
diff changeset
117
d218df4d0b4c add test for missing values
Jeff Hammel <jhammel@mozilla.com>
parents: 34
diff changeset
118 # ensure you get an exception
d218df4d0b4c add test for missing values
Jeff Hammel <jhammel@mozilla.com>
parents: 34
diff changeset
119 missingvalueexception = None
d218df4d0b4c add test for missing values
Jeff Hammel <jhammel@mozilla.com>
parents: 34
diff changeset
120 try:
d218df4d0b4c add test for missing values
Jeff Hammel <jhammel@mozilla.com>
parents: 34
diff changeset
121 example()
d218df4d0b4c add test for missing values
Jeff Hammel <jhammel@mozilla.com>
parents: 34
diff changeset
122 except configuration.MissingValueException, e:
d218df4d0b4c add test for missing values
Jeff Hammel <jhammel@mozilla.com>
parents: 34
diff changeset
123 missingvalueexception = e
d218df4d0b4c add test for missing values
Jeff Hammel <jhammel@mozilla.com>
parents: 34
diff changeset
124 self.assertTrue(isinstance(e, configuration.MissingValueException))
d218df4d0b4c add test for missing values
Jeff Hammel <jhammel@mozilla.com>
parents: 34
diff changeset
125
102
c530f6265deb allow extensible configuration; also start using deepcopy heavily since otherwise you have artefacts
Jeff Hammel <jhammel@mozilla.com>
parents: 89
diff changeset
126
40
056280e7a6ea stub munging configuration
Jeff Hammel <jhammel@mozilla.com>
parents: 39
diff changeset
127 def test_multiple_configurations(self):
056280e7a6ea stub munging configuration
Jeff Hammel <jhammel@mozilla.com>
parents: 39
diff changeset
128 """test having multiple configurations"""
056280e7a6ea stub munging configuration
Jeff Hammel <jhammel@mozilla.com>
parents: 39
diff changeset
129
056280e7a6ea stub munging configuration
Jeff Hammel <jhammel@mozilla.com>
parents: 39
diff changeset
130 # simple override
056280e7a6ea stub munging configuration
Jeff Hammel <jhammel@mozilla.com>
parents: 39
diff changeset
131 args1 = ['-e', '/opt/bin/firefox']
056280e7a6ea stub munging configuration
Jeff Hammel <jhammel@mozilla.com>
parents: 39
diff changeset
132
55
87bd539a21d3 test with overrides
Jeff Hammel <jhammel@mozilla.com>
parents: 49
diff changeset
133 # simple serialized file
87bd539a21d3 test with overrides
Jeff Hammel <jhammel@mozilla.com>
parents: 49
diff changeset
134 json_file = os.path.join(here, 'base.json')
87bd539a21d3 test with overrides
Jeff Hammel <jhammel@mozilla.com>
parents: 49
diff changeset
135 assert os.path.exists(json_file)
87bd539a21d3 test with overrides
Jeff Hammel <jhammel@mozilla.com>
parents: 49
diff changeset
136 json_config = json.loads(file(json_file).read())
87bd539a21d3 test with overrides
Jeff Hammel <jhammel@mozilla.com>
parents: 49
diff changeset
137
87bd539a21d3 test with overrides
Jeff Hammel <jhammel@mozilla.com>
parents: 49
diff changeset
138 # parse the json file
87bd539a21d3 test with overrides
Jeff Hammel <jhammel@mozilla.com>
parents: 49
diff changeset
139 example = ExampleConfiguration()
65
2a2e9aee5bc6 refactor completed and tests pass again
Jeff Hammel <jhammel@mozilla.com>
parents: 58
diff changeset
140 example.parse_args([json_file])
55
87bd539a21d3 test with overrides
Jeff Hammel <jhammel@mozilla.com>
parents: 49
diff changeset
141 self.assertEqual(example.config, json_config)
87bd539a21d3 test with overrides
Jeff Hammel <jhammel@mozilla.com>
parents: 49
diff changeset
142
87bd539a21d3 test with overrides
Jeff Hammel <jhammel@mozilla.com>
parents: 49
diff changeset
143 # parse the json file with overrides
87bd539a21d3 test with overrides
Jeff Hammel <jhammel@mozilla.com>
parents: 49
diff changeset
144 example = ExampleConfiguration()
65
2a2e9aee5bc6 refactor completed and tests pass again
Jeff Hammel <jhammel@mozilla.com>
parents: 58
diff changeset
145 example.parse_args([json_file] + args1)
55
87bd539a21d3 test with overrides
Jeff Hammel <jhammel@mozilla.com>
parents: 49
diff changeset
146 config = json_config.copy()
87bd539a21d3 test with overrides
Jeff Hammel <jhammel@mozilla.com>
parents: 49
diff changeset
147 config['browser_path'] = '/opt/bin/firefox'
87bd539a21d3 test with overrides
Jeff Hammel <jhammel@mozilla.com>
parents: 49
diff changeset
148 self.assertEqual(example.config, config)
43
f09982d47b3c add --dump option
Jeff Hammel <jhammel@mozilla.com>
parents: 42
diff changeset
149
56
7f8e9c5d1606 introduce a somewhat redundant test
Jeff Hammel <jhammel@mozilla.com>
parents: 55
diff changeset
150 # it shouldn't matter in which order the arguments are
7f8e9c5d1606 introduce a somewhat redundant test
Jeff Hammel <jhammel@mozilla.com>
parents: 55
diff changeset
151 example = ExampleConfiguration()
65
2a2e9aee5bc6 refactor completed and tests pass again
Jeff Hammel <jhammel@mozilla.com>
parents: 58
diff changeset
152 example.parse_args(args1 + [json_file])
56
7f8e9c5d1606 introduce a somewhat redundant test
Jeff Hammel <jhammel@mozilla.com>
parents: 55
diff changeset
153 self.assertEqual(example.config, config)
7f8e9c5d1606 introduce a somewhat redundant test
Jeff Hammel <jhammel@mozilla.com>
parents: 55
diff changeset
154
58
f7dc5cf2540c add complex test, now we can refactor
Jeff Hammel <jhammel@mozilla.com>
parents: 56
diff changeset
155 # Now a tricky case:
f7dc5cf2540c add complex test, now we can refactor
Jeff Hammel <jhammel@mozilla.com>
parents: 56
diff changeset
156 # the default value for test_timeout is 1200:
f7dc5cf2540c add complex test, now we can refactor
Jeff Hammel <jhammel@mozilla.com>
parents: 56
diff changeset
157 example = ExampleConfiguration()
f7dc5cf2540c add complex test, now we can refactor
Jeff Hammel <jhammel@mozilla.com>
parents: 56
diff changeset
158 self.assertEqual(example.options['test_timeout']['default'], 1200)
f7dc5cf2540c add complex test, now we can refactor
Jeff Hammel <jhammel@mozilla.com>
parents: 56
diff changeset
159 # The value from base.json is 60:
f7dc5cf2540c add complex test, now we can refactor
Jeff Hammel <jhammel@mozilla.com>
parents: 56
diff changeset
160 self.assertEqual(json_config['test_timeout'], 60)
f7dc5cf2540c add complex test, now we can refactor
Jeff Hammel <jhammel@mozilla.com>
parents: 56
diff changeset
161 self.assertEqual(config['test_timeout'], 60)
f7dc5cf2540c add complex test, now we can refactor
Jeff Hammel <jhammel@mozilla.com>
parents: 56
diff changeset
162 # but we can override it back from the "command line"
65
2a2e9aee5bc6 refactor completed and tests pass again
Jeff Hammel <jhammel@mozilla.com>
parents: 58
diff changeset
163 example.parse_args(args1 + [json_file, '--test_timeout', '1200'])
58
f7dc5cf2540c add complex test, now we can refactor
Jeff Hammel <jhammel@mozilla.com>
parents: 56
diff changeset
164 config['test_timeout'] = 1200
f7dc5cf2540c add complex test, now we can refactor
Jeff Hammel <jhammel@mozilla.com>
parents: 56
diff changeset
165 self.assertEqual(example.config, config)
f7dc5cf2540c add complex test, now we can refactor
Jeff Hammel <jhammel@mozilla.com>
parents: 56
diff changeset
166
102
c530f6265deb allow extensible configuration; also start using deepcopy heavily since otherwise you have artefacts
Jeff Hammel <jhammel@mozilla.com>
parents: 89
diff changeset
167 def test_extend(self):
c530f6265deb allow extensible configuration; also start using deepcopy heavily since otherwise you have artefacts
Jeff Hammel <jhammel@mozilla.com>
parents: 89
diff changeset
168
c530f6265deb allow extensible configuration; also start using deepcopy heavily since otherwise you have artefacts
Jeff Hammel <jhammel@mozilla.com>
parents: 89
diff changeset
169 # default preferences
c530f6265deb allow extensible configuration; also start using deepcopy heavily since otherwise you have artefacts
Jeff Hammel <jhammel@mozilla.com>
parents: 89
diff changeset
170 example = ExampleConfiguration()
c530f6265deb allow extensible configuration; also start using deepcopy heavily since otherwise you have artefacts
Jeff Hammel <jhammel@mozilla.com>
parents: 89
diff changeset
171 default_prefs = {"browser.bookmarks.max_backups": 0,
c530f6265deb allow extensible configuration; also start using deepcopy heavily since otherwise you have artefacts
Jeff Hammel <jhammel@mozilla.com>
parents: 89
diff changeset
172 "browser.cache.disk.smart_size.enabled": False}
c530f6265deb allow extensible configuration; also start using deepcopy heavily since otherwise you have artefacts
Jeff Hammel <jhammel@mozilla.com>
parents: 89
diff changeset
173 example.parse_args(['-a', 'ts', '-e', '/opt/bin/firefox'])
c530f6265deb allow extensible configuration; also start using deepcopy heavily since otherwise you have artefacts
Jeff Hammel <jhammel@mozilla.com>
parents: 89
diff changeset
174 self.assertEqual(example.config['preferences'], default_prefs)
c530f6265deb allow extensible configuration; also start using deepcopy heavily since otherwise you have artefacts
Jeff Hammel <jhammel@mozilla.com>
parents: 89
diff changeset
175
c530f6265deb allow extensible configuration; also start using deepcopy heavily since otherwise you have artefacts
Jeff Hammel <jhammel@mozilla.com>
parents: 89
diff changeset
176 # now extend them
c530f6265deb allow extensible configuration; also start using deepcopy heavily since otherwise you have artefacts
Jeff Hammel <jhammel@mozilla.com>
parents: 89
diff changeset
177 example = ExampleConfiguration()
c530f6265deb allow extensible configuration; also start using deepcopy heavily since otherwise you have artefacts
Jeff Hammel <jhammel@mozilla.com>
parents: 89
diff changeset
178 default_prefs['network.dns.ipv4OnlyDomains'] = 'localhost'
c530f6265deb allow extensible configuration; also start using deepcopy heavily since otherwise you have artefacts
Jeff Hammel <jhammel@mozilla.com>
parents: 89
diff changeset
179 tf = tempfile.mktemp()
c530f6265deb allow extensible configuration; also start using deepcopy heavily since otherwise you have artefacts
Jeff Hammel <jhammel@mozilla.com>
parents: 89
diff changeset
180 f = file(tf, 'w')
c530f6265deb allow extensible configuration; also start using deepcopy heavily since otherwise you have artefacts
Jeff Hammel <jhammel@mozilla.com>
parents: 89
diff changeset
181 f.write(json.dumps({'preferences': {'network.dns.ipv4OnlyDomains': 'localhost'}}))
c530f6265deb allow extensible configuration; also start using deepcopy heavily since otherwise you have artefacts
Jeff Hammel <jhammel@mozilla.com>
parents: 89
diff changeset
182 f.close()
c530f6265deb allow extensible configuration; also start using deepcopy heavily since otherwise you have artefacts
Jeff Hammel <jhammel@mozilla.com>
parents: 89
diff changeset
183 example.parse_args(['-a', 'ts', '-e', '/opt/bin/firefox', tf])
c530f6265deb allow extensible configuration; also start using deepcopy heavily since otherwise you have artefacts
Jeff Hammel <jhammel@mozilla.com>
parents: 89
diff changeset
184 self.assertEqual(example.config['preferences'], default_prefs)
c530f6265deb allow extensible configuration; also start using deepcopy heavily since otherwise you have artefacts
Jeff Hammel <jhammel@mozilla.com>
parents: 89
diff changeset
185 os.remove(tf)
c530f6265deb allow extensible configuration; also start using deepcopy heavily since otherwise you have artefacts
Jeff Hammel <jhammel@mozilla.com>
parents: 89
diff changeset
186
0
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
187 if __name__ == '__main__':
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
188 unittest.main()