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 gclient_scm.py.""" | 6 """Unit tests for gclient_scm.py.""" |
7 | 7 |
8 # pylint: disable=E1103 | 8 # pylint: disable=E1103 |
9 | 9 |
10 # Import before super_mox to keep valid references. | 10 # Import before super_mox to keep valid references. |
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
171 'update', options, self.args) | 171 'update', options, self.args) |
172 | 172 |
173 def testRunCommandUnknown(self): | 173 def testRunCommandUnknown(self): |
174 # TODO(maruel): if ever used. | 174 # TODO(maruel): if ever used. |
175 pass | 175 pass |
176 | 176 |
177 def testRevertMissing(self): | 177 def testRevertMissing(self): |
178 options = self.Options(verbose=True) | 178 options = self.Options(verbose=True) |
179 gclient_scm.os.path.isdir(self.base_path).AndReturn(False) | 179 gclient_scm.os.path.isdir(self.base_path).AndReturn(False) |
180 gclient_scm.os.path.exists(self.base_path).AndReturn(False) | 180 gclient_scm.os.path.exists(self.base_path).AndReturn(False) |
181 gclient_scm.scm.SVN.Capture(['--version'], None | 181 gclient_scm.scm.SVN.Capture(['--version', '--quiet'], None |
182 ).AndReturn('svn, version 1.5.1 (r32289)') | 182 ).AndReturn('1.5.1') |
183 # It'll to a checkout instead. | 183 # It'll to a checkout instead. |
184 gclient_scm.os.path.exists(join(self.base_path, '.git')).AndReturn(False) | 184 gclient_scm.os.path.exists(join(self.base_path, '.git')).AndReturn(False) |
185 gclient_scm.os.path.exists(join(self.base_path, '.hg')).AndReturn(False) | 185 gclient_scm.os.path.exists(join(self.base_path, '.hg')).AndReturn(False) |
186 # Checkout. | 186 # Checkout. |
187 gclient_scm.os.path.exists(self.base_path).AndReturn(False) | 187 gclient_scm.os.path.exists(self.base_path).AndReturn(False) |
188 parent = gclient_scm.os.path.dirname(self.base_path) | 188 parent = gclient_scm.os.path.dirname(self.base_path) |
189 gclient_scm.os.path.exists(parent).AndReturn(False) | 189 gclient_scm.os.path.exists(parent).AndReturn(False) |
190 gclient_scm.os.makedirs(parent) | 190 gclient_scm.os.makedirs(parent) |
191 gclient_scm.os.path.exists(parent).AndReturn(True) | 191 gclient_scm.os.path.exists(parent).AndReturn(True) |
192 files_list = self.mox.CreateMockAnything() | 192 files_list = self.mox.CreateMockAnything() |
(...skipping 19 matching lines...) Expand all Loading... |
212 # Checkout. | 212 # Checkout. |
213 gclient_scm.os.path.exists(self.base_path).AndReturn(False) | 213 gclient_scm.os.path.exists(self.base_path).AndReturn(False) |
214 gclient_scm.os.path.exists(join(self.base_path, '.git')).AndReturn(False) | 214 gclient_scm.os.path.exists(join(self.base_path, '.git')).AndReturn(False) |
215 gclient_scm.os.path.exists(join(self.base_path, '.hg')).AndReturn(False) | 215 gclient_scm.os.path.exists(join(self.base_path, '.hg')).AndReturn(False) |
216 gclient_scm.os.path.exists(self.base_path).AndReturn(False) | 216 gclient_scm.os.path.exists(self.base_path).AndReturn(False) |
217 parent = gclient_scm.os.path.dirname(self.base_path) | 217 parent = gclient_scm.os.path.dirname(self.base_path) |
218 gclient_scm.os.path.exists(parent).AndReturn(False) | 218 gclient_scm.os.path.exists(parent).AndReturn(False) |
219 gclient_scm.os.makedirs(parent) | 219 gclient_scm.os.makedirs(parent) |
220 gclient_scm.os.path.exists(parent).AndReturn(True) | 220 gclient_scm.os.path.exists(parent).AndReturn(True) |
221 files_list = self.mox.CreateMockAnything() | 221 files_list = self.mox.CreateMockAnything() |
222 gclient_scm.scm.SVN.Capture(['--version'], None | 222 gclient_scm.scm.SVN.Capture(['--version', '--quiet'], None |
223 ).AndReturn('svn, version 1.6') | 223 ).AndReturn('1.6') |
224 gclient_scm.scm.SVN.RunAndGetFileList( | 224 gclient_scm.scm.SVN.RunAndGetFileList( |
225 options.verbose, | 225 options.verbose, |
226 ['checkout', self.url, self.base_path, '--force', '--ignore-externals'], | 226 ['checkout', self.url, self.base_path, '--force', '--ignore-externals'], |
227 cwd=self.root_dir, | 227 cwd=self.root_dir, |
228 file_list=files_list) | 228 file_list=files_list) |
229 | 229 |
230 self.mox.ReplayAll() | 230 self.mox.ReplayAll() |
231 scm = self._scm_wrapper(url=self.url, root_dir=self.root_dir, | 231 scm = self._scm_wrapper(url=self.url, root_dir=self.root_dir, |
232 relpath=self.relpath) | 232 relpath=self.relpath) |
233 scm.revert(options, self.args, files_list) | 233 scm.revert(options, self.args, files_list) |
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
337 file_info.revision = 42 | 337 file_info.revision = 42 |
338 gclient_scm.os.path.exists(join(self.base_path, '.git')).AndReturn(False) | 338 gclient_scm.os.path.exists(join(self.base_path, '.git')).AndReturn(False) |
339 gclient_scm.os.path.exists(join(self.base_path, '.hg')).AndReturn(False) | 339 gclient_scm.os.path.exists(join(self.base_path, '.hg')).AndReturn(False) |
340 # Checkout. | 340 # Checkout. |
341 gclient_scm.os.path.exists(self.base_path).AndReturn(False) | 341 gclient_scm.os.path.exists(self.base_path).AndReturn(False) |
342 parent = gclient_scm.os.path.dirname(self.base_path) | 342 parent = gclient_scm.os.path.dirname(self.base_path) |
343 gclient_scm.os.path.exists(parent).AndReturn(False) | 343 gclient_scm.os.path.exists(parent).AndReturn(False) |
344 gclient_scm.os.makedirs(parent) | 344 gclient_scm.os.makedirs(parent) |
345 gclient_scm.os.path.exists(parent).AndReturn(True) | 345 gclient_scm.os.path.exists(parent).AndReturn(True) |
346 files_list = self.mox.CreateMockAnything() | 346 files_list = self.mox.CreateMockAnything() |
347 gclient_scm.scm.SVN.Capture(['--version'], None | 347 gclient_scm.scm.SVN.Capture(['--version', '--quiet'], None |
348 ).AndReturn('svn, version 1.5.1 (r32289)') | 348 ).AndReturn('1.5.1') |
349 gclient_scm.scm.SVN.RunAndGetFileList( | 349 gclient_scm.scm.SVN.RunAndGetFileList( |
350 options.verbose, | 350 options.verbose, |
351 ['checkout', self.url, self.base_path, '--force', '--ignore-externals'], | 351 ['checkout', self.url, self.base_path, '--force', '--ignore-externals'], |
352 cwd=self.root_dir, | 352 cwd=self.root_dir, |
353 file_list=files_list) | 353 file_list=files_list) |
354 self.mox.ReplayAll() | 354 self.mox.ReplayAll() |
355 scm = self._scm_wrapper(url=self.url, root_dir=self.root_dir, | 355 scm = self._scm_wrapper(url=self.url, root_dir=self.root_dir, |
356 relpath=self.relpath) | 356 relpath=self.relpath) |
357 scm.update(options, (), files_list) | 357 scm.update(options, (), files_list) |
358 | 358 |
(...skipping 16 matching lines...) Expand all Loading... |
375 gclient_scm.scm.SVN._CaptureInfo([], dotted_path).AndReturn(file_info) | 375 gclient_scm.scm.SVN._CaptureInfo([], dotted_path).AndReturn(file_info) |
376 | 376 |
377 # Verify no locked files. | 377 # Verify no locked files. |
378 gclient_scm.scm.SVN.CaptureStatus(None, dotted_path).AndReturn([]) | 378 gclient_scm.scm.SVN.CaptureStatus(None, dotted_path).AndReturn([]) |
379 | 379 |
380 # Cheat a bit here. | 380 # Cheat a bit here. |
381 gclient_scm.scm.SVN._CaptureInfo([file_info['URL']], None | 381 gclient_scm.scm.SVN._CaptureInfo([file_info['URL']], None |
382 ).AndReturn(file_info) | 382 ).AndReturn(file_info) |
383 | 383 |
384 # _AddAdditionalUpdateFlags() | 384 # _AddAdditionalUpdateFlags() |
385 gclient_scm.scm.SVN.Capture(['--version'], None | 385 gclient_scm.scm.SVN.Capture(['--version', '--quiet'], None |
386 ).AndReturn('svn, version 1.5.1 (r32289)') | 386 ).AndReturn('1.5.1') |
387 | 387 |
388 additional_args = [] | 388 additional_args = [] |
389 if options.manually_grab_svn_rev: | 389 if options.manually_grab_svn_rev: |
390 additional_args = ['--revision', str(file_info['Revision'])] | 390 additional_args = ['--revision', str(file_info['Revision'])] |
391 additional_args.extend(['--force', '--ignore-externals']) | 391 additional_args.extend(['--force', '--ignore-externals']) |
392 files_list = [] | 392 files_list = [] |
393 gclient_scm.scm.SVN.RunAndGetFileList( | 393 gclient_scm.scm.SVN.RunAndGetFileList( |
394 options.verbose, | 394 options.verbose, |
395 ['update', self.base_path] + additional_args, | 395 ['update', self.base_path] + additional_args, |
396 cwd=self.root_dir, file_list=files_list) | 396 cwd=self.root_dir, file_list=files_list) |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
476 | 476 |
477 def testUpdateSingleCheckout(self): | 477 def testUpdateSingleCheckout(self): |
478 options = self.Options(verbose=True) | 478 options = self.Options(verbose=True) |
479 file_info = { | 479 file_info = { |
480 'URL': self.url, | 480 'URL': self.url, |
481 'Revision': 42, | 481 'Revision': 42, |
482 } | 482 } |
483 | 483 |
484 # Checks to make sure that we support svn co --depth. | 484 # Checks to make sure that we support svn co --depth. |
485 gclient_scm.scm.SVN.current_version = None | 485 gclient_scm.scm.SVN.current_version = None |
486 gclient_scm.scm.SVN.Capture(['--version'], None | 486 gclient_scm.scm.SVN.Capture(['--version', '--quiet'], None |
487 ).AndReturn('svn, version 1.5.1 (r32289)') | 487 ).AndReturn('1.5.1') |
488 gclient_scm.os.path.exists(join(self.base_path, '.svn')).AndReturn(False) | 488 gclient_scm.os.path.exists(join(self.base_path, '.svn')).AndReturn(False) |
489 gclient_scm.os.path.exists(join(self.base_path, 'DEPS')).AndReturn(False) | 489 gclient_scm.os.path.exists(join(self.base_path, 'DEPS')).AndReturn(False) |
490 | 490 |
491 # Verify no locked files. | 491 # Verify no locked files. |
492 dotted_path = join(self.base_path, '.') | 492 dotted_path = join(self.base_path, '.') |
493 gclient_scm.scm.SVN.CaptureStatus(None, dotted_path).AndReturn([]) | 493 gclient_scm.scm.SVN.CaptureStatus(None, dotted_path).AndReturn([]) |
494 | 494 |
495 # When checking out a single file, we issue an svn checkout and svn update. | 495 # When checking out a single file, we issue an svn checkout and svn update. |
496 files_list = self.mox.CreateMockAnything() | 496 files_list = self.mox.CreateMockAnything() |
497 gclient_scm.gclient_utils.CheckCallAndFilterAndHeader( | 497 gclient_scm.gclient_utils.CheckCallAndFilterAndHeader( |
(...skipping 18 matching lines...) Expand all Loading... |
516 scm = self._scm_wrapper(url=self.url, root_dir=self.root_dir, | 516 scm = self._scm_wrapper(url=self.url, root_dir=self.root_dir, |
517 relpath=self.relpath) | 517 relpath=self.relpath) |
518 scm.updatesingle(options, ['DEPS'], files_list) | 518 scm.updatesingle(options, ['DEPS'], files_list) |
519 self.checkstdout('\n_____ %s at 42\n' % self.relpath) | 519 self.checkstdout('\n_____ %s at 42\n' % self.relpath) |
520 | 520 |
521 def testUpdateSingleCheckoutSVN14(self): | 521 def testUpdateSingleCheckoutSVN14(self): |
522 options = self.Options(verbose=True) | 522 options = self.Options(verbose=True) |
523 | 523 |
524 # Checks to make sure that we support svn co --depth. | 524 # Checks to make sure that we support svn co --depth. |
525 gclient_scm.scm.SVN.current_version = None | 525 gclient_scm.scm.SVN.current_version = None |
526 gclient_scm.scm.SVN.Capture(['--version'], None | 526 gclient_scm.scm.SVN.Capture(['--version', '--quiet'], None |
527 ).AndReturn('svn, version 1.4.4 (r25188)') | 527 ).AndReturn('1.4.4') |
528 gclient_scm.os.path.exists(self.base_path).AndReturn(True) | 528 gclient_scm.os.path.exists(self.base_path).AndReturn(True) |
529 | 529 |
530 # When checking out a single file with svn 1.4, we use svn export | 530 # When checking out a single file with svn 1.4, we use svn export |
531 files_list = self.mox.CreateMockAnything() | 531 files_list = self.mox.CreateMockAnything() |
532 gclient_scm.gclient_utils.CheckCallAndFilterAndHeader( | 532 gclient_scm.gclient_utils.CheckCallAndFilterAndHeader( |
533 ['svn', 'export', join(self.url, 'DEPS'), join(self.base_path, 'DEPS')], | 533 ['svn', 'export', join(self.url, 'DEPS'), join(self.base_path, 'DEPS')], |
534 always=True, cwd=self.root_dir) | 534 always=True, cwd=self.root_dir) |
535 | 535 |
536 self.mox.ReplayAll() | 536 self.mox.ReplayAll() |
537 scm = self._scm_wrapper(url=self.url, root_dir=self.root_dir, | 537 scm = self._scm_wrapper(url=self.url, root_dir=self.root_dir, |
538 relpath=self.relpath) | 538 relpath=self.relpath) |
539 scm.updatesingle(options, ['DEPS'], files_list) | 539 scm.updatesingle(options, ['DEPS'], files_list) |
540 | 540 |
541 def testUpdateSingleCheckoutSVNUpgrade(self): | 541 def testUpdateSingleCheckoutSVNUpgrade(self): |
542 options = self.Options(verbose=True) | 542 options = self.Options(verbose=True) |
543 file_info = { | 543 file_info = { |
544 'URL': self.url, | 544 'URL': self.url, |
545 'Revision': 42, | 545 'Revision': 42, |
546 } | 546 } |
547 | 547 |
548 # Checks to make sure that we support svn co --depth. | 548 # Checks to make sure that we support svn co --depth. |
549 gclient_scm.scm.SVN.current_version = None | 549 gclient_scm.scm.SVN.current_version = None |
550 gclient_scm.scm.SVN.Capture(['--version'], None | 550 gclient_scm.scm.SVN.Capture(['--version', '--quiet'], None |
551 ).AndReturn('svn, version 1.5.1 (r32289)') | 551 ).AndReturn('1.5.1') |
552 gclient_scm.os.path.exists(join(self.base_path, '.svn')).AndReturn(False) | 552 gclient_scm.os.path.exists(join(self.base_path, '.svn')).AndReturn(False) |
553 # If DEPS already exists, assume we're upgrading from svn1.4, so delete | 553 # If DEPS already exists, assume we're upgrading from svn1.4, so delete |
554 # the old DEPS file. | 554 # the old DEPS file. |
555 gclient_scm.os.path.exists(join(self.base_path, 'DEPS')).AndReturn(True) | 555 gclient_scm.os.path.exists(join(self.base_path, 'DEPS')).AndReturn(True) |
556 gclient_scm.os.remove(join(self.base_path, 'DEPS')) | 556 gclient_scm.os.remove(join(self.base_path, 'DEPS')) |
557 | 557 |
558 # Verify no locked files. | 558 # Verify no locked files. |
559 gclient_scm.scm.SVN.CaptureStatus( | 559 gclient_scm.scm.SVN.CaptureStatus( |
560 None, join(self.base_path, '.')).AndReturn([]) | 560 None, join(self.base_path, '.')).AndReturn([]) |
561 | 561 |
(...skipping 26 matching lines...) Expand all Loading... |
588 ('\n_____ %s at 42\n' % self.relpath)) | 588 ('\n_____ %s at 42\n' % self.relpath)) |
589 | 589 |
590 def testUpdateSingleUpdate(self): | 590 def testUpdateSingleUpdate(self): |
591 options = self.Options(verbose=True) | 591 options = self.Options(verbose=True) |
592 file_info = { | 592 file_info = { |
593 'URL': self.url, | 593 'URL': self.url, |
594 'Revision': 42, | 594 'Revision': 42, |
595 } | 595 } |
596 # Checks to make sure that we support svn co --depth. | 596 # Checks to make sure that we support svn co --depth. |
597 gclient_scm.scm.SVN.current_version = None | 597 gclient_scm.scm.SVN.current_version = None |
598 gclient_scm.scm.SVN.Capture(['--version'], None | 598 gclient_scm.scm.SVN.Capture(['--version', '--quiet'], None |
599 ).AndReturn('svn, version 1.5.1 (r32289)') | 599 ).AndReturn('1.5.1') |
600 gclient_scm.os.path.exists(join(self.base_path, '.svn')).AndReturn(True) | 600 gclient_scm.os.path.exists(join(self.base_path, '.svn')).AndReturn(True) |
601 | 601 |
602 # Verify no locked files. | 602 # Verify no locked files. |
603 gclient_scm.scm.SVN.CaptureStatus(None, join(self.base_path, '.') | 603 gclient_scm.scm.SVN.CaptureStatus(None, join(self.base_path, '.') |
604 ).AndReturn([]) | 604 ).AndReturn([]) |
605 | 605 |
606 # Now we fall back on scm.update(). | 606 # Now we fall back on scm.update(). |
607 files_list = self.mox.CreateMockAnything() | 607 files_list = self.mox.CreateMockAnything() |
608 gclient_scm.os.path.exists(join(self.base_path, '.git')).AndReturn(False) | 608 gclient_scm.os.path.exists(join(self.base_path, '.git')).AndReturn(False) |
609 gclient_scm.os.path.exists(join(self.base_path, '.hg')).AndReturn(False) | 609 gclient_scm.os.path.exists(join(self.base_path, '.hg')).AndReturn(False) |
(...skipping 565 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1175 | 1175 |
1176 if __name__ == '__main__': | 1176 if __name__ == '__main__': |
1177 if '-v' in sys.argv: | 1177 if '-v' in sys.argv: |
1178 logging.basicConfig( | 1178 logging.basicConfig( |
1179 level=logging.DEBUG, | 1179 level=logging.DEBUG, |
1180 format='%(asctime).19s %(levelname)s %(filename)s:' | 1180 format='%(asctime).19s %(levelname)s %(filename)s:' |
1181 '%(lineno)s %(message)s') | 1181 '%(lineno)s %(message)s') |
1182 unittest.main() | 1182 unittest.main() |
1183 | 1183 |
1184 # vim: ts=2:sw=2:tw=80:et: | 1184 # vim: ts=2:sw=2:tw=80:et: |
OLD | NEW |