| 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 457 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 468 url_at_rev = self.svn_base + 'trunk/third_party@%s' | 468 url_at_rev = self.svn_base + 'trunk/third_party@%s' |
| 469 # Invalid or non-existent. | 469 # Invalid or non-existent. |
| 470 self.assertFalse(scm.SVN.IsValidRevision('url://totally_invalid/trunk/foo')) | 470 self.assertFalse(scm.SVN.IsValidRevision('url://totally_invalid/trunk/foo')) |
| 471 self.assertFalse(scm.SVN.IsValidRevision(url_at_rev % 0)) | 471 self.assertFalse(scm.SVN.IsValidRevision(url_at_rev % 0)) |
| 472 self.assertFalse(scm.SVN.IsValidRevision(url_at_rev % 123)) | 472 self.assertFalse(scm.SVN.IsValidRevision(url_at_rev % 123)) |
| 473 # Valid. | 473 # Valid. |
| 474 self.assertTrue(scm.SVN.IsValidRevision(url_at_rev % 1)) | 474 self.assertTrue(scm.SVN.IsValidRevision(url_at_rev % 1)) |
| 475 self.assertTrue(scm.SVN.IsValidRevision(url_at_rev % 2)) | 475 self.assertTrue(scm.SVN.IsValidRevision(url_at_rev % 2)) |
| 476 self.assertTrue(scm.SVN.IsValidRevision(url_at_rev % 'HEAD')) | 476 self.assertTrue(scm.SVN.IsValidRevision(url_at_rev % 'HEAD')) |
| 477 | 477 |
| 478 def testRevert(self): | |
| 479 if not self.enabled: | |
| 480 return | |
| 481 # Mess around and make sure revert works for all corner cases. | |
| 482 # - svn add a file | |
| 483 # - svn add a file and delete it | |
| 484 # - Delete a file | |
| 485 # - svn delete a file | |
| 486 # - svn move a directory and svn rename files in it | |
| 487 # - add a directory tree. | |
| 488 def join(*args): | |
| 489 return scm.os.path.join(self.svn_root, *args) | |
| 490 self._capture(['move', 'foo', 'foo2']) | |
| 491 self._capture( | |
| 492 ['move', | |
| 493 scm.os.path.join('foo2', 'origin'), | |
| 494 scm.os.path.join('foo2', 'o')]) | |
| 495 scm.os.remove(join('origin')) | |
| 496 self._capture(['propset', 'foo', 'bar', join('prout', 'origin')]) | |
| 497 fake_repos.gclient_utils.rmtree(join('prout')) | |
| 498 with open(join('faa'), 'w') as f: | |
| 499 f.write('eh') | |
| 500 with open(join('faala'), 'w') as f: | |
| 501 f.write('oh') | |
| 502 self._capture(['add', join('faala')]) | |
| 503 added_and_removed = join('added_and_removed') | |
| 504 with open(added_and_removed, 'w') as f: | |
| 505 f.write('oh') | |
| 506 self._capture(['add', added_and_removed]) | |
| 507 scm.os.remove(added_and_removed) | |
| 508 # Make sure a tree of directories can be removed. | |
| 509 scm.os.makedirs(join('new_dir', 'subdir')) | |
| 510 with open(join('new_dir', 'subdir', 'newfile'), 'w') as f: | |
| 511 f.write('ah!') | |
| 512 self._capture(['add', join('new_dir')]) | |
| 513 self._capture(['add', join('new_dir', 'subdir')]) | |
| 514 self._capture(['add', join('new_dir', 'subdir', 'newfile')]) | |
| 515 # A random file in an added directory confuses svn. | |
| 516 scm.os.makedirs(join('new_dir2', 'subdir')) | |
| 517 with open(join('new_dir2', 'subdir', 'newfile'), 'w') as f: | |
| 518 f.write('ah!') | |
| 519 self._capture(['add', join('new_dir2')]) | |
| 520 self._capture(['add', join('new_dir2', 'subdir')]) | |
| 521 self._capture(['add', join('new_dir2', 'subdir', 'newfile')]) | |
| 522 with open(join('new_dir2', 'subdir', 'unversionedfile'), 'w') as f: | |
| 523 f.write('unadded file!') | |
| 524 | |
| 525 scm.SVN.Revert(self.svn_root) | |
| 526 self._capture(['update', '--revision', 'base']) | |
| 527 | |
| 528 self.assertTree(self.tree, self.svn_root) | |
| 529 # Asserting the tree is not sufficient, svn status must come out clear too. | |
| 530 self.assertEquals('', self._capture(['status'])) | |
| 531 | |
| 532 | 478 |
| 533 if __name__ == '__main__': | 479 if __name__ == '__main__': |
| 534 if '-v' in sys.argv: | 480 if '-v' in sys.argv: |
| 535 logging.basicConfig(level=logging.DEBUG) | 481 logging.basicConfig(level=logging.DEBUG) |
| 536 unittest.main() | 482 unittest.main() |
| 537 | 483 |
| 538 # vim: ts=2:sw=2:tw=80:et: | 484 # vim: ts=2:sw=2:tw=80:et: |
| OLD | NEW |