OLD | NEW |
| (Empty) |
1 #!/usr/bin/env python | |
2 # Copyright (c) 2012 The Chromium 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 merge_gyp | |
9 | |
10 | |
11 class MergeGyp(unittest.TestCase): | |
12 def test_unknown_key(self): | |
13 try: | |
14 merge_gyp.process_variables(None, {'foo': [],}) | |
15 self.fail() | |
16 except AssertionError: | |
17 pass | |
18 | |
19 def test_unknown_var(self): | |
20 try: | |
21 merge_gyp.process_variables(None, {'variables': {'foo': [],}}) | |
22 self.fail() | |
23 except AssertionError: | |
24 pass | |
25 | |
26 def test_parse_gyp_dict_empty(self): | |
27 f, d, o = merge_gyp.parse_gyp_dict({}) | |
28 self.assertEquals({}, f) | |
29 self.assertEquals({}, d) | |
30 self.assertEquals(set(), o) | |
31 | |
32 def test_parse_gyp_dict(self): | |
33 value = { | |
34 'variables': { | |
35 'isolate_files': [ | |
36 'a', | |
37 ], | |
38 'isolate_dirs': [ | |
39 'b', | |
40 ], | |
41 }, | |
42 'conditions': [ | |
43 ['OS=="atari"', { | |
44 'variables': { | |
45 'isolate_files': [ | |
46 'c', | |
47 'x', | |
48 ], | |
49 'isolate_dirs': [ | |
50 'd', | |
51 ], | |
52 }, | |
53 }, { # else | |
54 'variables': { | |
55 'isolate_files': [ | |
56 'e', | |
57 'x', | |
58 ], | |
59 'isolate_dirs': [ | |
60 'f', | |
61 ], | |
62 }, | |
63 }], | |
64 ['OS=="amiga"', { | |
65 'variables': { | |
66 'isolate_files': [ | |
67 'g', | |
68 ], | |
69 }, | |
70 }], | |
71 ['OS=="inexistent"', { | |
72 }], | |
73 ['OS=="coleco"', { | |
74 }, { # else | |
75 'variables': { | |
76 'isolate_dirs': [ | |
77 'h', | |
78 ], | |
79 }, | |
80 }], | |
81 ], | |
82 } | |
83 expected_files = { | |
84 'a': set([None]), | |
85 'c': set(['atari']), | |
86 'e': set(['!atari']), | |
87 'g': set(['amiga']), | |
88 'x': set(['!atari', 'atari']), # potential for reduction | |
89 } | |
90 expected_dirs = { | |
91 'b': set([None]), | |
92 'd': set(['atari']), | |
93 'f': set(['!atari']), | |
94 'h': set(['!coleco']), | |
95 } | |
96 # coleco is included even if only negative. | |
97 expected_oses = set(['atari', 'amiga', 'coleco']) | |
98 actual_files, actual_dirs, actual_oses = merge_gyp.parse_gyp_dict(value) | |
99 self.assertEquals(expected_files, actual_files) | |
100 self.assertEquals(expected_dirs, actual_dirs) | |
101 self.assertEquals(expected_oses, actual_oses) | |
102 | |
103 def test_reduce_inputs(self): | |
104 value_files = { | |
105 'a': set([None]), | |
106 'c': set(['atari']), | |
107 'e': set(['!atari']), | |
108 'g': set(['amiga']), | |
109 'x': set(['!atari', 'atari']), | |
110 } | |
111 value_dirs = { | |
112 'b': set([None]), | |
113 'd': set(['atari']), | |
114 'f': set(['!atari']), | |
115 'h': set(['!coleco']), | |
116 } | |
117 value_oses = set(['atari', 'amiga', 'coleco']) | |
118 expected_files = { | |
119 'a': set([None]), | |
120 'c': set(['atari']), | |
121 'e': set(['!atari']), | |
122 'g': set(['amiga']), | |
123 'x': set([None]), # Reduced. | |
124 } | |
125 expected_dirs = { | |
126 'b': set([None]), | |
127 'd': set(['atari']), | |
128 'f': set(['!atari']), | |
129 'h': set(['!coleco']), | |
130 } | |
131 actual_files, actual_dirs = merge_gyp.reduce_inputs( | |
132 value_files, value_dirs, value_oses) | |
133 self.assertEquals(expected_files, actual_files) | |
134 self.assertEquals(expected_dirs, actual_dirs) | |
135 | |
136 def test_convert_to_gyp(self): | |
137 files = { | |
138 'a': set([None]), | |
139 'x': set([None]), | |
140 | |
141 'g': set(['amiga']), | |
142 | |
143 'c': set(['atari']), | |
144 'e': set(['!atari']), | |
145 } | |
146 dirs = { | |
147 'b': set([None]), | |
148 | |
149 'd': set(['atari']), | |
150 'f': set(['!atari']), | |
151 | |
152 'h': set(['!coleco']), | |
153 } | |
154 expected = { | |
155 'variables': { | |
156 'isolate_dirs': ['b'], | |
157 'isolate_files': ['a', 'x'], | |
158 }, | |
159 'conditions': [ | |
160 ['OS=="amiga"', { | |
161 'variables': { | |
162 'isolate_files': ['g'], | |
163 }, | |
164 }], | |
165 ['OS=="atari"', { | |
166 'variables': { | |
167 'isolate_dirs': ['d'], | |
168 'isolate_files': ['c'], | |
169 }, | |
170 }, { | |
171 'variables': { | |
172 'isolate_dirs': ['f'], | |
173 'isolate_files': ['e'], | |
174 }, | |
175 }], | |
176 ['OS=="coleco"', { | |
177 }, { | |
178 'variables': { | |
179 'isolate_dirs': ['h'], | |
180 }, | |
181 }], | |
182 ], | |
183 } | |
184 self.assertEquals(expected, merge_gyp.convert_to_gyp(files, dirs)) | |
185 | |
186 | |
187 if __name__ == '__main__': | |
188 unittest.main() | |
OLD | NEW |