| #!/usr/bin/python |
| |
| # Copyright 2014 Google Inc. |
| # |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| """ |
| Test generate_user_config.py. |
| """ |
| |
| import argparse |
| import os |
| import shutil |
| import sys |
| import tempfile |
| import test_variables |
| import unittest |
| import utils |
| |
| sys.path.append(test_variables.GYP_GEN_DIR) |
| |
| from generate_user_config import generate_user_config as gen_config |
| |
| # Name of SkUserConfig file. |
| USER_CONFIG_NAME = 'SkUserConfig-h.txt' |
| MISSING_FILENAME = 'missing-filename.xxx' |
| # Path to unchanging Dummy SkUserConfig file. |
| FULL_DUMMY_PATH = os.path.join(os.path.dirname(__file__), 'inputs', |
| USER_CONFIG_NAME) |
| REBASELINE_MSG = ('If you\'ve modified generate_user_config.py, run ' |
| '"generate_user_config_tests.py --rebaseline" to rebaseline') |
| |
| def generate_dummy_user_config(original_sk_user_config, |
| require_sk_user_config, target_dir): |
| # Add an arbitrary set of defines |
| defines = [ 'SK_BUILD_FOR_ANDROID', |
| 'SK_BUILD_FOR_ANDROID_FRAMEWORK', |
| 'SK_SCALAR_IS_FLOAT', |
| 'foo', |
| 'bar' ] |
| gen_config(original_sk_user_config=original_sk_user_config, |
| require_sk_user_config=require_sk_user_config, |
| target_dir=target_dir, defines=defines) |
| |
| |
| class GenUserConfigTest(unittest.TestCase): |
| |
| def test_missing_sk_user_config(self): |
| tmp = tempfile.mkdtemp() |
| original = os.path.join(tmp, MISSING_FILENAME) |
| assert not os.path.exists(original) |
| |
| |
| # With require_sk_user_config set to True, an AssertionError will be |
| # thrown when original_sk_user_config is missing. |
| with self.assertRaises(AssertionError): |
| defines = [ 'define' ] |
| gen_config(original_sk_user_config=original, |
| require_sk_user_config=True, |
| target_dir=tmp, defines=defines) |
| |
| # With require_sk_user_config set to False, it is okay for |
| # original_sk_user_config to be missing. |
| generate_dummy_user_config(original_sk_user_config=original, |
| require_sk_user_config=False, target_dir=tmp) |
| actual_name = os.path.join(tmp, MISSING_FILENAME) |
| utils.compare_to_expectation(actual_name=actual_name, |
| expectation_name=MISSING_FILENAME, |
| assert_true=self.assertTrue, |
| msg=REBASELINE_MSG) |
| |
| shutil.rmtree(tmp) |
| |
| def test_gen_config(self): |
| tmp = tempfile.mkdtemp() |
| generate_dummy_user_config(FULL_DUMMY_PATH, True, tmp) |
| actual_name = os.path.join(tmp, USER_CONFIG_NAME) |
| utils.compare_to_expectation(actual_name=actual_name, |
| expectation_name=USER_CONFIG_NAME, |
| assert_true=self.assertTrue, msg=REBASELINE_MSG) |
| shutil.rmtree(tmp) |
| |
| |
| def main(): |
| loader = unittest.TestLoader() |
| suite = loader.loadTestsFromTestCase(GenUserConfigTest) |
| results = unittest.TextTestRunner(verbosity=2).run(suite) |
| print repr(results) |
| if not results.wasSuccessful(): |
| raise Exception('failed one or more unittests') |
| |
| |
| def rebaseline(): |
| generate_dummy_user_config(FULL_DUMMY_PATH, True, utils.EXPECTATIONS_DIR) |
| generate_dummy_user_config(MISSING_FILENAME, False, utils.EXPECTATIONS_DIR) |
| |
| if __name__ == "__main__": |
| parser = argparse.ArgumentParser() |
| parser.add_argument('-r', '--rebaseline', help='Rebaseline expectations.', |
| action='store_true') |
| args = parser.parse_args() |
| |
| if args.rebaseline: |
| rebaseline() |
| else: |
| main() |
| |