annotate tests/unit.py @ 36:d218df4d0b4c

add test for missing values
author Jeff Hammel <jhammel@mozilla.com>
date Tue, 27 Mar 2012 09:40:15 -0700
parents 79aca36abd9a
children a1f8dec4d4f9
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
cadc9514f60a we have a legitimately failing test!
Jeff Hammel <jhammel@mozilla.com>
parents: 11
diff changeset
31 options, args = example.parse(['-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
28
c516ab813079 begin stubbing serialization/deserialization
Jeff Hammel <jhammel@mozilla.com>
parents: 25
diff changeset
44 def test_configuration_providers(self):
c516ab813079 begin stubbing serialization/deserialization
Jeff Hammel <jhammel@mozilla.com>
parents: 25
diff changeset
45 """test file-based configuration providers"""
30
b27a7cb2dd5b stub test for configuration providers
Jeff Hammel <jhammel@mozilla.com>
parents: 28
diff changeset
46 # require json/simplejson and pyyaml to be installed
b27a7cb2dd5b stub test for configuration providers
Jeff Hammel <jhammel@mozilla.com>
parents: 28
diff changeset
47
b27a7cb2dd5b stub test for configuration providers
Jeff Hammel <jhammel@mozilla.com>
parents: 28
diff changeset
48 example = ExampleConfiguration()
b27a7cb2dd5b stub test for configuration providers
Jeff Hammel <jhammel@mozilla.com>
parents: 28
diff changeset
49
b27a7cb2dd5b stub test for configuration providers
Jeff Hammel <jhammel@mozilla.com>
parents: 28
diff changeset
50 # see what providers you got
b27a7cb2dd5b stub test for configuration providers
Jeff Hammel <jhammel@mozilla.com>
parents: 28
diff changeset
51 json_provider = example.configuration_provider('json')
b27a7cb2dd5b stub test for configuration providers
Jeff Hammel <jhammel@mozilla.com>
parents: 28
diff changeset
52 self.assertTrue(isinstance(json_provider, configuration.JSON))
28
c516ab813079 begin stubbing serialization/deserialization
Jeff Hammel <jhammel@mozilla.com>
parents: 25
diff changeset
53
33
b7d6a90b0bb5 setup for serialization testing
Jeff Hammel <jhammel@mozilla.com>
parents: 32
diff changeset
54 # serialize to a temporary file
b7d6a90b0bb5 setup for serialization testing
Jeff Hammel <jhammel@mozilla.com>
parents: 32
diff changeset
55 filename = tempfile.mktemp()
34
79aca36abd9a fill in defaults if not present
Jeff Hammel <jhammel@mozilla.com>
parents: 33
diff changeset
56 config = {'browser_path': '/home/jhammel/bin/firefox',
79aca36abd9a fill in defaults if not present
Jeff Hammel <jhammel@mozilla.com>
parents: 33
diff changeset
57 'activeTests': ['ts']}
79aca36abd9a fill in defaults if not present
Jeff Hammel <jhammel@mozilla.com>
parents: 33
diff changeset
58 example(config)
79aca36abd9a fill in defaults if not present
Jeff Hammel <jhammel@mozilla.com>
parents: 33
diff changeset
59 config['test_timeout'] = 1200 # default
79aca36abd9a fill in defaults if not present
Jeff Hammel <jhammel@mozilla.com>
parents: 33
diff changeset
60 self.assertEqual(config, example.config)
33
b7d6a90b0bb5 setup for serialization testing
Jeff Hammel <jhammel@mozilla.com>
parents: 32
diff changeset
61 if os.path.exists(filename):
b7d6a90b0bb5 setup for serialization testing
Jeff Hammel <jhammel@mozilla.com>
parents: 32
diff changeset
62 os.remove(filename)
b7d6a90b0bb5 setup for serialization testing
Jeff Hammel <jhammel@mozilla.com>
parents: 32
diff changeset
63
36
d218df4d0b4c add test for missing values
Jeff Hammel <jhammel@mozilla.com>
parents: 34
diff changeset
64 def test_required(self):
d218df4d0b4c add test for missing values
Jeff Hammel <jhammel@mozilla.com>
parents: 34
diff changeset
65 """ensure you have to have required values"""
d218df4d0b4c add test for missing values
Jeff Hammel <jhammel@mozilla.com>
parents: 34
diff changeset
66
d218df4d0b4c add test for missing values
Jeff Hammel <jhammel@mozilla.com>
parents: 34
diff changeset
67 example = ExampleConfiguration()
d218df4d0b4c add test for missing values
Jeff Hammel <jhammel@mozilla.com>
parents: 34
diff changeset
68
d218df4d0b4c add test for missing values
Jeff Hammel <jhammel@mozilla.com>
parents: 34
diff changeset
69 # ensure you get an exception
d218df4d0b4c add test for missing values
Jeff Hammel <jhammel@mozilla.com>
parents: 34
diff changeset
70 missingvalueexception = None
d218df4d0b4c add test for missing values
Jeff Hammel <jhammel@mozilla.com>
parents: 34
diff changeset
71 try:
d218df4d0b4c add test for missing values
Jeff Hammel <jhammel@mozilla.com>
parents: 34
diff changeset
72 example()
d218df4d0b4c add test for missing values
Jeff Hammel <jhammel@mozilla.com>
parents: 34
diff changeset
73 except configuration.MissingValueException, e:
d218df4d0b4c add test for missing values
Jeff Hammel <jhammel@mozilla.com>
parents: 34
diff changeset
74 missingvalueexception = e
d218df4d0b4c add test for missing values
Jeff Hammel <jhammel@mozilla.com>
parents: 34
diff changeset
75 self.assertTrue(isinstance(e, configuration.MissingValueException))
d218df4d0b4c add test for missing values
Jeff Hammel <jhammel@mozilla.com>
parents: 34
diff changeset
76
0
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
77 if __name__ == '__main__':
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
78 unittest.main()
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
79