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

Unified Diff: tests/scm_unittest.py

Issue 8382030: depot_tools: Add git svn find-rev for safesync_url parsing (commonly LKGR link). (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/depot_tools/
Patch Set: changing more occurrences of SVN to Svn Created 9 years 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 | « tests/gclient_scm_test.py ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tests/scm_unittest.py
diff --git a/tests/scm_unittest.py b/tests/scm_unittest.py
index 2fbfe3dcfeef58c00b590809046b6bcf18ef51b8..a69b7cd8db9b7715916b55f9e2d290d8bf688909 100755
--- a/tests/scm_unittest.py
+++ b/tests/scm_unittest.py
@@ -48,10 +48,24 @@ class RootTestCase(BaseSCMTestCase):
def testMembersChanged(self):
self.mox.ReplayAll()
members = [
- 'ElementTree', 'GetCasedPath', 'GenFakeDiff', 'GIT', 'SVN',
+ 'cStringIO',
+ 'determine_scm',
+ 'ElementTree',
+ 'gclient_utils',
+ 'GenFakeDiff',
+ 'GetCasedPath',
+ 'GIT',
+ 'glob',
+ 'logging',
+ 'only_int',
+ 'os',
+ 're',
+ 'subprocess2',
+ 'SVN',
+ 'sys',
+ 'tempfile',
+ 'time',
'ValidateEmail',
- 'cStringIO', 'determine_scm', 'gclient_utils', 'glob', 'logging',
- 'only_int', 'os', 're', 'subprocess2', 'sys', 'tempfile', 'time',
]
# If this test fails, you should add the relevant test.
self.compareMembers(scm, members)
@@ -60,12 +74,26 @@ class RootTestCase(BaseSCMTestCase):
class GitWrapperTestCase(BaseSCMTestCase):
def testMembersChanged(self):
members = [
- 'AssertVersion', 'Capture', 'CaptureStatus',
- 'FetchUpstreamTuple',
- 'GenerateDiff', 'GetBranch', 'GetBranchRef', 'GetCheckoutRoot',
- 'GetDifferentFiles', 'GetEmail', 'GetPatchName', 'GetSVNBranch',
- 'GetUpstreamBranch', 'IsGitSvn', 'MatchSvnGlob', 'ShortBranchName',
+ 'AssertVersion',
+ 'Capture',
+ 'CaptureStatus',
'current_version',
+ 'FetchUpstreamTuple',
+ 'GenerateDiff',
+ 'GetBranch',
+ 'GetBranchRef',
+ 'GetCheckoutRoot',
+ 'GetDifferentFiles',
+ 'GetEmail',
+ 'GetGitSvnHeadRev',
+ 'GetPatchName',
+ 'GetSha1ForSvnRev',
+ 'GetSVNBranch',
+ 'GetUpstreamBranch',
+ 'IsGitSvn',
+ 'IsValidRevision',
+ 'MatchSvnGlob',
+ 'ShortBranchName',
]
# If this test fails, you should add the relevant test.
self.compareMembers(scm.GIT, members)
@@ -89,6 +117,66 @@ class GitWrapperTestCase(BaseSCMTestCase):
'branches/*:refs/remotes/*',
True), 'refs/remotes/bleeding_edge')
+
+class RealGitTest(fake_repos.FakeReposTestBase):
+ def setUp(self):
+ super(RealGitTest, self).setUp()
+ self.enabled = self.FAKE_REPOS.set_up_git()
+ if self.enabled:
+ self.clone_dir = scm.os.path.join(self.FAKE_REPOS.git_root, 'repo_1')
+
+ def testIsValidRevision(self):
+ if not self.enabled:
+ return
+ # Sha1's are [0-9a-z]{32}, so starting with a 'z' or 'r' should always fail.
+ self.assertFalse(scm.GIT.IsValidRevision(cwd=self.clone_dir, rev='zebra'))
+ self.assertFalse(scm.GIT.IsValidRevision(cwd=self.clone_dir, rev='r123456'))
+ # Valid cases
+ first_rev = self.githash('repo_1', 1)
+ self.assertTrue(scm.GIT.IsValidRevision(cwd=self.clone_dir, rev=first_rev))
+ self.assertTrue(scm.GIT.IsValidRevision(cwd=self.clone_dir, rev='HEAD'))
+
+
+class RealGitSvnTest(fake_repos.FakeReposTestBase):
+ def setUp(self):
+ super(RealGitSvnTest, self).setUp()
+ self.enabled = self.FAKE_REPOS.set_up_git() and self.FAKE_REPOS.set_up_svn()
+ if self.enabled:
+ self.tree_name = 'git-svn'
+ self.svn_url = scm.os.path.join(self.FAKE_REPOS.svn_base, 'trunk')
+ self.clone_dir = scm.os.path.join(self.FAKE_REPOS.git_root,
+ self.tree_name)
+ scm.os.makedirs(self.clone_dir)
+ self._capture(['svn', 'clone', '-q', '-q', self.svn_url, self.clone_dir])
+ # git rev-list gives revisions in reverse chronological order.
+ hashes = reversed(self._capture(['rev-list', 'HEAD']).splitlines())
+ # We insert a null value at 0 to do 1-based indexing, not 0-based, as SVN
+ # revisions are 1-based (i.e. they start at r1, not r0).
+ self.git_hashes = ([None] + list(hashes))
+
+ def tearDown(self):
+ scm.gclient_utils.rmtree(self.clone_dir)
+
+ def _capture(self, cmd, **kwargs):
+ kwargs.setdefault('cwd', self.clone_dir)
+ return scm.GIT.Capture(cmd, **kwargs)
+
+ def testGetGitSvnHeadRev(self):
+ if not self.enabled:
+ return
+ self.assertEquals(scm.GIT.GetGitSvnHeadRev(cwd=self.clone_dir), 2)
+ self._capture(['reset', '--hard', 'HEAD^'])
+ self.assertEquals(scm.GIT.GetGitSvnHeadRev(cwd=self.clone_dir), 1)
+
+ def testGetGetSha1ForSvnRev(self):
+ if not self.enabled:
+ return
+ self.assertEquals(scm.GIT.GetSha1ForSvnRev(cwd=self.clone_dir, rev=1),
+ self.git_hashes[1])
+ self.assertEquals(scm.GIT.GetSha1ForSvnRev(cwd=self.clone_dir, rev=2),
+ self.git_hashes[2])
+
+
class SVNTestCase(BaseSCMTestCase):
def setUp(self):
BaseSCMTestCase.setUp(self)
@@ -98,11 +186,24 @@ class SVNTestCase(BaseSCMTestCase):
def testMembersChanged(self):
self.mox.ReplayAll()
members = [
- 'AssertVersion', 'Capture', 'CaptureRevision', 'CaptureLocalInfo',
+ 'AssertVersion',
+ 'Capture',
+ 'CaptureLocalInfo',
'CaptureRemoteInfo',
- 'CaptureStatus', 'current_version', 'DiffItem', 'GenerateDiff',
- 'GetCheckoutRoot', 'GetEmail', 'GetFileProperty', 'IsMoved',
- 'IsMovedInfo', 'ReadSimpleAuth', 'Revert', 'RunAndGetFileList',
+ 'CaptureRevision',
+ 'CaptureStatus',
+ 'current_version',
+ 'DiffItem',
+ 'GenerateDiff',
+ 'GetCheckoutRoot',
+ 'GetEmail',
+ 'GetFileProperty',
+ 'IsMoved',
+ 'IsMovedInfo',
+ 'IsValidRevision',
+ 'ReadSimpleAuth',
+ 'Revert',
+ 'RunAndGetFileList',
]
# If this test fails, you should add the relevant test.
self.compareMembers(scm.SVN, members)
@@ -288,6 +389,19 @@ class RealSvnTest(fake_repos.FakeReposTestBase):
# Checkout and verify the tree.
self.assertTree(self.tree, self.svn_root)
+ def testIsValidRevision(self):
+ if not self.enabled:
+ return
+ url_at_rev = self.svn_base + 'trunk/third_party@%s'
+ # Invalid or non-existent.
+ self.assertFalse(scm.SVN.IsValidRevision('url://totally_invalid/trunk/foo'))
+ self.assertFalse(scm.SVN.IsValidRevision(url_at_rev % 0))
+ self.assertFalse(scm.SVN.IsValidRevision(url_at_rev % 123))
+ # Valid.
+ self.assertTrue(scm.SVN.IsValidRevision(url_at_rev % 1))
+ self.assertTrue(scm.SVN.IsValidRevision(url_at_rev % 2))
+ self.assertTrue(scm.SVN.IsValidRevision(url_at_rev % 'HEAD'))
+
def testRevert(self):
if not self.enabled:
return
« no previous file with comments | « tests/gclient_scm_test.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698