Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / third_party / skia / platform_tools / android / tests / generate_user_config_tests.py
1 #!/usr/bin/python
2
3 # Copyright 2014 Google Inc.
4 #
5 # Use of this source code is governed by a BSD-style license that can be
6 # found in the LICENSE file.
7
8 """
9 Test generate_user_config.py.
10 """
11
12 import argparse
13 import os
14 import shutil
15 import sys
16 import tempfile
17 import test_variables
18 import unittest
19 import utils
20
21 sys.path.append(test_variables.GYP_GEN_DIR)
22
23 from generate_user_config import generate_user_config as gen_config
24
25 # Name of SkUserConfig file.
26 USER_CONFIG_NAME = 'SkUserConfig-h.txt'
27 MISSING_FILENAME = 'missing-filename.xxx'
28 # Path to unchanging Dummy SkUserConfig file.
29 FULL_DUMMY_PATH = os.path.join(os.path.dirname(__file__), 'inputs',
30                                USER_CONFIG_NAME)
31 REBASELINE_MSG = ('If you\'ve modified generate_user_config.py, run '
32                   '"generate_user_config_tests.py --rebaseline" to rebaseline')
33
34 def generate_dummy_user_config(original_sk_user_config,
35                                require_sk_user_config, target_dir):
36   # Add an arbitrary set of defines
37   defines = [ 'SK_BUILD_FOR_ANDROID',
38               'SK_BUILD_FOR_ANDROID_FRAMEWORK',
39               'SK_SCALAR_IS_FLOAT',
40               'foo',
41               'bar' ]
42   gen_config(original_sk_user_config=original_sk_user_config,
43              require_sk_user_config=require_sk_user_config,
44              target_dir=target_dir, defines=defines)
45
46
47 class GenUserConfigTest(unittest.TestCase):
48
49   def test_missing_sk_user_config(self):
50     tmp = tempfile.mkdtemp()
51     original = os.path.join(tmp, MISSING_FILENAME)
52     assert not os.path.exists(original)
53
54
55     # With require_sk_user_config set to True, an AssertionError will be
56     # thrown when original_sk_user_config is missing.
57     with self.assertRaises(AssertionError):
58       defines = [ 'define' ]
59       gen_config(original_sk_user_config=original,
60                  require_sk_user_config=True,
61                  target_dir=tmp, defines=defines)
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
73     shutil.rmtree(tmp)
74
75   def test_gen_config(self):
76     tmp = tempfile.mkdtemp()
77     generate_dummy_user_config(FULL_DUMMY_PATH, True, tmp)
78     actual_name = os.path.join(tmp, USER_CONFIG_NAME)
79     utils.compare_to_expectation(actual_name=actual_name,
80                         expectation_name=USER_CONFIG_NAME,
81                         assert_true=self.assertTrue, msg=REBASELINE_MSG)
82     shutil.rmtree(tmp)
83
84
85 def main():
86   loader = unittest.TestLoader()
87   suite = loader.loadTestsFromTestCase(GenUserConfigTest)
88   results = unittest.TextTestRunner(verbosity=2).run(suite)
89   print repr(results)
90   if not results.wasSuccessful():
91     raise Exception('failed one or more unittests')
92
93
94 def rebaseline():
95   generate_dummy_user_config(FULL_DUMMY_PATH, True, utils.EXPECTATIONS_DIR)
96   generate_dummy_user_config(MISSING_FILENAME, False, utils.EXPECTATIONS_DIR)
97
98 if __name__ == "__main__":
99   parser = argparse.ArgumentParser()
100   parser.add_argument('-r', '--rebaseline', help='Rebaseline expectations.',
101                       action='store_true')
102   args = parser.parse_args()
103
104   if args.rebaseline:
105     rebaseline()
106   else:
107     main()
108