OLD | NEW |
---|---|
(Empty) | |
1 #!/usr/bin/env python | |
2 # Copyright 2016 the V8 project authors. All rights reserved. | |
3 # Use of this source code is governed by a BSD-style license that can be | |
4 # found in the LICENSE file. | |
5 | |
6 import unittest | |
7 | |
8 import statusfile | |
9 from utils import Freeze | |
10 | |
11 | |
12 TEST_VARIABLES = { | |
13 'system': 'linux', | |
14 'mode': 'release', | |
15 } | |
16 | |
17 | |
18 TEST_STATUS_FILE = """ | |
19 [ | |
20 [ALWAYS, { | |
21 'foo/bar': [PASS, SKIP], | |
22 'baz/bar': [PASS, FAIL], | |
23 'foo/*': [PASS, SLOW], | |
24 }], # ALWAYS | |
25 | |
26 ['%s', { | |
27 'baz/bar': [PASS, SLOW], | |
28 'foo/*': [FAIL], | |
29 }], | |
30 ] | |
31 """ | |
32 | |
33 | |
34 def make_variables(): | |
35 variables = {} | |
36 variables.update(TEST_VARIABLES) | |
37 return variables | |
38 | |
39 | |
40 class UtilsTest(unittest.TestCase): | |
41 def test_freeze(self): | |
42 self.assertEqual(2, Freeze({1: [2]})[1][0]) | |
43 self.assertEqual(set([3]), Freeze({1: [2], 2: set([3])})[2]) | |
44 | |
45 with self.assertRaises(Exception): | |
46 Freeze({1: [], 2: set([3])})[2] = 4 | |
47 with self.assertRaises(Exception): | |
48 Freeze({1: [], 2: set([3])}).update({3: 4}) | |
49 with self.assertRaises(Exception): | |
50 Freeze({1: [], 2: set([3])})[1].append(2) | |
51 with self.assertRaises(Exception): | |
52 Freeze({1: [], 2: set([3])})[2] |= set([3]) | |
53 | |
54 # Sanity check that we can do the same calls on a non-fozen object. | |
Jakob Kummerow
2016/08/04 14:17:12
nit: s/fozen/frozen/
| |
55 {1: [], 2: set([3])}[2] = 4 | |
56 {1: [], 2: set([3])}.update({3: 4}) | |
57 {1: [], 2: set([3])}[1].append(2) | |
58 {1: [], 2: set([3])}[2] |= set([3]) | |
59 | |
60 | |
61 class StatusFileTest(unittest.TestCase): | |
62 def test_eval_expression(self): | |
63 variables = make_variables() | |
64 variables.update(statusfile.VARIABLES) | |
65 | |
66 self.assertTrue( | |
67 statusfile._EvalExpression( | |
68 'system==linux and mode==release', variables)) | |
69 self.assertTrue( | |
70 statusfile._EvalExpression( | |
71 'system==linux or variant==default', variables)) | |
72 self.assertFalse( | |
73 statusfile._EvalExpression( | |
74 'system==linux and mode==debug', variables)) | |
75 self.assertRaises( | |
76 AssertionError, | |
77 lambda: statusfile._EvalExpression( | |
78 'system==linux and mode==foo', variables)) | |
79 self.assertRaises( | |
80 SyntaxError, | |
81 lambda: statusfile._EvalExpression( | |
82 'system==linux and mode=release', variables)) | |
83 self.assertEquals( | |
84 statusfile.VARIANT_EXPRESSION, | |
85 statusfile._EvalExpression( | |
86 'system==linux and variant==default', variables) | |
87 ) | |
88 | |
89 def test_read_statusfile_section_true(self): | |
90 rules, wildcards = statusfile.ReadStatusFile( | |
91 TEST_STATUS_FILE % 'system==linux', make_variables()) | |
92 | |
93 self.assertEquals( | |
94 { | |
95 'foo/bar': set(['PASS', 'SKIP']), | |
96 'baz/bar': set(['PASS', 'FAIL', 'SLOW']), | |
97 }, | |
98 rules[''], | |
99 ) | |
100 self.assertEquals( | |
101 { | |
102 'foo/*': set(['SLOW', 'FAIL']), | |
103 }, | |
104 wildcards[''], | |
105 ) | |
106 self.assertEquals({}, rules['default']) | |
107 self.assertEquals({}, wildcards['default']) | |
108 | |
109 def test_read_statusfile_section_false(self): | |
110 rules, wildcards = statusfile.ReadStatusFile( | |
111 TEST_STATUS_FILE % 'system==windows', make_variables()) | |
112 | |
113 self.assertEquals( | |
114 { | |
115 'foo/bar': set(['PASS', 'SKIP']), | |
116 'baz/bar': set(['PASS', 'FAIL']), | |
117 }, | |
118 rules[''], | |
119 ) | |
120 self.assertEquals( | |
121 { | |
122 'foo/*': set(['PASS', 'SLOW']), | |
123 }, | |
124 wildcards[''], | |
125 ) | |
126 self.assertEquals({}, rules['default']) | |
127 self.assertEquals({}, wildcards['default']) | |
128 | |
129 def test_read_statusfile_section_variant(self): | |
130 rules, wildcards = statusfile.ReadStatusFile( | |
131 TEST_STATUS_FILE % 'system==linux and variant==default', | |
132 make_variables(), | |
133 ) | |
134 | |
135 self.assertEquals( | |
136 { | |
137 'foo/bar': set(['PASS', 'SKIP']), | |
138 'baz/bar': set(['PASS', 'FAIL']), | |
139 }, | |
140 rules[''], | |
141 ) | |
142 self.assertEquals( | |
143 { | |
144 'foo/*': set(['PASS', 'SLOW']), | |
145 }, | |
146 wildcards[''], | |
147 ) | |
148 self.assertEquals( | |
149 { | |
150 'baz/bar': set(['PASS', 'SLOW']), | |
151 }, | |
152 rules['default'], | |
153 ) | |
154 self.assertEquals( | |
155 { | |
156 'foo/*': set(['FAIL']), | |
157 }, | |
158 wildcards['default'], | |
159 ) | |
160 | |
161 | |
162 if __name__ == '__main__': | |
163 unittest.main() | |
OLD | NEW |