blob: 947199b18223f689f3a26502f6b458eed26b8cf5 [file] [log] [blame]
mbligh2895ce52008-04-17 15:40:51 +00001#!/usr/bin/python
2
3import unittest
4
5import common
6from autotest_lib.tko.parsers import version_0
7
8
9class test_status_line(unittest.TestCase):
10 statuses = ["GOOD", "WARN", "FAIL", "ABORT"]
11
12
jadmanskif9bab602008-05-01 22:04:03 +000013 def test_handles_start(self):
mbligh2895ce52008-04-17 15:40:51 +000014 line = version_0.status_line(0, "START", "----", "test",
15 "", {})
16 self.assertEquals(line.type, "START")
17 self.assertEquals(line.status, None)
18
19
jadmanskif9bab602008-05-01 22:04:03 +000020 def test_handles_status(self):
mbligh2895ce52008-04-17 15:40:51 +000021 for stat in self.statuses:
22 line = version_0.status_line(0, stat, "----", "test",
23 "", {})
24 self.assertEquals(line.type, "STATUS")
25 self.assertEquals(line.status, stat)
26
27
jadmanskif9bab602008-05-01 22:04:03 +000028 def test_handles_endstatus(self):
mbligh2895ce52008-04-17 15:40:51 +000029 for stat in self.statuses:
30 line = version_0.status_line(0, "END " + stat, "----",
31 "test", "", {})
32 self.assertEquals(line.type, "END")
33 self.assertEquals(line.status, stat)
34
35
jadmanskif9bab602008-05-01 22:04:03 +000036 def test_fails_on_bad_status(self):
mbligh2895ce52008-04-17 15:40:51 +000037 for stat in self.statuses:
38 self.assertRaises(AssertionError,
39 version_0.status_line, 0,
40 "BAD " + stat, "----", "test",
41 "", {})
42
43
jadmanskif9bab602008-05-01 22:04:03 +000044 def test_saves_all_fields(self):
mbligh2895ce52008-04-17 15:40:51 +000045 line = version_0.status_line(5, "GOOD", "subdir_name",
46 "test_name", "my reason here",
47 {"key1": "value",
48 "key2": "another value",
49 "key3": "value3"})
50 self.assertEquals(line.indent, 5)
51 self.assertEquals(line.status, "GOOD")
52 self.assertEquals(line.subdir, "subdir_name")
53 self.assertEquals(line.testname, "test_name")
54 self.assertEquals(line.reason, "my reason here")
55 self.assertEquals(line.optional_fields,
56 {"key1": "value", "key2": "another value",
57 "key3": "value3"})
58
59
jadmanskif9bab602008-05-01 22:04:03 +000060 def test_parses_blank_subdir(self):
mbligh2895ce52008-04-17 15:40:51 +000061 line = version_0.status_line(0, "GOOD", "----", "test",
62 "", {})
63 self.assertEquals(line.subdir, None)
64
65
jadmanskif9bab602008-05-01 22:04:03 +000066 def test_parses_blank_testname(self):
mbligh2895ce52008-04-17 15:40:51 +000067 line = version_0.status_line(0, "GOOD", "subdir", "----",
68 "", {})
69 self.assertEquals(line.testname, None)
70
71
jadmanskif9bab602008-05-01 22:04:03 +000072 def test_parse_line_smoketest(self):
mbligh2895ce52008-04-17 15:40:51 +000073 input_data = ("\t\t\tGOOD\t----\t----\t"
74 "field1=val1\tfield2=val2\tTest Passed")
75 line = version_0.status_line.parse_line(input_data)
76 self.assertEquals(line.indent, 3)
77 self.assertEquals(line.type, "STATUS")
78 self.assertEquals(line.status, "GOOD")
79 self.assertEquals(line.subdir, None)
80 self.assertEquals(line.testname, None)
81 self.assertEquals(line.reason, "Test Passed")
82 self.assertEquals(line.optional_fields,
83 {"field1": "val1", "field2": "val2"})
84
jadmanskif9bab602008-05-01 22:04:03 +000085 def test_parse_line_handles_newline(self):
mbligh2895ce52008-04-17 15:40:51 +000086 input_data = ("\t\tGOOD\t----\t----\t"
87 "field1=val1\tfield2=val2\tNo newline here!")
88 for suffix in ("", "\n"):
89 line = version_0.status_line.parse_line(input_data +
90 suffix)
91 self.assertEquals(line.indent, 2)
92 self.assertEquals(line.type, "STATUS")
93 self.assertEquals(line.status, "GOOD")
94 self.assertEquals(line.subdir, None)
95 self.assertEquals(line.testname, None)
96 self.assertEquals(line.reason, "No newline here!")
97 self.assertEquals(line.optional_fields,
98 {"field1": "val1",
99 "field2": "val2"})
100
101
jadmanskif9bab602008-05-01 22:04:03 +0000102 def test_parse_line_fails_on_untabbed_lines(self):
mbligh2895ce52008-04-17 15:40:51 +0000103 input_data = " GOOD\trandom\tfields\tof text"
104 line = version_0.status_line.parse_line(input_data)
105 self.assertEquals(line, None)
106 line = version_0.status_line.parse_line(input_data.lstrip())
107 self.assertEquals(line.indent, 0)
108 self.assertEquals(line.type, "STATUS")
109 self.assertEquals(line.status, "GOOD")
110 self.assertEquals(line.subdir, "random")
111 self.assertEquals(line.testname, "fields")
112 self.assertEquals(line.reason, "of text")
113 self.assertEquals(line.optional_fields, {})
114
115
jadmanskif9bab602008-05-01 22:04:03 +0000116 def test_parse_line_fails_on_bad_optional_fields(self):
mbligh2895ce52008-04-17 15:40:51 +0000117 input_data = "GOOD\tfield1\tfield2\tfield3\tfield4"
118 self.assertRaises(AssertionError,
119 version_0.status_line.parse_line,
120 input_data)
121
122
123if __name__ == "__main__":
124 unittest.main()