diff --git a/scm.py b/scm.py index 872b3fe05..f0b956ab4 100644 --- a/scm.py +++ b/scm.py @@ -659,6 +659,7 @@ class SVN(object): used. The diff will always use relative paths. """ + assert isinstance(filenames, (list, tuple)) previous_cwd = os.getcwd() root = root or SVN.GetCheckoutRoot(previous_cwd) root = os.path.normcase(os.path.join(root, '')) @@ -703,7 +704,14 @@ class SVN(object): rev = int(info.get('Copied From Rev')) assert srcurl.startswith(root) src = srcurl[len(root)+1:] - srcinfo = SVN.CaptureInfo(srcurl) + try: + srcinfo = SVN.CaptureInfo(srcurl) + except gclient_utils.CheckCallError, e: + if not 'Not a valid URL' in e.stderr: + raise + # Assume the file was deleted. No idea how to figure out at which + # revision the file was deleted. + srcinfo = {'Revision': rev} if (srcinfo.get('Revision') != rev and SVN.Capture(['diff', '-r', '%d:head' % rev, srcurl])): metaheaders.append("#$ svn cp -r %d %s %s " diff --git a/tests/presubmit_unittest.py b/tests/presubmit_unittest.py index 679a574e3..8c0c5d664 100755 --- a/tests/presubmit_unittest.py +++ b/tests/presubmit_unittest.py @@ -257,8 +257,8 @@ class PresubmitUnittest(PresubmitTestsBase): presubmit.scm.SVN.CaptureInfo(notfound).AndReturn({}) presubmit.scm.SVN.CaptureInfo(flap).AndReturn( {'URL': 'svn:/foo/boo/flap.h'}) - presubmit.scm.SVN.GenerateDiff(blat).AndReturn(self.presubmit_diffs) - presubmit.scm.SVN.GenerateDiff(notfound).AndReturn(self.presubmit_diffs) + presubmit.scm.SVN.GenerateDiff([blat]).AndReturn(self.presubmit_diffs) + presubmit.scm.SVN.GenerateDiff([notfound]).AndReturn(self.presubmit_diffs) self.mox.ReplayAll() @@ -776,8 +776,8 @@ class InputApiUnittest(PresubmitTestsBase): presubmit.scm.SVN.GetFileProperty(another, 'svn:mime-type').AndReturn(None) presubmit.scm.SVN.GetFileProperty(third_party, 'svn:mime-type' ).AndReturn(None) - presubmit.scm.SVN.GenerateDiff(blat).AndReturn(self.presubmit_diffs) - presubmit.scm.SVN.GenerateDiff(another).AndReturn(self.presubmit_diffs) + presubmit.scm.SVN.GenerateDiff([blat]).AndReturn(self.presubmit_diffs) + presubmit.scm.SVN.GenerateDiff([another]).AndReturn(self.presubmit_diffs) self.mox.ReplayAll()