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 generate_user_config.py. | 9 Test generate_user_config.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 from generate_user_config import generate_user_config as gen_config | 23 from generate_user_config import generate_user_config as gen_config |
24 | 24 |
25 # Name of SkUserConfig file. | 25 # Name of SkUserConfig file. |
26 USER_CONFIG_NAME = 'SkUserConfig-h.txt' | 26 USER_CONFIG_NAME = 'SkUserConfig-h.txt' |
| 27 MISSING_FILENAME = 'missing-filename.xxx' |
27 # Path to unchanging Dummy SkUserConfig file. | 28 # Path to unchanging Dummy SkUserConfig file. |
28 FULL_DUMMY_PATH = os.path.join(os.path.dirname(__file__), 'inputs', | 29 FULL_DUMMY_PATH = os.path.join(os.path.dirname(__file__), 'inputs', |
29 USER_CONFIG_NAME) | 30 USER_CONFIG_NAME) |
30 REBASELINE_MSG = ('If you\'ve modified generate_user_config.py, run ' | 31 REBASELINE_MSG = ('If you\'ve modified generate_user_config.py, run ' |
31 '"generate_user_config_tests.py --rebaseline" to rebaseline') | 32 '"generate_user_config_tests.py --rebaseline" to rebaseline') |
32 | 33 |
33 def generate_dummy_user_config(original_sk_user_config, target_dir): | 34 def generate_dummy_user_config(original_sk_user_config, |
| 35 require_sk_user_config, target_dir): |
34 # Add an arbitrary set of defines | 36 # Add an arbitrary set of defines |
35 defines = [ 'SK_BUILD_FOR_ANDROID', | 37 defines = [ 'SK_BUILD_FOR_ANDROID', |
36 'SK_BUILD_FOR_ANDROID_FRAMEWORK', | 38 'SK_BUILD_FOR_ANDROID_FRAMEWORK', |
37 'SK_SCALAR_IS_FLOAT', | 39 'SK_SCALAR_IS_FLOAT', |
38 'foo', | 40 'foo', |
39 'bar' ] | 41 'bar' ] |
40 gen_config(original_sk_user_config=original_sk_user_config, | 42 gen_config(original_sk_user_config=original_sk_user_config, |
| 43 require_sk_user_config=require_sk_user_config, |
41 target_dir=target_dir, ordered_set=defines) | 44 target_dir=target_dir, ordered_set=defines) |
42 | 45 |
43 | 46 |
44 class GenUserConfigTest(unittest.TestCase): | 47 class GenUserConfigTest(unittest.TestCase): |
45 | 48 |
46 def test_missing_sk_user_config(self): | 49 def test_missing_sk_user_config(self): |
47 tmp = tempfile.mkdtemp() | 50 tmp = tempfile.mkdtemp() |
48 original = os.path.join(tmp, 'filename') | 51 original = os.path.join(tmp, MISSING_FILENAME) |
49 assert not os.path.exists(original) | 52 assert not os.path.exists(original) |
50 | 53 |
| 54 |
| 55 # With require_sk_user_config set to True, an AssertionError will be |
| 56 # thrown when original_sk_user_config is missing. |
51 with self.assertRaises(AssertionError): | 57 with self.assertRaises(AssertionError): |
52 ordered_set = [ 'define' ] | 58 ordered_set = [ 'define' ] |
53 gen_config(original_sk_user_config=original, target_dir=tmp, | 59 gen_config(original_sk_user_config=original, |
54 ordered_set=ordered_set) | 60 require_sk_user_config=True, |
| 61 target_dir=tmp, ordered_set=ordered_set) |
| 62 |
| 63 # With require_sk_user_config set to False, it is okay for |
| 64 # original_sk_user_config to be missing. |
| 65 generate_dummy_user_config(original_sk_user_config=original, |
| 66 require_sk_user_config=False, target_dir=tmp) |
| 67 actual_name = os.path.join(tmp, MISSING_FILENAME) |
| 68 utils.compare_to_expectation(actual_name=actual_name, |
| 69 expectation_name=MISSING_FILENAME, |
| 70 assert_true=self.assertTrue, |
| 71 msg=REBASELINE_MSG) |
| 72 |
55 shutil.rmtree(tmp) | 73 shutil.rmtree(tmp) |
56 | 74 |
57 def test_gen_config(self): | 75 def test_gen_config(self): |
58 tmp = tempfile.mkdtemp() | 76 tmp = tempfile.mkdtemp() |
59 generate_dummy_user_config(FULL_DUMMY_PATH, tmp) | 77 generate_dummy_user_config(FULL_DUMMY_PATH, True, tmp) |
60 actual_name = os.path.join(tmp, USER_CONFIG_NAME) | 78 actual_name = os.path.join(tmp, USER_CONFIG_NAME) |
61 utils.compare_to_expectation(actual_name=actual_name, | 79 utils.compare_to_expectation(actual_name=actual_name, |
62 expectation_name=USER_CONFIG_NAME, | 80 expectation_name=USER_CONFIG_NAME, |
63 assert_true=self.assertTrue, msg=REBASELINE_MSG) | 81 assert_true=self.assertTrue, msg=REBASELINE_MSG) |
64 shutil.rmtree(tmp) | 82 shutil.rmtree(tmp) |
65 | 83 |
66 | 84 |
67 def main(): | 85 def main(): |
68 loader = unittest.TestLoader() | 86 loader = unittest.TestLoader() |
69 suite = loader.loadTestsFromTestCase(GenUserConfigTest) | 87 suite = loader.loadTestsFromTestCase(GenUserConfigTest) |
70 results = unittest.TextTestRunner(verbosity=2).run(suite) | 88 results = unittest.TextTestRunner(verbosity=2).run(suite) |
71 print repr(results) | 89 print repr(results) |
72 if not results.wasSuccessful(): | 90 if not results.wasSuccessful(): |
73 raise Exception('failed one or more unittests') | 91 raise Exception('failed one or more unittests') |
74 | 92 |
75 | 93 |
76 def rebaseline(): | 94 def rebaseline(): |
77 generate_dummy_user_config(FULL_DUMMY_PATH, utils.EXPECTATIONS_DIR) | 95 generate_dummy_user_config(FULL_DUMMY_PATH, True, utils.EXPECTATIONS_DIR) |
| 96 generate_dummy_user_config(MISSING_FILENAME, False, utils.EXPECTATIONS_DIR) |
78 | 97 |
79 if __name__ == "__main__": | 98 if __name__ == "__main__": |
80 parser = argparse.ArgumentParser() | 99 parser = argparse.ArgumentParser() |
81 parser.add_argument('-r', '--rebaseline', help='Rebaseline expectations.', | 100 parser.add_argument('-r', '--rebaseline', help='Rebaseline expectations.', |
82 action='store_true') | 101 action='store_true') |
83 args = parser.parse_args() | 102 args = parser.parse_args() |
84 | 103 |
85 if args.rebaseline: | 104 if args.rebaseline: |
86 rebaseline() | 105 rebaseline() |
87 else: | 106 else: |
88 main() | 107 main() |
89 | 108 |
OLD | NEW |