OLD | NEW |
1 #!/usr/bin/python | 1 #!/usr/bin/python |
2 | 2 |
3 # Copyright 2014 Google Inc. | 3 # Copyright 2014 Google Inc. |
4 # | 4 # |
5 # Use of this source code is governed by a BSD-style license that can be | 5 # Use of this source code is governed by a BSD-style license that can be |
6 # found in the LICENSE file. | 6 # found in the LICENSE file. |
7 | 7 |
8 """ | 8 """ |
9 Test makefile_writer.py | 9 Test makefile_writer.py |
10 """ | 10 """ |
11 | 11 |
12 import argparse | 12 import argparse |
13 import os | 13 import os |
14 import shutil | 14 import shutil |
15 import sys | 15 import sys |
16 import tempfile | 16 import tempfile |
17 import test_variables | 17 import test_variables |
18 import unittest | 18 import unittest |
19 import utils | 19 import utils |
20 | 20 |
21 sys.path.append(test_variables.GYP_GEN_DIR) | 21 sys.path.append(test_variables.GYP_GEN_DIR) |
22 | 22 |
23 import makefile_writer | 23 import makefile_writer |
| 24 import tool_makefile_writer |
24 import vars_dict_lib | 25 import vars_dict_lib |
25 | 26 |
26 MAKEFILE_NAME = 'Android.mk' | 27 MAKEFILE_NAME = test_variables.ANDROID_MK |
27 REBASELINE_MSG = ('If you\'ve modified makefile_writer.py, run ' | 28 REBASELINE_MSG = ('If you\'ve modified makefile_writer.py, run ' |
28 '"makefile_writer_tests.py --rebaseline" to rebaseline') | 29 '"makefile_writer_tests.py --rebaseline" to rebaseline') |
| 30 TOOL_DIR = 'tool' |
29 | 31 |
30 def generate_dummy_vars_dict(name): | 32 def generate_dummy_vars_dict(name): |
31 """Create a VarsDict and fill it with dummy entries. | 33 """Create a VarsDict and fill it with dummy entries. |
32 | 34 |
33 Args: | 35 Args: |
34 name: string to be appended to each entry, if not None. | 36 name: string to be appended to each entry, if not None. |
35 | 37 |
36 Returns: | 38 Returns: |
37 A VarsDict with dummy entries. | 39 A VarsDict with dummy entries. |
38 """ | 40 """ |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
102 common_vars_dict = generate_dummy_vars_dict(None) | 104 common_vars_dict = generate_dummy_vars_dict(None) |
103 | 105 |
104 deviation_params = [('foo', 'COND'), ('bar', None)] | 106 deviation_params = [('foo', 'COND'), ('bar', None)] |
105 deviations = [generate_dummy_vars_dict_data(name, condition) | 107 deviations = [generate_dummy_vars_dict_data(name, condition) |
106 for (name, condition) in deviation_params] | 108 for (name, condition) in deviation_params] |
107 | 109 |
108 makefile_writer.write_android_mk(target_dir=target_dir, | 110 makefile_writer.write_android_mk(target_dir=target_dir, |
109 common=common_vars_dict, | 111 common=common_vars_dict, |
110 deviations_from_common=deviations) | 112 deviations_from_common=deviations) |
111 | 113 |
| 114 def generate_dummy_tool_makefile(target_dir): |
| 115 """Create a dummy makefile for a tool. |
| 116 |
| 117 Args: |
| 118 target_dir: directory in which to write the resulting Android.mk |
| 119 """ |
| 120 vars_dict = generate_dummy_vars_dict(None) |
| 121 tool_makefile_writer.write_tool_android_mk(target_dir=target_dir, |
| 122 var_dict=vars_dict) |
| 123 |
112 | 124 |
113 class MakefileWriterTest(unittest.TestCase): | 125 class MakefileWriterTest(unittest.TestCase): |
114 | 126 |
115 def test_write_group_empty(self): | 127 def test_write_group_empty(self): |
116 f = tempfile.TemporaryFile() | 128 f = tempfile.TemporaryFile() |
117 assert f.tell() == 0 | 129 assert f.tell() == 0 |
118 for empty in (None, []): | 130 for empty in (None, []): |
119 for truth in (True, False): | 131 for truth in (True, False): |
120 makefile_writer.write_group(f, 'name', empty, truth) | 132 makefile_writer.write_group(f, 'name', empty, truth) |
121 self.assertEqual(f.tell(), 0) | 133 self.assertEqual(f.tell(), 0) |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
162 | 174 |
163 def test_write_android_mk(self): | 175 def test_write_android_mk(self): |
164 outdir = tempfile.mkdtemp() | 176 outdir = tempfile.mkdtemp() |
165 generate_dummy_makefile(outdir) | 177 generate_dummy_makefile(outdir) |
166 | 178 |
167 utils.compare_to_expectation(os.path.join(outdir, MAKEFILE_NAME), | 179 utils.compare_to_expectation(os.path.join(outdir, MAKEFILE_NAME), |
168 MAKEFILE_NAME, self.assertTrue, REBASELINE_MSG) | 180 MAKEFILE_NAME, self.assertTrue, REBASELINE_MSG) |
169 | 181 |
170 shutil.rmtree(outdir) | 182 shutil.rmtree(outdir) |
171 | 183 |
| 184 def test_tool_writer(self): |
| 185 outdir = tempfile.mkdtemp() |
| 186 tool_dir = os.path.join(outdir, TOOL_DIR) |
| 187 os.mkdir(tool_dir) |
| 188 generate_dummy_tool_makefile(tool_dir) |
| 189 |
| 190 utils.compare_to_expectation(os.path.join(tool_dir, MAKEFILE_NAME), |
| 191 os.path.join(TOOL_DIR, MAKEFILE_NAME), |
| 192 self.assertTrue, REBASELINE_MSG) |
172 | 193 |
173 def main(): | 194 def main(): |
174 loader = unittest.TestLoader() | 195 loader = unittest.TestLoader() |
175 suite = loader.loadTestsFromTestCase(MakefileWriterTest) | 196 suite = loader.loadTestsFromTestCase(MakefileWriterTest) |
176 results = unittest.TextTestRunner(verbosity=2).run(suite) | 197 results = unittest.TextTestRunner(verbosity=2).run(suite) |
177 print repr(results) | 198 print repr(results) |
178 if not results.wasSuccessful(): | 199 if not results.wasSuccessful(): |
179 raise Exception('failed one or more unittests') | 200 raise Exception('failed one or more unittests') |
180 | 201 |
181 | 202 |
182 def rebaseline(): | 203 def rebaseline(): |
183 generate_dummy_makefile(utils.EXPECTATIONS_DIR) | 204 generate_dummy_makefile(utils.EXPECTATIONS_DIR) |
184 | 205 |
185 vars_dict = generate_dummy_vars_dict(None) | 206 vars_dict = generate_dummy_vars_dict(None) |
186 for (filename, append, name) in generate_write_local_vars_params(): | 207 for (filename, append, name) in generate_write_local_vars_params(): |
187 with open(os.path.join(utils.EXPECTATIONS_DIR, filename), 'w') as f: | 208 with open(os.path.join(utils.EXPECTATIONS_DIR, filename), 'w') as f: |
188 makefile_writer.write_local_vars(f, vars_dict, append, name) | 209 makefile_writer.write_local_vars(f, vars_dict, append, name) |
189 | 210 |
| 211 generate_dummy_tool_makefile(os.path.join(utils.EXPECTATIONS_DIR, TOOL_DIR)) |
| 212 |
190 | 213 |
191 if __name__ == '__main__': | 214 if __name__ == '__main__': |
192 parser = argparse.ArgumentParser() | 215 parser = argparse.ArgumentParser() |
193 parser.add_argument('-r', '--rebaseline', help='Rebaseline expectations.', | 216 parser.add_argument('-r', '--rebaseline', help='Rebaseline expectations.', |
194 action='store_true') | 217 action='store_true') |
195 args = parser.parse_args() | 218 args = parser.parse_args() |
196 | 219 |
197 if args.rebaseline: | 220 if args.rebaseline: |
198 rebaseline() | 221 rebaseline() |
199 else: | 222 else: |
200 main() | 223 main() |
201 | 224 |
OLD | NEW |