OLD | NEW |
1 #!/usr/bin/python | 1 #!/usr/bin/python |
2 # Copyright (c) 2010 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2010 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 from shutil import rmtree | 8 from shutil import rmtree |
9 import tempfile | 9 import tempfile |
10 | 10 |
(...skipping 11 matching lines...) Expand all Loading... |
22 except scm.gclient_utils.Error, e: | 22 except scm.gclient_utils.Error, e: |
23 self.assertEquals(e.args[0], msg) | 23 self.assertEquals(e.args[0], msg) |
24 else: | 24 else: |
25 self.fail('%s not raised' % msg) | 25 self.fail('%s not raised' % msg) |
26 | 26 |
27 | 27 |
28 class BaseSCMTestCase(BaseTestCase): | 28 class BaseSCMTestCase(BaseTestCase): |
29 def setUp(self): | 29 def setUp(self): |
30 BaseTestCase.setUp(self) | 30 BaseTestCase.setUp(self) |
31 self.mox.StubOutWithMock(scm.gclient_utils, 'Popen') | 31 self.mox.StubOutWithMock(scm.gclient_utils, 'Popen') |
32 self.mox.StubOutWithMock(scm.gclient_utils, 'SubprocessCall') | 32 self.mox.StubOutWithMock(scm.gclient_utils, 'CheckCallAndFilter') |
33 self.mox.StubOutWithMock(scm.gclient_utils, 'SubprocessCallAndFilter') | 33 self.mox.StubOutWithMock(scm.gclient_utils, 'CheckCallAndFilterAndHeader') |
34 | 34 |
35 | 35 |
36 class RootTestCase(BaseSCMTestCase): | 36 class RootTestCase(BaseSCMTestCase): |
37 def testMembersChanged(self): | 37 def testMembersChanged(self): |
38 self.mox.ReplayAll() | 38 self.mox.ReplayAll() |
39 members = [ | 39 members = [ |
40 'GetCasedPath', 'GenFakeDiff', 'GIT', 'SVN', 'ValidateEmail', | 40 'GetCasedPath', 'GenFakeDiff', 'GIT', 'SVN', 'ValidateEmail', |
41 'cStringIO', 'gclient_utils', 'glob', 'os', 're', 'shutil', | 41 'cStringIO', 'gclient_utils', 'glob', 'os', 're', 'shutil', |
42 'subprocess', 'sys', 'tempfile', 'time', 'xml', | 42 'subprocess', 'sys', 'tempfile', 'time', 'xml', |
43 ] | 43 ] |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
122 self.enabled = self.CreateGitRepo(self.sample_git_import, self.base_path) | 122 self.enabled = self.CreateGitRepo(self.sample_git_import, self.base_path) |
123 self.fake_root = self.Dir() | 123 self.fake_root = self.Dir() |
124 | 124 |
125 def tearDown(self): | 125 def tearDown(self): |
126 rmtree(self.root_dir) | 126 rmtree(self.root_dir) |
127 SuperMoxBaseTestBase.tearDown(self) | 127 SuperMoxBaseTestBase.tearDown(self) |
128 | 128 |
129 def testMembersChanged(self): | 129 def testMembersChanged(self): |
130 self.mox.ReplayAll() | 130 self.mox.ReplayAll() |
131 members = [ | 131 members = [ |
132 'COMMAND', 'AssertVersion', 'Capture', 'CaptureStatus', | 132 'AssertVersion', 'Capture', 'CaptureStatus', |
133 'FetchUpstreamTuple', | 133 'FetchUpstreamTuple', |
134 'GenerateDiff', 'GetBranch', 'GetBranchRef', 'GetCheckoutRoot', | 134 'GenerateDiff', 'GetBranch', 'GetBranchRef', 'GetCheckoutRoot', |
135 'GetDifferentFiles', 'GetEmail', 'GetPatchName', 'GetSVNBranch', | 135 'GetDifferentFiles', 'GetEmail', 'GetPatchName', 'GetSVNBranch', |
136 'GetUpstreamBranch', 'IsGitSvn', 'RunAndFilterOutput', | 136 'GetUpstreamBranch', 'IsGitSvn', 'ShortBranchName', |
137 'ShortBranchName', | |
138 ] | 137 ] |
139 # If this test fails, you should add the relevant test. | 138 # If this test fails, you should add the relevant test. |
140 self.compareMembers(scm.GIT, members) | 139 self.compareMembers(scm.GIT, members) |
141 | 140 |
142 def testGetEmail(self): | 141 def testGetEmail(self): |
143 self.mox.StubOutWithMock(scm.GIT, 'Capture') | 142 self.mox.StubOutWithMock(scm.GIT, 'Capture') |
144 scm.GIT.Capture(['config', 'user.email'], self.fake_root, error_ok=True | 143 scm.GIT.Capture(['config', 'user.email'], self.fake_root, error_ok=True |
145 ).AndReturn(['mini@me.com', '']) | 144 ).AndReturn(['mini@me.com', '']) |
146 self.mox.ReplayAll() | 145 self.mox.ReplayAll() |
147 self.assertEqual(scm.GIT.GetEmail(self.fake_root), 'mini@me.com') | 146 self.assertEqual(scm.GIT.GetEmail(self.fake_root), 'mini@me.com') |
148 | 147 |
149 | 148 |
150 class SVNTestCase(BaseSCMTestCase): | 149 class SVNTestCase(BaseSCMTestCase): |
151 def setUp(self): | 150 def setUp(self): |
152 BaseSCMTestCase.setUp(self) | 151 BaseSCMTestCase.setUp(self) |
153 self.root_dir = self.Dir() | 152 self.root_dir = self.Dir() |
154 self.args = self.Args() | 153 self.args = self.Args() |
155 self.url = self.Url() | 154 self.url = self.Url() |
156 self.relpath = 'asf' | 155 self.relpath = 'asf' |
157 | 156 |
158 def testMembersChanged(self): | 157 def testMembersChanged(self): |
159 self.mox.ReplayAll() | 158 self.mox.ReplayAll() |
160 members = [ | 159 members = [ |
161 'COMMAND', 'AssertVersion', 'Capture', 'CaptureBaseRevision', | 160 'AssertVersion', 'Capture', 'CaptureBaseRevision', |
162 'CaptureHeadRevision', 'CaptureInfo', 'CaptureStatus', | 161 'CaptureHeadRevision', 'CaptureInfo', 'CaptureStatus', |
163 'current_version', 'DiffItem', 'GenerateDiff', | 162 'current_version', 'DiffItem', 'GenerateDiff', |
164 'GetCheckoutRoot', 'GetEmail', 'GetFileProperty', 'IsMoved', | 163 'GetCheckoutRoot', 'GetEmail', 'GetFileProperty', 'IsMoved', |
165 'IsMovedInfo', 'ReadSimpleAuth', 'Run', 'RunAndFilterOutput', | 164 'IsMovedInfo', 'ReadSimpleAuth', 'Run', 'RunAndGetFileList', |
166 'RunAndGetFileList', | |
167 ] | 165 ] |
168 # If this test fails, you should add the relevant test. | 166 # If this test fails, you should add the relevant test. |
169 self.compareMembers(scm.SVN, members) | 167 self.compareMembers(scm.SVN, members) |
170 | 168 |
171 def testGetCheckoutRoot(self): | 169 def testGetCheckoutRoot(self): |
172 self.mox.StubOutWithMock(scm.SVN, 'CaptureInfo') | 170 self.mox.StubOutWithMock(scm.SVN, 'CaptureInfo') |
173 self.mox.StubOutWithMock(scm, 'GetCasedPath') | 171 self.mox.StubOutWithMock(scm, 'GetCasedPath') |
174 scm.os.path.abspath(self.root_dir + 'x').AndReturn(self.root_dir) | 172 scm.os.path.abspath(self.root_dir + 'x').AndReturn(self.root_dir) |
175 scm.GetCasedPath(self.root_dir).AndReturn(self.root_dir) | 173 scm.GetCasedPath(self.root_dir).AndReturn(self.root_dir) |
176 result1 = { "Repository Root": "Some root" } | 174 result1 = { "Repository Root": "Some root" } |
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
308 ('? ', 'unversionned_file.txt'), | 306 ('? ', 'unversionned_file.txt'), |
309 ('M ', 'build\\internal\\essential.vsprops'), | 307 ('M ', 'build\\internal\\essential.vsprops'), |
310 ('A + ', 'chrome\\app\\d'), | 308 ('A + ', 'chrome\\app\\d'), |
311 ('MM ', 'chrome\\app\\DEPS'), | 309 ('MM ', 'chrome\\app\\DEPS'), |
312 ('C ', 'scripts\\master\\factory\\gclient_factory.py'), | 310 ('C ', 'scripts\\master\\factory\\gclient_factory.py'), |
313 ] | 311 ] |
314 self.assertEquals(sorted(info), sorted(expected)) | 312 self.assertEquals(sorted(info), sorted(expected)) |
315 | 313 |
316 def testRun(self): | 314 def testRun(self): |
317 param2 = 'bleh' | 315 param2 = 'bleh' |
318 scm.gclient_utils.SubprocessCall(['svn', 'foo', 'bar'], | 316 scm.gclient_utils.CheckCallAndFilterAndHeader( |
319 cwd=param2).AndReturn(None) | 317 ['svn', 'foo', 'bar'], cwd=param2, |
| 318 always=True).AndReturn(None) |
320 self.mox.ReplayAll() | 319 self.mox.ReplayAll() |
321 scm.SVN.Run(['foo', 'bar'], cwd=param2) | 320 scm.SVN.Run(['foo', 'bar'], cwd=param2) |
322 | 321 |
323 def testCaptureStatusEmpty(self): | 322 def testCaptureStatusEmpty(self): |
324 text = r"""<?xml version="1.0"?> | 323 text = r"""<?xml version="1.0"?> |
325 <status> | 324 <status> |
326 <target | 325 <target |
327 path="perf"> | 326 path="perf"> |
328 </target> | 327 </target> |
329 </status>""" | 328 </status>""" |
330 proc = self.mox.CreateMockAnything() | 329 proc = self.mox.CreateMockAnything() |
331 scm.gclient_utils.Popen(['svn', 'status', '--xml'], | 330 scm.gclient_utils.Popen(['svn', 'status', '--xml'], |
332 cwd=None, | 331 cwd=None, |
333 stderr=None, | 332 stderr=None, |
334 stdout=scm.subprocess.PIPE).AndReturn(proc) | 333 stdout=scm.subprocess.PIPE).AndReturn(proc) |
335 proc.communicate().AndReturn((text, 0)) | 334 proc.communicate().AndReturn((text, 0)) |
336 self.mox.ReplayAll() | 335 self.mox.ReplayAll() |
337 info = scm.SVN.CaptureStatus(None) | 336 info = scm.SVN.CaptureStatus(None) |
338 self.assertEquals(info, []) | 337 self.assertEquals(info, []) |
339 | 338 |
340 | 339 |
341 if __name__ == '__main__': | 340 if __name__ == '__main__': |
342 import unittest | 341 import unittest |
343 unittest.main() | 342 unittest.main() |
344 | 343 |
345 # vim: ts=2:sw=2:tw=80:et: | 344 # vim: ts=2:sw=2:tw=80:et: |
OLD | NEW |