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

Side by Side Diff: tests/scm_unittest.py

Issue 3307016: Change scm.SVN.Capture (Closed)
Patch Set: patchset 4 was wrong Created 10 years, 3 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
« tests/gclient_scm_test.py ('K') | « tests/gclient_scm_test.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/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 10 matching lines...) Expand all
21 fn(*args, **kwargs) 21 fn(*args, **kwargs)
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, 'CheckCall')
32 self.mox.StubOutWithMock(scm.gclient_utils, 'CheckCallAndFilter') 32 self.mox.StubOutWithMock(scm.gclient_utils, 'CheckCallAndFilter')
33 self.mox.StubOutWithMock(scm.gclient_utils, 'CheckCallAndFilterAndHeader') 33 self.mox.StubOutWithMock(scm.gclient_utils, 'CheckCallAndFilterAndHeader')
34 self.mox.StubOutWithMock(scm.gclient_utils, 'Popen')
34 35
35 36
36 class RootTestCase(BaseSCMTestCase): 37 class RootTestCase(BaseSCMTestCase):
37 def testMembersChanged(self): 38 def testMembersChanged(self):
38 self.mox.ReplayAll() 39 self.mox.ReplayAll()
39 members = [ 40 members = [
40 'GetCasedPath', 'GenFakeDiff', 'GIT', 'SVN', 'ValidateEmail', 41 'GetCasedPath', 'GenFakeDiff', 'GIT', 'SVN', 'ValidateEmail',
41 'cStringIO', 'gclient_utils', 'glob', 'os', 're', 'shutil', 42 'cStringIO', 'gclient_utils', 'glob', 'os', 're', 'shutil',
42 'subprocess', 'sys', 'tempfile', 'time', 'xml', 43 'subprocess', 'sys', 'tempfile', 'time', 'xml',
43 ] 44 ]
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
146 self.assertEqual(scm.GIT.GetEmail(self.fake_root), 'mini@me.com') 147 self.assertEqual(scm.GIT.GetEmail(self.fake_root), 'mini@me.com')
147 148
148 149
149 class SVNTestCase(BaseSCMTestCase): 150 class SVNTestCase(BaseSCMTestCase):
150 def setUp(self): 151 def setUp(self):
151 BaseSCMTestCase.setUp(self) 152 BaseSCMTestCase.setUp(self)
152 self.root_dir = self.Dir() 153 self.root_dir = self.Dir()
153 self.args = self.Args() 154 self.args = self.Args()
154 self.url = self.Url() 155 self.url = self.Url()
155 self.relpath = 'asf' 156 self.relpath = 'asf'
157 self.mox.StubOutWithMock(scm.SVN, 'Capture')
156 158
157 def testMembersChanged(self): 159 def testMembersChanged(self):
158 self.mox.ReplayAll() 160 self.mox.ReplayAll()
159 members = [ 161 members = [
160 'AssertVersion', 'Capture', 'CaptureBaseRevision', 162 'AssertVersion', 'Capture', 'CaptureRevision', 'CaptureInfo',
161 'CaptureHeadRevision', 'CaptureInfo', 'CaptureStatus', 163 'CaptureStatus', 'current_version', 'DiffItem', 'GenerateDiff',
162 'current_version', 'DiffItem', 'GenerateDiff',
163 'GetCheckoutRoot', 'GetEmail', 'GetFileProperty', 'IsMoved', 164 'GetCheckoutRoot', 'GetEmail', 'GetFileProperty', 'IsMoved',
164 'IsMovedInfo', 'ReadSimpleAuth', 'RunAndGetFileList', 165 'IsMovedInfo', 'ReadSimpleAuth', 'RunAndGetFileList',
165 ] 166 ]
166 # If this test fails, you should add the relevant test. 167 # If this test fails, you should add the relevant test.
167 self.compareMembers(scm.SVN, members) 168 self.compareMembers(scm.SVN, members)
168 169
169 def testGetCheckoutRoot(self): 170 def testGetCheckoutRoot(self):
170 self.mox.StubOutWithMock(scm.SVN, 'CaptureInfo') 171 self.mox.StubOutWithMock(scm.SVN, 'CaptureInfo')
171 self.mox.StubOutWithMock(scm, 'GetCasedPath') 172 self.mox.StubOutWithMock(scm, 'GetCasedPath')
172 scm.os.path.abspath(self.root_dir + 'x').AndReturn(self.root_dir) 173 scm.os.path.abspath(self.root_dir + 'x').AndReturn(self.root_dir)
173 scm.GetCasedPath(self.root_dir).AndReturn(self.root_dir) 174 scm.GetCasedPath(self.root_dir).AndReturn(self.root_dir)
174 result1 = { "Repository Root": "Some root" } 175 result1 = { "Repository Root": "Some root" }
175 scm.SVN.CaptureInfo(self.root_dir, print_error=False).AndReturn(result1) 176 scm.SVN.CaptureInfo(self.root_dir).AndReturn(result1)
176 results2 = { "Repository Root": "A different root" } 177 results2 = { "Repository Root": "A different root" }
177 scm.SVN.CaptureInfo(scm.os.path.dirname(self.root_dir), 178 scm.SVN.CaptureInfo(
178 print_error=False).AndReturn(results2) 179 scm.os.path.dirname(self.root_dir)).AndReturn(results2)
179 self.mox.ReplayAll() 180 self.mox.ReplayAll()
180 self.assertEquals(scm.SVN.GetCheckoutRoot(self.root_dir + 'x'), 181 self.assertEquals(scm.SVN.GetCheckoutRoot(self.root_dir + 'x'),
181 self.root_dir) 182 self.root_dir)
182 183
183 def testGetFileInfo(self): 184 def testGetFileInfo(self):
184 xml_text = r"""<?xml version="1.0"?> 185 xml_text = r"""<?xml version="1.0"?>
185 <info> 186 <info>
186 <entry kind="file" path="%s" revision="14628"> 187 <entry kind="file" path="%s" revision="14628">
187 <url>http://src.chromium.org/svn/trunk/src/chrome/app/d</url> 188 <url>http://src.chromium.org/svn/trunk/src/chrome/app/d</url>
188 <repository><root>http://src.chromium.org/svn</root></repository> 189 <repository><root>http://src.chromium.org/svn</root></repository>
189 <wc-info> 190 <wc-info>
190 <schedule>add</schedule> 191 <schedule>add</schedule>
191 <depth>infinity</depth> 192 <depth>infinity</depth>
192 <copy-from-url>http://src.chromium.org/svn/trunk/src/chrome/app/DEPS</copy-from- url> 193 <copy-from-url>http://src.chromium.org/svn/trunk/src/chrome/app/DEPS</copy-from- url>
193 <copy-from-rev>14628</copy-from-rev> 194 <copy-from-rev>14628</copy-from-rev>
194 <checksum>369f59057ba0e6d9017e28f8bdfb1f43</checksum> 195 <checksum>369f59057ba0e6d9017e28f8bdfb1f43</checksum>
195 </wc-info> 196 </wc-info>
196 </entry> 197 </entry>
197 </info> 198 </info>
198 """ % self.url 199 """ % self.url
199 self.mox.StubOutWithMock(scm.SVN, 'Capture') 200 scm.SVN.Capture(['info', '--xml', self.url]).AndReturn(xml_text)
200 scm.SVN.Capture(['info', '--xml', self.url], '.', True).AndReturn(xml_text)
201 expected = { 201 expected = {
202 'URL': 'http://src.chromium.org/svn/trunk/src/chrome/app/d', 202 'URL': 'http://src.chromium.org/svn/trunk/src/chrome/app/d',
203 'UUID': None, 203 'UUID': None,
204 'Repository Root': 'http://src.chromium.org/svn', 204 'Repository Root': 'http://src.chromium.org/svn',
205 'Schedule': 'add', 205 'Schedule': 'add',
206 'Copied From URL': 206 'Copied From URL':
207 'http://src.chromium.org/svn/trunk/src/chrome/app/DEPS', 207 'http://src.chromium.org/svn/trunk/src/chrome/app/DEPS',
208 'Copied From Rev': '14628', 208 'Copied From Rev': '14628',
209 'Path': self.url, 209 'Path': self.url,
210 'Revision': 14628, 210 'Revision': 14628,
211 'Node Kind': 'file', 211 'Node Kind': 'file',
212 } 212 }
213 self.mox.ReplayAll() 213 self.mox.ReplayAll()
214 file_info = scm.SVN.CaptureInfo(self.url, '.', True) 214 file_info = scm.SVN.CaptureInfo(self.url)
215 self.assertEquals(sorted(file_info.items()), sorted(expected.items())) 215 self.assertEquals(sorted(file_info.items()), sorted(expected.items()))
216 216
217 def testCaptureInfo(self): 217 def testCaptureInfo(self):
218 xml_text = """<?xml version="1.0"?> 218 xml_text = """<?xml version="1.0"?>
219 <info> 219 <info>
220 <entry 220 <entry
221 kind="dir" 221 kind="dir"
222 path="." 222 path="."
223 revision="35"> 223 revision="35">
224 <url>%s</url> 224 <url>%s</url>
225 <repository> 225 <repository>
226 <root>%s</root> 226 <root>%s</root>
227 <uuid>7b9385f5-0452-0410-af26-ad4892b7a1fb</uuid> 227 <uuid>7b9385f5-0452-0410-af26-ad4892b7a1fb</uuid>
228 </repository> 228 </repository>
229 <wc-info> 229 <wc-info>
230 <schedule>normal</schedule> 230 <schedule>normal</schedule>
231 <depth>infinity</depth> 231 <depth>infinity</depth>
232 </wc-info> 232 </wc-info>
233 <commit 233 <commit
234 revision="35"> 234 revision="35">
235 <author>maruel</author> 235 <author>maruel</author>
236 <date>2008-12-04T20:12:19.685120Z</date> 236 <date>2008-12-04T20:12:19.685120Z</date>
237 </commit> 237 </commit>
238 </entry> 238 </entry>
239 </info> 239 </info>
240 """ % (self.url, self.root_dir) 240 """ % (self.url, self.root_dir)
241 self.mox.StubOutWithMock(scm.SVN, 'Capture') 241 scm.SVN.Capture(['info', '--xml', self.url]).AndReturn(xml_text)
242 scm.SVN.Capture(['info', '--xml', self.url], '.', True).AndReturn(xml_text)
243 self.mox.ReplayAll() 242 self.mox.ReplayAll()
244 file_info = scm.SVN.CaptureInfo(self.url, '.', True) 243 file_info = scm.SVN.CaptureInfo(self.url)
245 expected = { 244 expected = {
246 'URL': self.url, 245 'URL': self.url,
247 'UUID': '7b9385f5-0452-0410-af26-ad4892b7a1fb', 246 'UUID': '7b9385f5-0452-0410-af26-ad4892b7a1fb',
248 'Revision': 35, 247 'Revision': 35,
249 'Repository Root': self.root_dir, 248 'Repository Root': self.root_dir,
250 'Schedule': 'normal', 249 'Schedule': 'normal',
251 'Copied From URL': None, 250 'Copied From URL': None,
252 'Copied From Rev': None, 251 'Copied From Rev': None,
253 'Path': '.', 252 'Path': '.',
254 'Node Kind': 'directory', 253 'Node Kind': 'directory',
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
286 <wc-status props="normal" item="conflicted" revision="14725"> 285 <wc-status props="normal" item="conflicted" revision="14725">
287 <commit revision="14633"> 286 <commit revision="14633">
288 <author>nsylvain@chromium.org</author> 287 <author>nsylvain@chromium.org</author>
289 <date>2009-04-27T19:37:17.977400Z</date> 288 <date>2009-04-27T19:37:17.977400Z</date>
290 </commit> 289 </commit>
291 </wc-status> 290 </wc-status>
292 </entry> 291 </entry>
293 </target> 292 </target>
294 </status> 293 </status>
295 """ 294 """
296 proc = self.mox.CreateMockAnything() 295 scm.SVN.Capture(['status', '--xml', '.']).AndReturn(text)
297 scm.gclient_utils.Popen(['svn', 'status', '--xml', '.'],
298 cwd=None,
299 stderr=None,
300 stdout=scm.subprocess.PIPE).AndReturn(proc)
301 proc.communicate().AndReturn((text, 0))
302 296
303 self.mox.ReplayAll() 297 self.mox.ReplayAll()
304 info = scm.SVN.CaptureStatus('.') 298 info = scm.SVN.CaptureStatus('.')
305 expected = [ 299 expected = [
306 ('? ', 'unversionned_file.txt'), 300 ('? ', 'unversionned_file.txt'),
307 ('M ', 'build\\internal\\essential.vsprops'), 301 ('M ', 'build\\internal\\essential.vsprops'),
308 ('A + ', 'chrome\\app\\d'), 302 ('A + ', 'chrome\\app\\d'),
309 ('MM ', 'chrome\\app\\DEPS'), 303 ('MM ', 'chrome\\app\\DEPS'),
310 ('C ', 'scripts\\master\\factory\\gclient_factory.py'), 304 ('C ', 'scripts\\master\\factory\\gclient_factory.py'),
311 ] 305 ]
312 self.assertEquals(sorted(info), sorted(expected)) 306 self.assertEquals(sorted(info), sorted(expected))
313 307
314 def testCaptureStatusEmpty(self): 308 def testCaptureStatusEmpty(self):
315 text = r"""<?xml version="1.0"?> 309 text = r"""<?xml version="1.0"?>
316 <status> 310 <status>
317 <target 311 <target
318 path="perf"> 312 path="perf">
319 </target> 313 </target>
320 </status>""" 314 </status>"""
321 proc = self.mox.CreateMockAnything() 315 scm.SVN.Capture(['status', '--xml']).AndReturn(text)
322 scm.gclient_utils.Popen(['svn', 'status', '--xml'],
323 cwd=None,
324 stderr=None,
325 stdout=scm.subprocess.PIPE).AndReturn(proc)
326 proc.communicate().AndReturn((text, 0))
327 self.mox.ReplayAll() 316 self.mox.ReplayAll()
328 info = scm.SVN.CaptureStatus(None) 317 info = scm.SVN.CaptureStatus(None)
329 self.assertEquals(info, []) 318 self.assertEquals(info, [])
330 319
331 320
332 if __name__ == '__main__': 321 if __name__ == '__main__':
333 import unittest 322 import unittest
334 unittest.main() 323 unittest.main()
335 324
336 # vim: ts=2:sw=2:tw=80:et: 325 # vim: ts=2:sw=2:tw=80:et:
OLDNEW
« tests/gclient_scm_test.py ('K') | « tests/gclient_scm_test.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698