control_data_unittest.py revision e0493a4af57c1a73376a7bafaed542c01f588196
1#!/usr/bin/python 2 3import os, sys, unittest 4import common 5from autotest_lib.client.common_lib import control_data, autotemp 6 7ControlData = control_data.ControlData 8 9CONTROL = """ 10AUTHOR = 'Author' 11DEPENDENCIES = "console, power" 12DOC = \"\"\"\ 13doc stuff\"\"\" 14# EXPERIMENTAL should implicitly be False 15NAME = 'nA' "mE" 16RUN_VERIFY = False 17SYNC_COUNT = 2 18TIME='short' 19TEST_CLASS=u'Kernel' 20TEST_CATEGORY='Stress' 21TEST_TYPE='client' 22""" 23 24 25class 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) 30 31 32 def tearDown(self): 33 self.control_tmp.clean() 34 35 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") 49 50 51class SetMethodTests(unittest.TestCase): 52 def setUp(self): 53 self.required_vars = control_data.REQUIRED_VARS 54 control_data.REQUIRED_VARS = set() 55 56 57 def tearDown(self): 58 control_data.REQUIRED_VARS = self.required_vars 59 60 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) 75 76 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) 90 91 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'])) 102 103 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, '[]') 118 119 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) 137 138 139# this is so the test can be run in standalone mode 140if __name__ == '__main__': 141 unittest.main() 142