| 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 |