blob: 6ca7df828e1f18a266ba62f9ccded37f7a72ebd0 [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):
jadmanski0afbb632008-06-06 21:10:57 +000010 statuses = ["GOOD", "WARN", "FAIL", "ABORT"]
mbligh2895ce52008-04-17 15:40:51 +000011
12
jadmanski0afbb632008-06-06 21:10:57 +000013 def test_handles_start(self):
14 line = version_0.status_line(0, "START", "----", "test",
15 "", {})
16 self.assertEquals(line.type, "START")
17 self.assertEquals(line.status, None)
mbligh2895ce52008-04-17 15:40:51 +000018
19
jadmanski807490c2008-09-15 19:15:02 +000020 def test_fails_info(self):
21 self.assertRaises(AssertionError,
22 version_0.status_line, 0, "INFO", "----", "----",
23 "", {})
24
25
jadmanski0afbb632008-06-06 21:10:57 +000026 def test_handles_status(self):
27 for stat in self.statuses:
28 line = version_0.status_line(0, stat, "----", "test",
29 "", {})
30 self.assertEquals(line.type, "STATUS")
31 self.assertEquals(line.status, stat)
mbligh2895ce52008-04-17 15:40:51 +000032
33
jadmanski0afbb632008-06-06 21:10:57 +000034 def test_handles_endstatus(self):
35 for stat in self.statuses:
36 line = version_0.status_line(0, "END " + stat, "----",
37 "test", "", {})
38 self.assertEquals(line.type, "END")
39 self.assertEquals(line.status, stat)
mbligh2895ce52008-04-17 15:40:51 +000040
41
jadmanski0afbb632008-06-06 21:10:57 +000042 def test_fails_on_bad_status(self):
43 for stat in self.statuses:
44 self.assertRaises(AssertionError,
45 version_0.status_line, 0,
46 "BAD " + stat, "----", "test",
47 "", {})
mbligh2895ce52008-04-17 15:40:51 +000048
49
jadmanski0afbb632008-06-06 21:10:57 +000050 def test_saves_all_fields(self):
51 line = version_0.status_line(5, "GOOD", "subdir_name",
52 "test_name", "my reason here",
53 {"key1": "value",
54 "key2": "another value",
55 "key3": "value3"})
56 self.assertEquals(line.indent, 5)
57 self.assertEquals(line.status, "GOOD")
58 self.assertEquals(line.subdir, "subdir_name")
59 self.assertEquals(line.testname, "test_name")
60 self.assertEquals(line.reason, "my reason here")
61 self.assertEquals(line.optional_fields,
62 {"key1": "value", "key2": "another value",
63 "key3": "value3"})
mbligh2895ce52008-04-17 15:40:51 +000064
65
jadmanski0afbb632008-06-06 21:10:57 +000066 def test_parses_blank_subdir(self):
67 line = version_0.status_line(0, "GOOD", "----", "test",
68 "", {})
69 self.assertEquals(line.subdir, None)
mbligh2895ce52008-04-17 15:40:51 +000070
71
jadmanski0afbb632008-06-06 21:10:57 +000072 def test_parses_blank_testname(self):
73 line = version_0.status_line(0, "GOOD", "subdir", "----",
74 "", {})
75 self.assertEquals(line.testname, None)
mbligh2895ce52008-04-17 15:40:51 +000076
77
jadmanski0afbb632008-06-06 21:10:57 +000078 def test_parse_line_smoketest(self):
79 input_data = ("\t\t\tGOOD\t----\t----\t"
80 "field1=val1\tfield2=val2\tTest Passed")
81 line = version_0.status_line.parse_line(input_data)
82 self.assertEquals(line.indent, 3)
83 self.assertEquals(line.type, "STATUS")
84 self.assertEquals(line.status, "GOOD")
85 self.assertEquals(line.subdir, None)
86 self.assertEquals(line.testname, None)
87 self.assertEquals(line.reason, "Test Passed")
88 self.assertEquals(line.optional_fields,
89 {"field1": "val1", "field2": "val2"})
mbligh2895ce52008-04-17 15:40:51 +000090
jadmanski0afbb632008-06-06 21:10:57 +000091 def test_parse_line_handles_newline(self):
92 input_data = ("\t\tGOOD\t----\t----\t"
93 "field1=val1\tfield2=val2\tNo newline here!")
94 for suffix in ("", "\n"):
95 line = version_0.status_line.parse_line(input_data +
96 suffix)
97 self.assertEquals(line.indent, 2)
98 self.assertEquals(line.type, "STATUS")
99 self.assertEquals(line.status, "GOOD")
100 self.assertEquals(line.subdir, None)
101 self.assertEquals(line.testname, None)
102 self.assertEquals(line.reason, "No newline here!")
103 self.assertEquals(line.optional_fields,
104 {"field1": "val1",
105 "field2": "val2"})
mbligh2895ce52008-04-17 15:40:51 +0000106
107
jadmanski0afbb632008-06-06 21:10:57 +0000108 def test_parse_line_fails_on_untabbed_lines(self):
109 input_data = " GOOD\trandom\tfields\tof text"
110 line = version_0.status_line.parse_line(input_data)
111 self.assertEquals(line, None)
112 line = version_0.status_line.parse_line(input_data.lstrip())
113 self.assertEquals(line.indent, 0)
114 self.assertEquals(line.type, "STATUS")
115 self.assertEquals(line.status, "GOOD")
116 self.assertEquals(line.subdir, "random")
117 self.assertEquals(line.testname, "fields")
118 self.assertEquals(line.reason, "of text")
119 self.assertEquals(line.optional_fields, {})
mbligh2895ce52008-04-17 15:40:51 +0000120
121
jadmanskibf446192008-08-13 21:51:03 +0000122 def test_parse_line_fails_on_incomplete_lines(self):
123 input_data = "\t\tGOOD\tfield\tsecond field"
124 complete_data = input_data + "\tneeded last field"
125 line = version_0.status_line.parse_line(input_data)
126 self.assertEquals(line, None)
127 line = version_0.status_line.parse_line(complete_data)
128 self.assertEquals(line.indent, 2)
129 self.assertEquals(line.type, "STATUS")
130 self.assertEquals(line.status, "GOOD")
131 self.assertEquals(line.subdir, "field")
132 self.assertEquals(line.testname, "second field")
133 self.assertEquals(line.reason, "needed last field")
134 self.assertEquals(line.optional_fields, {})
135
136
jadmanski0afbb632008-06-06 21:10:57 +0000137 def test_parse_line_fails_on_bad_optional_fields(self):
138 input_data = "GOOD\tfield1\tfield2\tfield3\tfield4"
139 self.assertRaises(AssertionError,
140 version_0.status_line.parse_line,
141 input_data)
mbligh2895ce52008-04-17 15:40:51 +0000142
143
144if __name__ == "__main__":
jadmanski0afbb632008-06-06 21:10:57 +0000145 unittest.main()