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

Unified Diff: tests/fake_repos.py

Issue 6628032: Shorten RemoveDirectory and rename to rmtree. Remove rmtree from fake_repos. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/depot_tools
Patch Set: rebase against trunk Created 9 years, 9 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
« no previous file with comments | « gclient_utils.py ('k') | tests/gclient_utils_test.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tests/fake_repos.py
diff --git a/tests/fake_repos.py b/tests/fake_repos.py
index 4998575842e2323f7836619b9df0229d2d245f45..5f8c54ef823a59560a0bd97d61615df35f770d61 100755
--- a/tests/fake_repos.py
+++ b/tests/fake_repos.py
@@ -7,20 +7,18 @@
import atexit
import datetime
-import errno
import logging
import os
import pprint
import re
import socket
-import stat
import subprocess
import sys
import tempfile
-import time
# trial_dir must be first for non-system libraries.
from tests import trial_dir
+import gclient_utils
import scm
## Utility functions
@@ -66,71 +64,6 @@ def add_kill():
subprocess.Popen.kill = kill_nix
-def rmtree(*path):
- """Recursively removes a directory, even if it's marked read-only.
-
- Remove the directory located at *path, if it exists.
-
- shutil.rmtree() doesn't work on Windows if any of the files or directories
- are read-only, which svn repositories and some .svn files are. We need to
- be able to force the files to be writable (i.e., deletable) as we traverse
- the tree.
-
- Even with all this, Windows still sometimes fails to delete a file, citing
- a permission error (maybe something to do with antivirus scans or disk
- indexing). The best suggestion any of the user forums had was to wait a
- bit and try again, so we do that too. It's hand-waving, but sometimes it
- works. :/
- """
- file_path = os.path.join(*path)
- if not os.path.exists(file_path):
- return
-
- def RemoveWithRetry_win(rmfunc, path):
- os.chmod(path, stat.S_IWRITE)
- if win32_api_avail:
- win32api.SetFileAttributes(path, win32con.FILE_ATTRIBUTE_NORMAL)
- try:
- return rmfunc(path)
- except EnvironmentError, e:
- if e.errno != errno.EACCES:
- raise
- print 'Failed to delete %s: trying again' % repr(path)
- time.sleep(0.1)
- return rmfunc(path)
-
- def RemoveWithRetry_non_win(rmfunc, path):
- if os.path.islink(path):
- return os.remove(path)
- else:
- return rmfunc(path)
-
- win32_api_avail = False
- remove_with_retry = None
- if sys.platform.startswith('win'):
- # Some people don't have the APIs installed. In that case we'll do without.
- try:
- win32api = __import__('win32api')
- win32con = __import__('win32con')
- win32_api_avail = True
- except ImportError:
- pass
- remove_with_retry = RemoveWithRetry_win
- else:
- remove_with_retry = RemoveWithRetry_non_win
-
- for root, dirs, files in os.walk(file_path, topdown=False):
- # For POSIX: making the directory writable guarantees removability.
- # Windows will ignore the non-read-only bits in the chmod value.
- os.chmod(root, 0770)
- for name in files:
- remove_with_retry(os.remove, os.path.join(root, name))
- for name in dirs:
- remove_with_retry(os.rmdir, os.path.join(root, name))
-
- remove_with_retry(os.rmdir, file_path)
-
-
def write(path, content):
f = open(path, 'wb')
f.write(content)
@@ -309,9 +242,9 @@ class FakeReposBase(object):
self.svnserve = None
if not self.trial.SHOULD_LEAK:
logging.debug('Removing %s' % self.svn_repo)
- rmtree(self.svn_repo)
+ gclient_utils.rmtree(self.svn_repo)
logging.debug('Removing %s' % self.svn_checkout)
- rmtree(self.svn_checkout)
+ gclient_utils.rmtree(self.svn_checkout)
else:
return False
return True
@@ -330,7 +263,7 @@ class FakeReposBase(object):
self.wait_for_port_to_free(self.git_port)
if not self.trial.SHOULD_LEAK:
logging.debug('Removing %s' % self.git_root)
- rmtree(self.git_root)
+ gclient_utils.rmtree(self.git_root)
else:
return False
return True
« no previous file with comments | « gclient_utils.py ('k') | tests/gclient_utils_test.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698