Handle cases where '.' show up in svn status and is deleted
This would cause random try job failures, especially when switching around
DEPS <-> svn directory conversion.
R=dpranke@chromium.org
BUG=
TEST=
Review URL: http://codereview.chromium.org/8431021
git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@108144 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/tests/gclient_scm_test.py b/tests/gclient_scm_test.py
index 44d23aa..908b322 100755
--- a/tests/gclient_scm_test.py
+++ b/tests/gclient_scm_test.py
@@ -196,6 +196,7 @@
gclient_scm.os.path.isdir(self.base_path).AndReturn(True)
gclient_scm.os.path.isdir(join(self.base_path, '.svn')).AndReturn(True)
gclient_scm.scm.SVN.CaptureStatus(self.base_path).AndReturn([])
+ gclient_scm.os.path.isdir(self.base_path).AndReturn(True)
gclient_scm.scm.SVN.RunAndGetFileList(
options.verbose,
['update', '--revision', 'BASE', '--ignore-externals'],
@@ -222,6 +223,7 @@
gclient_scm.os.path.islink(file_path).AndReturn(False)
gclient_scm.os.path.isdir(file_path).AndReturn(True)
gclient_scm.gclient_utils.RemoveDirectory(file_path)
+ gclient_scm.os.path.isdir(self.base_path).AndReturn(True)
gclient_scm.scm.SVN.RunAndGetFileList(
options.verbose,
['update', '--revision', 'BASE', '--ignore-externals'],
@@ -235,6 +237,33 @@
scm.revert(options, self.args, file_list2)
self.checkstdout(('%s\n' % file_path))
+ def testRevertDot(self):
+ self.mox.StubOutWithMock(gclient_scm.SVNWrapper, 'update')
+ options = self.Options(verbose=True)
+ gclient_scm.os.path.isdir(self.base_path).AndReturn(True)
+ gclient_scm.os.path.isdir(join(self.base_path, '.svn')).AndReturn(True)
+ items = [
+ ('~ ', '.'),
+ ]
+ gclient_scm.scm.SVN.CaptureStatus(self.base_path).AndReturn(items)
+ file_path = join(self.base_path, '.')
+ gclient_scm.os.path.exists(file_path).AndReturn(True)
+ gclient_scm.os.path.isfile(file_path).AndReturn(False)
+ gclient_scm.os.path.islink(file_path).AndReturn(False)
+ gclient_scm.os.path.isdir(file_path).AndReturn(True)
+ gclient_scm.gclient_utils.RemoveDirectory(file_path)
+ gclient_scm.os.path.isdir(self.base_path).AndReturn(False)
+ # The mock is unbound so self is not necessary.
+ # pylint: disable=E1120
+ gclient_scm.SVNWrapper.update(options, [], ['.'])
+
+ self.mox.ReplayAll()
+ scm = self._scm_wrapper(url=self.url, root_dir=self.root_dir,
+ relpath=self.relpath)
+ file_list2 = []
+ scm.revert(options, self.args, file_list2)
+ self.checkstdout(('%s\n' % file_path))
+
def testStatus(self):
options = self.Options(verbose=True)
gclient_scm.os.path.isdir(self.base_path).AndReturn(True)