Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(181)

Side by Side Diff: Tools/Scripts/webkitpy/bindings/main.py

Issue 646283004: Don't use PLY cache files in Tools/Scripts/run-bindings-tests (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « Source/bindings/scripts/idl_compiler.py ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright (C) 2011 Google Inc. All rights reserved. 1 # Copyright (C) 2011 Google Inc. All rights reserved.
2 # 2 #
3 # Redistribution and use in source and binary forms, with or without 3 # Redistribution and use in source and binary forms, with or without
4 # modification, are permitted provided that the following conditions 4 # modification, are permitted provided that the following conditions
5 # are met: 5 # are met:
6 # 1. Redistributions of source code must retain the above copyright 6 # 1. Redistributions of source code must retain the above copyright
7 # notice, this list of conditions and the following disclaimer. 7 # notice, this list of conditions and the following disclaimer.
8 # 2. Redistributions in binary form must reproduce the above copyright 8 # 2. Redistributions in binary form must reproduce the above copyright
9 # notice, this list of conditions and the following disclaimer in the 9 # notice, this list of conditions and the following disclaimer in the
10 # documentation and/or other materials provided with the distribution. 10 # documentation and/or other materials provided with the distribution.
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
73 # core/inspector/InspectorInstrumentation.idl is not a valid Blink IDL. 73 # core/inspector/InspectorInstrumentation.idl is not a valid Blink IDL.
74 NON_BLINK_IDL_FILES = frozenset([ 74 NON_BLINK_IDL_FILES = frozenset([
75 'InspectorInstrumentation.idl', 75 'InspectorInstrumentation.idl',
76 ]) 76 ])
77 77
78 COMPONENT_DIRECTORY = frozenset(['core', 'modules']) 78 COMPONENT_DIRECTORY = frozenset(['core', 'modules'])
79 79
80 test_input_directory = os.path.join(source_path, 'bindings', 'tests', 'idls') 80 test_input_directory = os.path.join(source_path, 'bindings', 'tests', 'idls')
81 reference_directory = os.path.join(source_path, 'bindings', 'tests', 'results') 81 reference_directory = os.path.join(source_path, 'bindings', 'tests', 'results')
82 82
83 PLY_LEX_YACC_FILES = frozenset([
84 'lextab.py', # PLY lex
85 'lextab.pyc',
86 'parsetab.pickle', # PLY yacc
87 ])
88
89 @contextmanager 83 @contextmanager
90 def TemporaryDirectory(): 84 def TemporaryDirectory():
91 """Wrapper for tempfile.mkdtemp() so it's usable with 'with' statement. 85 """Wrapper for tempfile.mkdtemp() so it's usable with 'with' statement.
92 86
93 Simple backport of tempfile.TemporaryDirectory from Python 3.2. 87 Simple backport of tempfile.TemporaryDirectory from Python 3.2.
94 """ 88 """
95 name = tempfile.mkdtemp() 89 name = tempfile.mkdtemp()
96 try: 90 try:
97 yield name 91 yield name
98 finally: 92 finally:
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
133 # 2-stage computation: individual, then overall 127 # 2-stage computation: individual, then overall
134 # 128 #
135 # Properly should compute separately by component (currently test 129 # Properly should compute separately by component (currently test
136 # includes are invalid), but that's brittle (would need to update this file 130 # includes are invalid), but that's brittle (would need to update this file
137 # for each new component) and doesn't test the code generator any better 131 # for each new component) and doesn't test the code generator any better
138 # than using a single component. 132 # than using a single component.
139 # 133 #
140 # In order to allow test IDL files to override the production IDL files if 134 # In order to allow test IDL files to override the production IDL files if
141 # they have the same interface name, process the test IDL files after the 135 # they have the same interface name, process the test IDL files after the
142 # non-test IDL files. 136 # non-test IDL files.
143 reader = IdlReader(outputdir=output_directory) 137 reader = IdlReader()
144 for idl_path_list in (non_test_idl_paths, test_idl_paths): 138 for idl_path_list in (non_test_idl_paths, test_idl_paths):
145 for idl_path in idl_path_list: 139 for idl_path in idl_path_list:
146 if os.path.basename(idl_path) in NON_BLINK_IDL_FILES: 140 if os.path.basename(idl_path) in NON_BLINK_IDL_FILES:
147 continue 141 continue
148 compute_info_individual(idl_path, reader) 142 compute_info_individual(idl_path, reader)
149 info_individuals = [info_individual()] 143 info_individuals = [info_individual()]
150 # TestDictionary.{h,cpp} are placed under Source/bindings/tests/idls/core. 144 # TestDictionary.{h,cpp} are placed under Source/bindings/tests/idls/core.
151 # However, IdlCompiler generates TestDictionary.{h,cpp} by using relative_di r. 145 # However, IdlCompiler generates TestDictionary.{h,cpp} by using relative_di r.
152 # So the files will be generated under output_dir/core/bindings/tests/idls/c ore. 146 # So the files will be generated under output_dir/core/bindings/tests/idls/c ore.
153 # To avoid this issue, we need to clear relative_dir here. 147 # To avoid this issue, we need to clear relative_dir here.
(...skipping 22 matching lines...) Expand all
176 cmd = ['diff', 170 cmd = ['diff',
177 '-u', # unified format 171 '-u', # unified format
178 '-N', # treat absent files as empty 172 '-N', # treat absent files as empty
179 filename1, 173 filename1,
180 filename2] 174 filename2]
181 # Return output and don't raise exception, even though diff(1) has 175 # Return output and don't raise exception, even though diff(1) has
182 # non-zero exit if files differ. 176 # non-zero exit if files differ.
183 return executive.run_command(cmd, error_handler=lambda x: None) 177 return executive.run_command(cmd, error_handler=lambda x: None)
184 178
185 def is_cache_file(filename): 179 def is_cache_file(filename):
186 if filename in PLY_LEX_YACC_FILES: 180 return filename.endswith('.cache')
187 return True
188 if filename.endswith('.cache'): # Jinja
189 return True
190 return False
191 181
192 def delete_cache_files(): 182 def delete_cache_files():
193 # FIXME: Instead of deleting cache files, don't generate them. 183 # FIXME: Instead of deleting cache files, don't generate them.
194 cache_files = [path for path in list_files(output_directory) 184 cache_files = [path for path in list_files(output_directory)
195 if is_cache_file(os.path.basename(path))] 185 if is_cache_file(os.path.basename(path))]
196 for cache_file in cache_files: 186 for cache_file in cache_files:
197 os.remove(cache_file) 187 os.remove(cache_file)
198 188
199 def identical_file(reference_filename, output_filename): 189 def identical_file(reference_filename, output_filename):
200 reference_basename = os.path.basename(reference_filename) 190 reference_basename = os.path.basename(reference_filename)
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
311 301
312 302
313 def run_bindings_tests(reset_results, verbose): 303 def run_bindings_tests(reset_results, verbose):
314 # Generate output into the reference directory if resetting results, or 304 # Generate output into the reference directory if resetting results, or
315 # a temp directory if not. 305 # a temp directory if not.
316 if reset_results: 306 if reset_results:
317 print 'Resetting results' 307 print 'Resetting results'
318 return bindings_tests(reference_directory, verbose) 308 return bindings_tests(reference_directory, verbose)
319 with TemporaryDirectory() as temp_dir: 309 with TemporaryDirectory() as temp_dir:
320 return bindings_tests(temp_dir, verbose) 310 return bindings_tests(temp_dir, verbose)
OLDNEW
« no previous file with comments | « Source/bindings/scripts/idl_compiler.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698