OLD | NEW |
1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2012 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 scm.py.""" | 6 """Unit tests for scm.py.""" |
7 | 7 |
8 import logging | 8 import logging |
9 import os | 9 import os |
10 import sys | 10 import sys |
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
91 'GetPatchName', | 91 'GetPatchName', |
92 'GetSha1ForSvnRev', | 92 'GetSha1ForSvnRev', |
93 'GetSVNBranch', | 93 'GetSVNBranch', |
94 'GetUpstreamBranch', | 94 'GetUpstreamBranch', |
95 'IsGitSvn', | 95 'IsGitSvn', |
96 'IsInsideWorkTree', | 96 'IsInsideWorkTree', |
97 'IsValidRevision', | 97 'IsValidRevision', |
98 'IsWorkTreeDirty', | 98 'IsWorkTreeDirty', |
99 'MatchSvnGlob', | 99 'MatchSvnGlob', |
100 'ParseGitSvnSha1', | 100 'ParseGitSvnSha1', |
| 101 'RefToRemoteRef', |
101 'ShortBranchName', | 102 'ShortBranchName', |
102 ] | 103 ] |
103 # If this test fails, you should add the relevant test. | 104 # If this test fails, you should add the relevant test. |
104 self.compareMembers(scm.GIT, members) | 105 self.compareMembers(scm.GIT, members) |
105 | 106 |
106 def testGetEmail(self): | 107 def testGetEmail(self): |
107 self.mox.StubOutWithMock(scm.GIT, 'Capture') | 108 self.mox.StubOutWithMock(scm.GIT, 'Capture') |
108 scm.GIT.Capture(['config', 'user.email'], cwd=self.root_dir | 109 scm.GIT.Capture(['config', 'user.email'], cwd=self.root_dir |
109 ).AndReturn('mini@me.com') | 110 ).AndReturn('mini@me.com') |
110 self.mox.ReplayAll() | 111 self.mox.ReplayAll() |
111 self.assertEqual(scm.GIT.GetEmail(self.root_dir), 'mini@me.com') | 112 self.assertEqual(scm.GIT.GetEmail(self.root_dir), 'mini@me.com') |
112 | 113 |
113 def testMatchSvnGlob(self): | 114 def testMatchSvnGlob(self): |
114 self.assertEquals(scm.GIT.MatchSvnGlob( | 115 self.assertEquals(scm.GIT.MatchSvnGlob( |
115 'svn://svn.chromium.org/chrome/trunk/src', | 116 'svn://svn.chromium.org/chrome/trunk/src', |
116 'svn://svn.chromium.org/chrome', | 117 'svn://svn.chromium.org/chrome', |
117 'trunk/src:refs/remotes/origin/trunk', | 118 'trunk/src:refs/remotes/origin/trunk', |
118 False), 'refs/remotes/origin/trunk') | 119 False), 'refs/remotes/origin/trunk') |
119 self.assertEquals(scm.GIT.MatchSvnGlob( | 120 self.assertEquals(scm.GIT.MatchSvnGlob( |
120 'https://v8.googlecode.com/svn/branches/bleeding_edge', | 121 'https://v8.googlecode.com/svn/branches/bleeding_edge', |
121 'https://v8.googlecode.com/svn', | 122 'https://v8.googlecode.com/svn', |
122 'branches/*:refs/remotes/*', | 123 'branches/*:refs/remotes/*', |
123 True), 'refs/remotes/bleeding_edge') | 124 True), 'refs/remotes/bleeding_edge') |
124 | 125 |
| 126 def testRefToRemoteRefNoRemote(self): |
| 127 refs = { |
| 128 # local ref for upstream branch-head |
| 129 'refs/remotes/branch-heads/1234': ('refs/remotes/branch-heads/', |
| 130 '1234'), |
| 131 # upstream ref for branch-head |
| 132 'refs/branch-heads/1234': ('refs/remotes/branch-heads/', '1234'), |
| 133 # could be either local or upstream ref, assumed to refer to |
| 134 # upstream, but probably don't want to encourage refs like this. |
| 135 'branch-heads/1234': ('refs/remotes/branch-heads/', '1234'), |
| 136 # actively discouraging refs like this, should prepend with 'refs/' |
| 137 'remotes/branch-heads/1234': None, |
| 138 # might be non-"branch-heads" upstream branches, but can't resolve |
| 139 # without knowing the remote. |
| 140 'refs/heads/1234': None, |
| 141 'heads/1234': None, |
| 142 # underspecified, probably intended to refer to a local branch |
| 143 '1234': None, |
| 144 } |
| 145 for k, v in refs.items(): |
| 146 r = scm.GIT.RefToRemoteRef(k) |
| 147 self.assertEqual(r, v, msg='%s -> %s, expected %s' % (k, r, v)) |
| 148 |
| 149 def testRefToRemoteRefWithRemote(self): |
| 150 remote = 'origin' |
| 151 refs = { |
| 152 # This shouldn't be any different from the NoRemote() version. |
| 153 'refs/branch-heads/1234': ('refs/remotes/branch-heads/', '1234'), |
| 154 # local refs for upstream branch |
| 155 'refs/remotes/%s/foobar' % remote: ('refs/remotes/%s/' % remote, |
| 156 'foobar'), |
| 157 '%s/foobar' % remote: ('refs/remotes/%s/' % remote, 'foobar'), |
| 158 # upstream ref for branch |
| 159 'refs/heads/foobar': ('refs/remotes/%s/' % remote, 'foobar'), |
| 160 # could be either local or upstream ref, assumed to refer to |
| 161 # upstream, but probably don't want to encourage refs like this. |
| 162 'heads/foobar': ('refs/remotes/%s/' % remote, 'foobar'), |
| 163 # underspecified, probably intended to refer to a local branch |
| 164 'foobar': None, |
| 165 } |
| 166 for k, v in refs.items(): |
| 167 r = scm.GIT.RefToRemoteRef(k, remote) |
| 168 self.assertEqual(r, v, msg='%s -> %s, expected %s' % (k, r, v)) |
| 169 |
125 | 170 |
126 class RealGitTest(fake_repos.FakeReposTestBase): | 171 class RealGitTest(fake_repos.FakeReposTestBase): |
127 def setUp(self): | 172 def setUp(self): |
128 super(RealGitTest, self).setUp() | 173 super(RealGitTest, self).setUp() |
129 self.enabled = self.FAKE_REPOS.set_up_git() | 174 self.enabled = self.FAKE_REPOS.set_up_git() |
130 if self.enabled: | 175 if self.enabled: |
131 self.clone_dir = scm.os.path.join(self.FAKE_REPOS.git_root, 'repo_1') | 176 self.clone_dir = scm.os.path.join(self.FAKE_REPOS.git_root, 'repo_1') |
132 | 177 |
133 def testIsValidRevision(self): | 178 def testIsValidRevision(self): |
134 if not self.enabled: | 179 if not self.enabled: |
(...skipping 347 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
482 # Asserting the tree is not sufficient, svn status must come out clear too. | 527 # Asserting the tree is not sufficient, svn status must come out clear too. |
483 self.assertEquals('', self._capture(['status'])) | 528 self.assertEquals('', self._capture(['status'])) |
484 | 529 |
485 | 530 |
486 if __name__ == '__main__': | 531 if __name__ == '__main__': |
487 if '-v' in sys.argv: | 532 if '-v' in sys.argv: |
488 logging.basicConfig(level=logging.DEBUG) | 533 logging.basicConfig(level=logging.DEBUG) |
489 unittest.main() | 534 unittest.main() |
490 | 535 |
491 # vim: ts=2:sw=2:tw=80:et: | 536 # vim: ts=2:sw=2:tw=80:et: |
OLD | NEW |