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

Unified Diff: Tools/Scripts/webkitpy/bindings/main.py

Issue 112463002: Add check to run-bindings-tests for excess files (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 7 years 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Tools/Scripts/webkitpy/bindings/main.py
diff --git a/Tools/Scripts/webkitpy/bindings/main.py b/Tools/Scripts/webkitpy/bindings/main.py
index 980254e633f848ce69a1ba2c15e3d7fb56efe837..43a644bcc4b142a2307ca1bebdc5687a8b36a751 100644
--- a/Tools/Scripts/webkitpy/bindings/main.py
+++ b/Tools/Scripts/webkitpy/bindings/main.py
@@ -96,17 +96,20 @@ class BindingsTests(object):
self.executive = executive
_, self.interface_dependencies_filename = provider.newtempfile()
_, self.derived_sources_list_filename = provider.newtempfile()
+ # Generate output into the reference directory if resetting results, or
+ # a temp directory if not.
if reset_results:
- self.event_names_filename = os.path.join(reference_directory, 'EventInterfaces.in')
+ self.output_directory = reference_directory
else:
- _, self.event_names_filename = provider.newtempfile()
+ self.output_directory = provider.newtempdir()
+ self.event_names_filename = os.path.join(self.output_directory, 'EventInterfaces.in')
def run_command(self, cmd):
output = self.executive.run_command(cmd)
if output:
print output
- def generate_from_idl_pl(self, idl_file, output_directory):
+ def generate_from_idl_pl(self, idl_file):
cmd = ['perl', '-w',
'-Ibindings/scripts',
'-Ibuild/scripts',
@@ -115,7 +118,7 @@ class BindingsTests(object):
'bindings/scripts/generate_bindings.pl',
# idl include directories (path relative to generate-bindings.pl)
'--include', '.',
- '--outputDir', output_directory,
+ '--outputDir', self.output_directory,
'--interfaceDependenciesFile', self.interface_dependencies_filename,
'--idlAttributesFile', 'bindings/IDLExtendedAttributes.txt',
idl_file]
@@ -190,13 +193,13 @@ class BindingsTests(object):
return e.exit_code
return 0
- def identical_file(self, reference_filename, work_filename):
+ def identical_file(self, reference_filename, output_filename):
reference_basename = os.path.basename(reference_filename)
cmd = ['diff',
'-u',
'-N',
reference_filename,
- work_filename]
+ output_filename]
try:
self.run_command(cmd)
except ScriptError, e:
@@ -209,43 +212,49 @@ class BindingsTests(object):
print 'PASS: %s' % reference_basename
return True
- def identical_output_directory(self, work_directory):
+ def identical_output_files(self, output_directory):
file_pairs = [(os.path.join(reference_directory, output_file),
- os.path.join(work_directory, output_file))
- for output_file in os.listdir(work_directory)
+ os.path.join(output_directory, output_file))
+ for output_file in os.listdir(output_directory)
# FIXME: add option to compiler to not generate tables
if output_file != 'parsetab.py']
- return all([self.identical_file(reference_filename, work_filename)
- for (reference_filename, work_filename) in file_pairs])
+ return all([self.identical_file(reference_filename, output_filename)
+ for (reference_filename, output_filename) in file_pairs])
+
+ def no_excess_files(self):
+ generated_files = set(os.listdir(self.output_directory))
+ excess_files = [output_file
+ for output_file in os.listdir(reference_directory)
+ if output_file not in generated_files]
+ if excess_files:
+ print ('Excess reference files! '
+ '(probably cruft from renaming or deleting):\n' +
+ '\n'.join(excess_files))
+ return False
+ return True
def run_tests(self):
def generate_and_check_output_pl(idl_filename, directory):
- # Generate output into the reference directory if resetting
- # results, or a temp directory if not.
- if self.reset_results:
- work_directory = reference_directory
- else:
- work_directory = provider.newtempdir()
idl_path = os.path.join(directory, idl_filename)
- if self.generate_from_idl_pl(idl_path, work_directory):
+ if self.generate_from_idl_pl(idl_path):
return False
if self.reset_results:
if self.verbose:
print 'Reset results: %s' % input_file
return True
- return self.identical_output_directory(work_directory)
+ return self.identical_output_files(self.output_directory)
def generate_and_check_output_py(idl_filename):
if idl_filename in SKIP_PYTHON:
if self.verbose:
print 'SKIP: %s' % idl_filename
return True
- work_directory = provider.newtempdir()
+ output_directory_py = provider.newtempdir()
idl_path = os.path.join(input_directory, idl_filename)
- if self.generate_from_idl_py(idl_path, work_directory):
+ if self.generate_from_idl_py(idl_path, output_directory_py):
return False
# Detect changes
- return self.identical_output_directory(work_directory)
+ return self.identical_output_files(output_directory_py)
if self.reset_results:
passed = True
@@ -256,6 +265,7 @@ class BindingsTests(object):
passed &= all([generate_and_check_output_pl(input_file, directory)
for input_file in os.listdir(directory)
if input_file.endswith('.idl')])
+ passed &= self.no_excess_files()
if self.test_python:
if self.verbose:
print
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698