| Index: platform_tools/android/tests/makefile_writer_tests.py
|
| diff --git a/platform_tools/android/tests/makefile_writer_tests.py b/platform_tools/android/tests/makefile_writer_tests.py
|
| index 9a764b5c0500526cb42210936ee88d3c54fdd36b..1b42bf37d2fa4e74d03ad681b7b063be191e3bd4 100644
|
| --- a/platform_tools/android/tests/makefile_writer_tests.py
|
| +++ b/platform_tools/android/tests/makefile_writer_tests.py
|
| @@ -16,14 +16,16 @@ import sys
|
| import tempfile
|
| import test_variables
|
| import unittest
|
| +import utils
|
|
|
| sys.path.append(test_variables.GYP_GEN_DIR)
|
|
|
| import makefile_writer
|
| import vars_dict_lib
|
|
|
| -EXPECTATIONS_DIR = os.path.join(os.path.dirname(__file__), 'expectations')
|
| MAKEFILE_NAME = 'Android.mk'
|
| +REBASELINE_MSG = ('If you\'ve modified makefile_writer.py, run '
|
| + '"makefile_writer_tests.py --rebaseline" to rebaseline')
|
|
|
| def generate_dummy_vars_dict(name):
|
| """Create a VarsDict and fill it with dummy entries.
|
| @@ -42,6 +44,31 @@ def generate_dummy_vars_dict(name):
|
| vars_dict[key].add(entry)
|
| return vars_dict
|
|
|
| +def generate_write_local_vars_params():
|
| + """Generator to compute params for write_local_vars tests.
|
| +
|
| + Each iteration yields a new tuple: (filename, append, name), specific to a
|
| + way to call write_local_vars for the tests.
|
| +
|
| + Yields:
|
| + filename: filename corresponding to the expectation file for this
|
| + combination of params to write_local_vars.
|
| + append: boolean to pass as append parameter to write_local_vars.
|
| + name: string to pass as name parameter to write_local_vars.
|
| + """
|
| + for append in [ True, False ]:
|
| + for name in [ None, 'arm', 'foo' ]:
|
| + filename = 'write_local_vars'
|
| + if append:
|
| + filename += '_append'
|
| + else:
|
| + filename += '_no_append'
|
| + if name:
|
| + filename += '_' + name
|
| + else:
|
| + filename += '_no_name'
|
| +
|
| + yield (filename, append, name)
|
|
|
| def generate_dummy_vars_dict_data(name, condition):
|
| """Create a dummy VarsDictData.
|
| @@ -94,26 +121,6 @@ class MakefileWriterTest(unittest.TestCase):
|
| self.assertEqual(f.tell(), 0)
|
| f.close()
|
|
|
| - def __compare_files(self, actual_name, expectation_name, msg=None):
|
| - """Check that two files are identical.
|
| -
|
| - Assert line by line that the files match.
|
| -
|
| - Args:
|
| - actual_name: Full path to the test file.
|
| - expectation_name: Basename of the expectations file within which
|
| - to compare. The file is expected to be in
|
| - platform_tools/android/tests/expectations.
|
| - msg: Message to pass to assertEqual.
|
| - Raises:
|
| - AssertionError: If the files do not match.
|
| - """
|
| - with open(actual_name, 'r') as result:
|
| - with open(os.path.join(EXPECTATIONS_DIR,
|
| - expectation_name)) as expectation:
|
| - for line in result:
|
| - self.assertEqual(line, expectation.readline(), msg)
|
| -
|
| def test_write_group(self):
|
| animals = ('dog', 'cat', 'mouse', 'elephant')
|
| fd, filename = tempfile.mkstemp()
|
| @@ -121,56 +128,44 @@ class MakefileWriterTest(unittest.TestCase):
|
| makefile_writer.write_group(f, 'animals', animals, False)
|
| os.close(fd)
|
| # Now confirm that it matches expectations
|
| - self.__compare_files(filename, 'animals.txt')
|
| + utils.compare_to_expectation(filename, 'animals.txt', self.assertTrue)
|
|
|
| with open(filename, 'w') as f:
|
| makefile_writer.write_group(f, 'animals_append', animals, True)
|
| # Now confirm that it matches expectations
|
| - self.__compare_files(filename, 'animals_append.txt')
|
| + utils.compare_to_expectation(filename, 'animals_append.txt',
|
| + self.assertTrue)
|
| os.remove(filename)
|
|
|
| def test_write_local_vars(self):
|
| vars_dict = generate_dummy_vars_dict(None)
|
| -
|
| - # Call variations of write_local_vars.
|
| - for append in [ True, False ]:
|
| - for name in [ None, 'arm', 'foo' ]:
|
| - # Now write to a temporary file.
|
| - fd, outfile = tempfile.mkstemp()
|
| - with open(outfile, 'w') as f:
|
| - makefile_writer.write_local_vars(f, vars_dict, append, name)
|
| - os.close(fd)
|
| -
|
| - # Compare to the expected file.
|
| - filename = 'write_local_vars'
|
| - if append:
|
| - filename += '_append'
|
| - else:
|
| - filename += '_no_append'
|
| - if name:
|
| - filename += '_' + name
|
| - else:
|
| - filename += '_no_name'
|
| - self.__compare_files(outfile, filename)
|
| -
|
| - # KNOWN_TARGETS is always a part of the input VarsDict, but it should
|
| - # not be written to the resulting file.
|
| - # Note that this assumes none of our dummy entries is 'KNOWN_TARGETS'.
|
| - known_targets_name = 'KNOWN_TARGETS'
|
| - self.assertEqual(len(vars_dict[known_targets_name]), 1)
|
| -
|
| - with open(outfile, 'r') as f:
|
| - self.assertNotIn(known_targets_name, f.read())
|
| - os.remove(outfile)
|
| + # Compare various ways of calling write_local_vars to expectations.
|
| + for (filename, append, name) in generate_write_local_vars_params():
|
| + fd, outfile = tempfile.mkstemp()
|
| + with open(outfile, 'w') as f:
|
| + makefile_writer.write_local_vars(f, vars_dict, append, name)
|
| + os.close(fd)
|
| +
|
| + # Compare to the expected file.
|
| + utils.compare_to_expectation(outfile, filename, self.assertTrue,
|
| + REBASELINE_MSG)
|
| +
|
| + # KNOWN_TARGETS is always a key in the input VarsDict, but it should not
|
| + # be written to the resulting file.
|
| + # Note that this assumes none of our dummy entries is 'KNOWN_TARGETS'.
|
| + known_targets_name = 'KNOWN_TARGETS'
|
| + self.assertEqual(len(vars_dict[known_targets_name]), 1)
|
| +
|
| + with open(outfile, 'r') as f:
|
| + self.assertNotIn(known_targets_name, f.read())
|
| + os.remove(outfile)
|
|
|
| def test_write_android_mk(self):
|
| outdir = tempfile.mkdtemp()
|
| generate_dummy_makefile(outdir)
|
|
|
| - self.__compare_files(os.path.join(outdir, MAKEFILE_NAME), MAKEFILE_NAME,
|
| - 'If you\'ve modified makefile_writer.py, run ' +
|
| - '"makefile_writer_tests.py --rebaseline" ' +
|
| - 'to rebaseline')
|
| + utils.compare_to_expectation(os.path.join(outdir, MAKEFILE_NAME),
|
| + MAKEFILE_NAME, self.assertTrue, REBASELINE_MSG)
|
|
|
| shutil.rmtree(outdir)
|
|
|
| @@ -184,15 +179,23 @@ def main():
|
| raise Exception('failed one or more unittests')
|
|
|
|
|
| +def rebaseline():
|
| + generate_dummy_makefile(utils.EXPECTATIONS_DIR)
|
| +
|
| + vars_dict = generate_dummy_vars_dict(None)
|
| + for (filename, append, name) in generate_write_local_vars_params():
|
| + with open(os.path.join(utils.EXPECTATIONS_DIR, filename), 'w') as f:
|
| + makefile_writer.write_local_vars(f, vars_dict, append, name)
|
| +
|
| +
|
| if __name__ == '__main__':
|
| parser = argparse.ArgumentParser()
|
| - parser.add_argument('-r', '--rebaseline',
|
| - help='Rebaseline expectation for Android.mk',
|
| + parser.add_argument('-r', '--rebaseline', help='Rebaseline expectations.',
|
| action='store_true')
|
| args = parser.parse_args()
|
|
|
| if args.rebaseline:
|
| - generate_dummy_makefile(EXPECTATIONS_DIR)
|
| + rebaseline()
|
| else:
|
| main()
|
|
|
|
|