Chromium Code Reviews| Index: third_party/WebKit/Tools/Scripts/merge-layout-test-results |
| diff --git a/third_party/WebKit/Tools/Scripts/merge-layout-test-results b/third_party/WebKit/Tools/Scripts/merge-layout-test-results |
| index 80a2d416930763cbdbb8cd7d8f6e312b872109c5..a9088217c8fe3e746093f9d435380351e5f72834 100755 |
| --- a/third_party/WebKit/Tools/Scripts/merge-layout-test-results |
| +++ b/third_party/WebKit/Tools/Scripts/merge-layout-test-results |
| @@ -8,47 +8,18 @@ import argparse |
| import json |
| import logging |
| import os |
| +import stat |
| import shutil |
| import sys |
| import tempfile |
| import time |
| +from webkitpy.common.system.filesystem import FileSystem |
| from webkitpy.common.system.log_utils import configure_logging |
| from webkitpy.layout_tests import merge_results |
| # ------------------------------------------------------------------------ |
| -def rmtree(dirname): |
| - # Attempt to remove a directory tree. We try multiple times as on Windows a |
| - # process which is currently closing could still have a file open in the |
| - # directory. |
| - logging.info('Removing %s', dirname) |
| - errors = [] |
| - def onerror(func, path, exc_info): |
| - errors.append(path) |
| - logging.exception('Failed at %s %s: %r', func, path, exc_info) |
| - |
| - attempts = 0 |
| - while attempts < 5: |
| - del errors[:] |
| - shutil.rmtree(dirname, onerror=onerror) |
| - if not errors: |
| - break |
| - attempts += 1 |
| - time.sleep(1) |
| - |
| - # Check the path is gone. |
| - if not os.path.exists(dirname): |
| - return |
| - |
| - logging.warning('Unable to remove %s', dirname) |
| - for dirpath, dirnames, filenames in os.walk(dirname, onerror=onerror, topdown=False): |
| - for fname in filenames: |
| - logging.warning('File %s still in output dir.', os.path.join(dirpath, fname)) |
| - for dname in dirnames: |
| - logging.warning('Dir %s still in output dir.', os.path.join(dirpath, dname)) |
| - |
| - |
| def main(argv): |
| parser = argparse.ArgumentParser() |
| @@ -186,14 +157,20 @@ directory. The script will be given the arguments plus |
| merger = merge_results.LayoutTestDirMerger( |
| results_json_value_overrides=results_json_value_overrides, |
| results_json_allow_unknown_if_matching=args.results_json_allow_unknown_if_matching) |
| + |
| if os.path.exists(args.output_directory): |
| logging.warning('Output directory exists %r', args.output_directory) |
| - if args.remove_existing_output_directory: |
| - rmtree(args.output_directory) |
| - elif not args.allow_existing_output_directory: |
| + if not args.allow_existing_output_directory: |
| raise IOError( |
| ('Output directory %s exists!\n' |
| 'Use --allow-existing-output-directory to continue') % args.output_directory) |
| + else: |
| + os.makedirs(args.output_directory) |
| + |
| + if args.remove_existing_output_directory and not FileSystem().remove_contents(args.output_directory): |
|
mcgreevy_g
2017/05/29 07:00:54
It's a bit odd to remove the contents of a directo
mithro
2017/05/29 07:14:54
Done.
|
| + raise IOError( |
| + ('Unable to remove output directory %s contents!\n' |
| + 'See log output for errors.') % args.output_directory) |
| merger.merge(args.output_directory, args.input_directories) |