| Index: Tools/Scripts/webkitpy/bindings/main.py
|
| diff --git a/Tools/Scripts/webkitpy/bindings/main.py b/Tools/Scripts/webkitpy/bindings/main.py
|
| index 7396fa3ee3ee29a4dbcbbd9b304c67fcd3d6d5d6..9bfed180baed71ead798e6fc0920f50883cf8113 100644
|
| --- a/Tools/Scripts/webkitpy/bindings/main.py
|
| +++ b/Tools/Scripts/webkitpy/bindings/main.py
|
| @@ -25,9 +25,11 @@
|
| import fnmatch
|
| import os
|
| import cPickle as pickle
|
| -from shutil import rmtree
|
| +import shutil
|
| import tempfile
|
| +
|
| from webkitpy.common.checkout.scm.detection import detect_scm_system
|
| +from webkitpy.common.system import executive
|
| from webkitpy.common.system.executive import ScriptError
|
|
|
| PASS_MESSAGE = 'All tests PASS!'
|
| @@ -62,43 +64,51 @@ reference_event_names_filename = os.path.join(reference_directory, 'EventInterfa
|
|
|
| class ScopedTempFileProvider(object):
|
| def __init__(self):
|
| - self.files = []
|
| - self.directories = []
|
| -
|
| - def __del__(self):
|
| - for filename in self.files:
|
| - os.remove(filename)
|
| - for directory in self.directories:
|
| - rmtree(directory)
|
| -
|
| - def newtempfile(self):
|
| - file_handle, path = tempfile.mkstemp()
|
| - self.files.append(path)
|
| - return file_handle, path
|
| -
|
| - def newtempdir(self):
|
| - path = tempfile.mkdtemp()
|
| - self.directories.append(path)
|
| - return path
|
| -
|
| -provider = ScopedTempFileProvider()
|
| + self.file_handles = []
|
| + self.file_paths = []
|
| + self.dir_paths = []
|
| +
|
| + def __enter__(self):
|
| + return self
|
| +
|
| + def __exit__(self, exc_type, exc_value, traceback):
|
| + for file_handle in self.file_handles:
|
| + os.close(file_handle)
|
| + for file_path in self.file_paths:
|
| + os.remove(file_path)
|
| + for dir_path in self.dir_paths:
|
| + # Temporary directories are used as output directories, so they
|
| + # contains unknown files (they aren't empty), hence use rmtree
|
| + shutil.rmtree(dir_path)
|
| +
|
| + def new_temp_file(self):
|
| + file_handle, file_path = tempfile.mkstemp()
|
| + self.file_handles.append(file_handle)
|
| + self.file_paths.append(file_path)
|
| + return file_handle, file_path
|
| +
|
| + def new_temp_dir(self):
|
| + dir_path = tempfile.mkdtemp()
|
| + self.dir_paths.append(dir_path)
|
| + return dir_path
|
|
|
|
|
| class BindingsTests(object):
|
| - def __init__(self, reset_results, test_python, verbose, executive):
|
| + def __init__(self, reset_results, test_python, verbose, provider):
|
| self.reset_results = reset_results
|
| self.test_python = test_python
|
| self.verbose = verbose
|
| - self.executive = executive
|
| - _, self.interface_dependencies_filename = provider.newtempfile()
|
| - _, self.interfaces_info_filename = provider.newtempfile()
|
| + self.executive = executive.Executive()
|
| + self.provider = provider
|
| + _, self.interface_dependencies_filename = provider.new_temp_file()
|
| + _, self.interfaces_info_filename = provider.new_temp_file()
|
| # Generate output into the reference directory if resetting results, or
|
| # a temp directory if not.
|
| if reset_results:
|
| self.output_directory = reference_directory
|
| else:
|
| - self.output_directory = provider.newtempdir()
|
| - self.output_directory_py = provider.newtempdir()
|
| + self.output_directory = provider.new_temp_dir()
|
| + self.output_directory_py = provider.new_temp_dir()
|
| self.event_names_filename = os.path.join(self.output_directory, 'EventInterfaces.in')
|
|
|
| def run_command(self, cmd):
|
| @@ -156,7 +166,7 @@ class BindingsTests(object):
|
| return idl_paths
|
|
|
| def write_list_file(idl_paths):
|
| - list_file, list_filename = provider.newtempfile()
|
| + list_file, list_filename = self.provider.new_temp_file()
|
| list_contents = ''.join(idl_path + '\n'
|
| for idl_path in idl_paths)
|
| os.write(list_file, list_contents)
|
| @@ -165,11 +175,11 @@ class BindingsTests(object):
|
| def compute_interfaces_info(idl_files_list_filename,
|
| event_names_filename):
|
| # Dummy files, required by compute_interfaces_info but not checked
|
| - _, window_constructors_file = provider.newtempfile()
|
| - _, workerglobalscope_constructors_file = provider.newtempfile()
|
| - _, sharedworkerglobalscope_constructors_file = provider.newtempfile()
|
| - _, dedicatedworkerglobalscope_constructors_file = provider.newtempfile()
|
| - _, serviceworkersglobalscope_constructors_file = provider.newtempfile()
|
| + _, window_constructors_file = self.provider.new_temp_file()
|
| + _, workerglobalscope_constructors_file = self.provider.new_temp_file()
|
| + _, sharedworkerglobalscope_constructors_file = self.provider.new_temp_file()
|
| + _, dedicatedworkerglobalscope_constructors_file = self.provider.new_temp_file()
|
| + _, serviceworkersglobalscope_constructors_file = self.provider.new_temp_file()
|
| cmd = ['python',
|
| 'bindings/scripts/compute_interfaces_info.py',
|
| '--idl-files-list', idl_files_list_filename,
|
| @@ -206,7 +216,7 @@ class BindingsTests(object):
|
| # computing dependencies for the real Node.idl file.
|
| #
|
| # Don't overwrite the event names file generated for testing IDLs
|
| - _, dummy_event_names_filename = provider.newtempfile()
|
| + _, dummy_event_names_filename = self.provider.new_temp_file()
|
| compute_interfaces_info(all_idl_files_list_filename,
|
| dummy_event_names_filename)
|
| except ScriptError, e:
|
| @@ -310,3 +320,8 @@ class BindingsTests(object):
|
| print
|
| print FAIL_MESSAGE
|
| return -1
|
| +
|
| +
|
| +def run_bindings_tests(reset_results, test_python, verbose):
|
| + with ScopedTempFileProvider() as provider:
|
| + return BindingsTests(reset_results, test_python, verbose, provider).main()
|
|
|