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

Side by Side Diff: tests/gclient_scm_test.py

Issue 9379005: [depot_tools] Use git fetch to optimize the properly configured that use git-svn (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/depot_tools
Patch Set: removing less related changes because maruel@ likes reviews Created 8 years, 10 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « gclient_scm.py ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright (c) 2011 The Chromium Authors. All rights reserved. 2 # Copyright (c) 2011 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 """Unit tests for gclient_scm.py.""" 6 """Unit tests for gclient_scm.py."""
7 7
8 # pylint: disable=E1103 8 # pylint: disable=E1103
9 9
10 # Import before super_mox to keep valid references. 10 # Import before super_mox to keep valid references.
(...skipping 1020 matching lines...) Expand 10 before | Expand all | Expand 10 after
1031 # Pretend like the git-svn repo's HEAD is at r2. 1031 # Pretend like the git-svn repo's HEAD is at r2.
1032 self.mox.StubOutWithMock(gclient_scm.scm.GIT, 'GetGitSvnHeadRev', True) 1032 self.mox.StubOutWithMock(gclient_scm.scm.GIT, 'GetGitSvnHeadRev', True)
1033 gclient_scm.scm.GIT.GetGitSvnHeadRev(cwd=self.base_path).MultipleTimes( 1033 gclient_scm.scm.GIT.GetGitSvnHeadRev(cwd=self.base_path).MultipleTimes(
1034 ).AndReturn(2) 1034 ).AndReturn(2)
1035 1035
1036 self.mox.StubOutWithMock(gclient_scm.scm.GIT, 'GetSha1ForSvnRev', True) 1036 self.mox.StubOutWithMock(gclient_scm.scm.GIT, 'GetSha1ForSvnRev', True)
1037 # r1 -> first fake hash, r3 -> second fake hash. 1037 # r1 -> first fake hash, r3 -> second fake hash.
1038 gclient_scm.scm.GIT.GetSha1ForSvnRev(cwd=self.base_path, rev='1' 1038 gclient_scm.scm.GIT.GetSha1ForSvnRev(cwd=self.base_path, rev='1'
1039 ).AndReturn(self.fake_hash_1) 1039 ).AndReturn(self.fake_hash_1)
1040 gclient_scm.scm.GIT.GetSha1ForSvnRev(cwd=self.base_path, rev='3' 1040 gclient_scm.scm.GIT.GetSha1ForSvnRev(cwd=self.base_path, rev='3'
1041 ).AndReturn(self.fake_hash_2) 1041 ).MultipleTimes().AndReturn(self.fake_hash_2)
1042 1042
1043 # Ensure that we call git svn fetch if our LKGR is > the git-svn HEAD rev. 1043 # Ensure that we call git svn fetch if our LKGR is > the git-svn HEAD rev.
1044 self.mox.StubOutWithMock(gclient_scm.scm.GIT, 'Capture', True) 1044 self.mox.StubOutWithMock(gclient_scm.scm.GIT, 'Capture', True)
1045 gclient_scm.scm.GIT.Capture(['config', '--get', 'svn-remote.svn.fetch'],
1046 cwd=self.base_path).AndReturn('blah')
1047 gclient_scm.scm.GIT.Capture(['fetch'], cwd=self.base_path)
1048 gclient_scm.scm.GIT.Capture(['svn', 'fetch'], cwd=self.base_path)
1049 error = subprocess2.CalledProcessError(1, 'cmd', '/cwd', 'stdout', 'stderr')
1050 gclient_scm.scm.GIT.Capture(['config', '--get', 'svn-remote.svn.fetch'],
1051 cwd=self.base_path).AndRaise(error)
1045 gclient_scm.scm.GIT.Capture(['svn', 'fetch'], cwd=self.base_path) 1052 gclient_scm.scm.GIT.Capture(['svn', 'fetch'], cwd=self.base_path)
1046 1053
1047 self.mox.StubOutWithMock(gclient_scm.scm.GIT, 'IsGitSvn', True) 1054 self.mox.StubOutWithMock(gclient_scm.scm.GIT, 'IsGitSvn', True)
1048 gclient_scm.scm.GIT.IsGitSvn(cwd=self.base_path).MultipleTimes( 1055 gclient_scm.scm.GIT.IsGitSvn(cwd=self.base_path).MultipleTimes(
1049 ).AndReturn(True) 1056 ).AndReturn(True)
1050 1057
1051 self.mox.StubOutWithMock(gclient_scm.scm.GIT, 'IsValidRevision', True) 1058 self.mox.StubOutWithMock(gclient_scm.scm.GIT, 'IsValidRevision', True)
1052 gclient_scm.scm.GIT.IsValidRevision(cwd=self.base_path, rev=self.fake_hash_1 1059 gclient_scm.scm.GIT.IsValidRevision(cwd=self.base_path, rev=self.fake_hash_1
1053 ).AndReturn(True) 1060 ).AndReturn(True)
1054 gclient_scm.scm.GIT.IsValidRevision(cwd=self.base_path, rev=too_big 1061 gclient_scm.scm.GIT.IsValidRevision(cwd=self.base_path, rev=too_big
1055 ).AndReturn(False) 1062 ).AndReturn(False)
1056 1063
1057 gclient_scm.os.path.isdir(self.base_path).AndReturn(False) 1064 gclient_scm.os.path.isdir(self.base_path).AndReturn(False)
1058 gclient_scm.os.path.isdir(self.base_path).MultipleTimes().AndReturn(True) 1065 gclient_scm.os.path.isdir(self.base_path).MultipleTimes().AndReturn(True)
1059 1066
1060 self.mox.ReplayAll() 1067 self.mox.ReplayAll()
1061 1068
1062 git_svn_scm = self._scm_wrapper(url=self.url, root_dir=self.root_dir, 1069 git_svn_scm = self._scm_wrapper(url=self.url, root_dir=self.root_dir,
1063 relpath=self.relpath) 1070 relpath=self.relpath)
1064 # Without an existing checkout, this should fail. TODO(dbeam) Fix this. 1071 # Without an existing checkout, this should fail.
1072 # TODO(dbeam) Fix this. http://crbug.com/109184
1065 self.assertRaises(gclient_scm.gclient_utils.Error, 1073 self.assertRaises(gclient_scm.gclient_utils.Error,
1066 git_svn_scm.GetUsableRev, '1', options) 1074 git_svn_scm.GetUsableRev, '1', options)
1067 # Given an SVN revision with a git-svn checkout, it should be translated to 1075 # Given an SVN revision with a git-svn checkout, it should be translated to
1068 # a git sha1 and be usable. 1076 # a git sha1 and be usable.
1069 self.assertEquals(git_svn_scm.GetUsableRev('1', options), 1077 self.assertEquals(git_svn_scm.GetUsableRev('1', options),
1070 self.fake_hash_1) 1078 self.fake_hash_1)
1071 # Our fake HEAD rev is r2, so this should call git svn fetch to get more 1079 # Our fake HEAD rev is r2, so this should call git fetch and git svn fetch
1072 # revs (pymox will complain if this doesn't happen). 1080 # to get more revs (pymox will complain if this doesn't happen). We mock an
1081 # optimized checkout the first time, so this run should call git fetch.
1082 self.assertEquals(git_svn_scm.GetUsableRev('3', options),
1083 self.fake_hash_2)
1084 # The time we pretend we're not optimized, so no git fetch should fire.
1073 self.assertEquals(git_svn_scm.GetUsableRev('3', options), 1085 self.assertEquals(git_svn_scm.GetUsableRev('3', options),
1074 self.fake_hash_2) 1086 self.fake_hash_2)
1075 # Given a git sha1 with a git-svn checkout, it should be used as is. 1087 # Given a git sha1 with a git-svn checkout, it should be used as is.
1076 self.assertEquals(git_svn_scm.GetUsableRev(self.fake_hash_1, options), 1088 self.assertEquals(git_svn_scm.GetUsableRev(self.fake_hash_1, options),
1077 self.fake_hash_1) 1089 self.fake_hash_1)
1078 # We currently check for seemingly valid SVN revisions by assuming 6 digit 1090 # We currently check for seemingly valid SVN revisions by assuming 6 digit
1079 # numbers, so assure that numeric revs >= 1000000 don't work. 1091 # numbers, so assure that numeric revs >= 1000000 don't work.
1080 self.assertRaises(gclient_scm.gclient_utils.Error, 1092 self.assertRaises(gclient_scm.gclient_utils.Error,
1081 git_svn_scm.GetUsableRev, too_big, options) 1093 git_svn_scm.GetUsableRev, too_big, options)
1082 1094
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
1143 1155
1144 if __name__ == '__main__': 1156 if __name__ == '__main__':
1145 if '-v' in sys.argv: 1157 if '-v' in sys.argv:
1146 logging.basicConfig( 1158 logging.basicConfig(
1147 level=logging.DEBUG, 1159 level=logging.DEBUG,
1148 format='%(asctime).19s %(levelname)s %(filename)s:' 1160 format='%(asctime).19s %(levelname)s %(filename)s:'
1149 '%(lineno)s %(message)s') 1161 '%(lineno)s %(message)s')
1150 unittest.main() 1162 unittest.main()
1151 1163
1152 # vim: ts=2:sw=2:tw=80:et: 1164 # vim: ts=2:sw=2:tw=80:et:
OLDNEW
« no previous file with comments | « gclient_scm.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698