Index: tests/gclient_scm_test.py |
diff --git a/tests/gclient_scm_test.py b/tests/gclient_scm_test.py |
index 370e75f39e4c95f5bbc0eaea1fe34c23cf48db2d..f8516dba95fe93193931daaf0fc5446b631e9f81 100755 |
--- a/tests/gclient_scm_test.py |
+++ b/tests/gclient_scm_test.py |
@@ -1376,6 +1376,80 @@ class UnmanagedGitWrapperTestCase(BaseGitWrapperTestCase): |
self.checkstdout('________ unmanaged solution; skipping .\n') |
+class GitParseRevisionTestCase(unittest.TestCase): |
+ """Tests the 'GitWrapper._ResolveLocalRef' function.""" |
+ |
+ def setUp(self): |
+ self.repo = gclient_scm.GitWrapper('fake/fake.git') |
+ |
+ def _assertMapped(self, revision): |
+ self.assertTrue(self.repo._ParseRevision(revision)['mapped']) |
+ def _assertNotMapped(self, revision): |
+ self.assertFalse(self.repo._ParseRevision(revision)['mapped']) |
+ |
+ def testLocalRefs(self): |
+ self._assertMapped('refs/heads/master') |
+ self._assertMapped('refs/heads/some_branch') |
+ self._assertMapped('origin/master') |
+ self._assertMapped('refs/remotes/origin/master') |
+ |
+ def testRemoteRefs(self): |
+ self._assertNotMapped('refs/remotes/other/master') |
+ self._assertNotMapped('refs/other') |
+ |
+ def testNonRefs(self): |
+ self._assertMapped('1d229271928d3f9e2bb0375bd6ce5db6c6d348d9') |
+ self._assertMapped('1d2292') |
+ self._assertMapped('my_branch') |
+ |
+ def testFetchRefspec(self): |
+ def r(revision): |
+ return self.repo._ParseRevision(revision)['fetch_refspec'] |
+ |
+ self.assertEquals(r('master'), 'master') |
+ self.assertEquals(r('refs/heads/master'), 'master') |
+ self.assertEquals(r('refs/remotes/origin/master'), 'master') |
+ self.assertEquals(r('refs/other'), 'refs/other:refs/other') |
+ self.assertEquals( |
+ r('refs/remotes/other/master'), |
+ 'refs/remotes/other/master:refs/remotes/other/master') |
+ self.assertEquals( |
+ r('refs/for/master'), |
+ 'refs/for/master:refs/for/master') |
+ |
+ def testType(self): |
+ def assertBranch(rev): |
+ self.assertEquals(self.repo._ParseRevision(rev)['type'], 'branch') |
+ def assertHash(rev): |
+ self.assertEquals(self.repo._ParseRevision(rev)['type'], 'hash') |
+ |
+ assertBranch('refs/heads/master') |
+ assertBranch('refs/remotes/origin/master') |
+ assertBranch('origin/master') |
+ assertBranch('refs/heads/some_branch') |
+ assertBranch('refs/remotes/origin/some_branch') |
+ assertBranch('origin/some_branch') |
+ |
+ assertHash('1d229271928d3f9e2bb0375bd6ce5db6c6d348d9') |
+ assertHash('1d22927') |
+ |
+ def testRevisionLocalization(self): |
+ def r(revision): |
+ return self.repo._ParseRevision(revision)['revision'] |
+ |
+ self.assertEquals(r('refs/heads/master'), 'refs/heads/master') |
+ self.assertEquals( |
+ r('refs/remotes/origin/master'), |
+ 'refs/remotes/origin/master') |
+ self.assertEquals(r('origin/master'), 'refs/heads/master') |
+ self.assertEquals(r('origin/other'), 'refs/heads/other') |
+ |
+ self.assertEquals( |
+ r('1d229271928d3f9e2bb0375bd6ce5db6c6d348d9'), |
+ '1d229271928d3f9e2bb0375bd6ce5db6c6d348d9') |
+ self.assertEquals(r('1d22927'), '1d22927') |
+ |
+ |
if __name__ == '__main__': |
if '-v' in sys.argv: |
logging.basicConfig( |