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

Unified Diff: third_party/WebKit/Tools/Scripts/merge-layout-test-results

Issue 2896423004: webkitpy: Remove contents of directory. (Closed)
Patch Set: Created 3 years, 7 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 side-by-side diff with in-line comments
Download patch
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):
+ 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)

Powered by Google App Engine
This is Rietveld 408576698