virt.virt_test_utils: run_autotest - 'tar' needs relative paths to strip the leading '/'
[autotest-zwu.git] / client / common_lib / control_data_unittest.py
blobad44944f6472b37db114c36ceaacc1c5e466d981
1 #!/usr/bin/python
3 import os, sys, unittest
4 import common
5 from autotest_lib.client.common_lib import control_data, autotemp
7 ControlData = control_data.ControlData
9 CONTROL = """
10 AUTHOR = 'Author'
11 DEPENDENCIES = "console, power"
12 DOC = \"\"\"\
13 doc stuff\"\"\"
14 # EXPERIMENTAL should implicitly be False
15 NAME = 'nA' "mE"
16 RUN_VERIFY = False
17 SYNC_COUNT = 2
18 TIME='short'
19 TEST_CLASS=u'Kernel'
20 TEST_CATEGORY='Stress'
21 TEST_TYPE='client'
22 """
25 class ParseControlTest(unittest.TestCase):
26 def setUp(self):
27 self.control_tmp = autotemp.tempfile(unique_id='control_unit',
28 text=True)
29 os.write(self.control_tmp.fd, CONTROL)
32 def tearDown(self):
33 self.control_tmp.clean()
36 def test_parse_control(self):
37 cd = control_data.parse_control(self.control_tmp.name, True)
38 self.assertEquals(cd.author, "Author")
39 self.assertEquals(cd.dependencies, set(['console', 'power']))
40 self.assertEquals(cd.doc, "doc stuff")
41 self.assertEquals(cd.experimental, False)
42 self.assertEquals(cd.name, "nAmE")
43 self.assertEquals(cd.run_verify, False)
44 self.assertEquals(cd.sync_count, 2)
45 self.assertEquals(cd.time, "short")
46 self.assertEquals(cd.test_class, "kernel")
47 self.assertEquals(cd.test_category, "stress")
48 self.assertEquals(cd.test_type, "client")
51 class SetMethodTests(unittest.TestCase):
52 def setUp(self):
53 self.required_vars = control_data.REQUIRED_VARS
54 control_data.REQUIRED_VARS = set()
57 def tearDown(self):
58 control_data.REQUIRED_VARS = self.required_vars
61 def test_bool(self):
62 cd = ControlData({}, 'filename')
63 cd._set_bool('foo', 'False')
64 self.assertEquals(cd.foo, False)
65 cd._set_bool('foo', True)
66 self.assertEquals(cd.foo, True)
67 cd._set_bool('foo', 'FALSE')
68 self.assertEquals(cd.foo, False)
69 cd._set_bool('foo', 'true')
70 self.assertEquals(cd.foo, True)
71 self.assertRaises(ValueError, cd._set_bool, 'foo', '')
72 self.assertRaises(ValueError, cd._set_bool, 'foo', 1)
73 self.assertRaises(ValueError, cd._set_bool, 'foo', [])
74 self.assertRaises(ValueError, cd._set_bool, 'foo', None)
77 def test_int(self):
78 cd = ControlData({}, 'filename')
79 cd._set_int('foo', 0)
80 self.assertEquals(cd.foo, 0)
81 cd._set_int('foo', '0')
82 self.assertEquals(cd.foo, 0)
83 cd._set_int('foo', '-1', min=-2, max=10)
84 self.assertEquals(cd.foo, -1)
85 self.assertRaises(ValueError, cd._set_int, 'foo', 0, min=1)
86 self.assertRaises(ValueError, cd._set_int, 'foo', 1, max=0)
87 self.assertRaises(ValueError, cd._set_int, 'foo', 'x')
88 self.assertRaises(ValueError, cd._set_int, 'foo', '')
89 self.assertRaises(TypeError, cd._set_int, 'foo', None)
92 def test_set(self):
93 cd = ControlData({}, 'filename')
94 cd._set_set('foo', 'a')
95 self.assertEquals(cd.foo, set(['a']))
96 cd._set_set('foo', 'a,b,c')
97 self.assertEquals(cd.foo, set(['a', 'b', 'c']))
98 cd._set_set('foo', ' a , b , c ')
99 self.assertEquals(cd.foo, set(['a', 'b', 'c']))
100 cd._set_set('foo', None)
101 self.assertEquals(cd.foo, set(['None']))
104 def test_string(self):
105 cd = ControlData({}, 'filename')
106 cd._set_string('foo', 'a')
107 self.assertEquals(cd.foo, 'a')
108 cd._set_string('foo', 'b')
109 self.assertEquals(cd.foo, 'b')
110 cd._set_string('foo', 'B')
111 self.assertEquals(cd.foo, 'B')
112 cd._set_string('foo', 1)
113 self.assertEquals(cd.foo, '1')
114 cd._set_string('foo', None)
115 self.assertEquals(cd.foo, 'None')
116 cd._set_string('foo', [])
117 self.assertEquals(cd.foo, '[]')
120 def test_option(self):
121 options = ['a', 'b']
122 cd = ControlData({}, 'filename')
123 cd._set_option('foo', 'a', options)
124 self.assertEquals(cd.foo, 'a')
125 cd._set_option('foo', 'b', options)
126 self.assertEquals(cd.foo, 'b')
127 cd._set_option('foo', 'B', options)
128 self.assertEquals(cd.foo, 'B')
129 self.assertRaises(ValueError, cd._set_option,
130 'foo', 'x', options)
131 self.assertRaises(ValueError, cd._set_option,
132 'foo', 1, options)
133 self.assertRaises(ValueError, cd._set_option,
134 'foo', [], options)
135 self.assertRaises(ValueError, cd._set_option,
136 'foo', None, options)
139 # this is so the test can be run in standalone mode
140 if __name__ == '__main__':
141 unittest.main()