| OLD | NEW |
| 1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
| 2 # Copyright (c) 2011 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2011 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=E1101,E1103,W0403 | 8 # pylint: disable=E1101,E1103,W0403 |
| 9 | 9 |
| 10 # Import before super_mox to keep valid references. | 10 # Import before super_mox to keep valid references. |
| (...skipping 553 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 564 relpath=self.relpath) | 564 relpath=self.relpath) |
| 565 file_list = [] | 565 file_list = [] |
| 566 scm.update(options, None, file_list) | 566 scm.update(options, None, file_list) |
| 567 gclient_scm.os.remove(file_path) | 567 gclient_scm.os.remove(file_path) |
| 568 file_list = [] | 568 file_list = [] |
| 569 scm.revert(options, self.args, file_list) | 569 scm.revert(options, self.args, file_list) |
| 570 self.assertEquals(file_list, [file_path]) | 570 self.assertEquals(file_list, [file_path]) |
| 571 file_list = [] | 571 file_list = [] |
| 572 scm.diff(options, self.args, file_list) | 572 scm.diff(options, self.args, file_list) |
| 573 self.assertEquals(file_list, []) | 573 self.assertEquals(file_list, []) |
| 574 self.checkstdout( | 574 expectation = ('\n_____ . at refs/heads/master\nUpdating 069c602..a7142dc\n' |
| 575 ('\n_____ . at refs/heads/master\nUpdating 069c602..a7142dc\n' | |
| 576 'Fast-forward\n a | 1 +\n b | 1 +\n' | 575 'Fast-forward\n a | 1 +\n b | 1 +\n' |
| 577 ' 2 files changed, 2 insertions(+), 0 deletions(-)\n\n\n' | 576 ' 2 files changed, 2 insertions(+), 0 deletions(-)\n\n\n' |
| 578 '________ running \'git reset --hard origin/master\' in \'%s\'\n' | 577 '________ running \'git reset --hard origin/master\' in \'%s\'\n' |
| 579 'HEAD is now at a7142dc Personalized\n') % | 578 'HEAD is now at a7142dc Personalized\n') % join(self.root_dir, '.') |
| 580 join(self.root_dir, '.')) | 579 self.assertTrue(sys.stdout.getvalue().startswith(expectation)) |
| 580 sys.stdout.close() |
| 581 | 581 |
| 582 def testRevertNone(self): | 582 def testRevertNone(self): |
| 583 if not self.enabled: | 583 if not self.enabled: |
| 584 return | 584 return |
| 585 options = self.Options() | 585 options = self.Options() |
| 586 scm = gclient_scm.CreateSCM(url=self.url, root_dir=self.root_dir, | 586 scm = gclient_scm.CreateSCM(url=self.url, root_dir=self.root_dir, |
| 587 relpath=self.relpath) | 587 relpath=self.relpath) |
| 588 file_list = [] | 588 file_list = [] |
| 589 scm.update(options, None, file_list) | 589 scm.update(options, None, file_list) |
| 590 file_list = [] | 590 file_list = [] |
| (...skipping 20 matching lines...) Expand all Loading... |
| 611 file_path = join(self.base_path, 'a') | 611 file_path = join(self.base_path, 'a') |
| 612 open(file_path, 'a').writelines('touched\n') | 612 open(file_path, 'a').writelines('touched\n') |
| 613 file_list = [] | 613 file_list = [] |
| 614 scm.revert(options, self.args, file_list) | 614 scm.revert(options, self.args, file_list) |
| 615 self.assertEquals(file_list, [file_path]) | 615 self.assertEquals(file_list, [file_path]) |
| 616 file_list = [] | 616 file_list = [] |
| 617 scm.diff(options, self.args, file_list) | 617 scm.diff(options, self.args, file_list) |
| 618 self.assertEquals(file_list, []) | 618 self.assertEquals(file_list, []) |
| 619 self.assertEquals(scm.revinfo(options, self.args, None), | 619 self.assertEquals(scm.revinfo(options, self.args, None), |
| 620 'a7142dc9f0009350b96a11f372b6ea658592aa95') | 620 'a7142dc9f0009350b96a11f372b6ea658592aa95') |
| 621 self.checkstdout( | 621 expectation = ('\n_____ . at refs/heads/master\nUpdating 069c602..a7142dc\n' |
| 622 ('\n_____ . at refs/heads/master\nUpdating 069c602..a7142dc\n' | |
| 623 'Fast-forward\n a | 1 +\n b | 1 +\n' | 622 'Fast-forward\n a | 1 +\n b | 1 +\n' |
| 624 ' 2 files changed, 2 insertions(+), 0 deletions(-)\n\n\n' | 623 ' 2 files changed, 2 insertions(+), 0 deletions(-)\n\n\n' |
| 625 '________ running \'git reset --hard origin/master\' in \'%s\'\n' | 624 '________ running \'git reset --hard origin/master\' in \'%s\'\n' |
| 626 'HEAD is now at a7142dc Personalized\n') % | 625 'HEAD is now at a7142dc Personalized\n') % join(self.root_dir, '.') |
| 627 join(self.root_dir, '.')) | 626 self.assertTrue(sys.stdout.getvalue().startswith(expectation)) |
| 627 sys.stdout.close() |
| 628 | 628 |
| 629 def testRevertNew(self): | 629 def testRevertNew(self): |
| 630 if not self.enabled: | 630 if not self.enabled: |
| 631 return | 631 return |
| 632 options = self.Options() | 632 options = self.Options() |
| 633 scm = gclient_scm.CreateSCM(url=self.url, root_dir=self.root_dir, | 633 scm = gclient_scm.CreateSCM(url=self.url, root_dir=self.root_dir, |
| 634 relpath=self.relpath) | 634 relpath=self.relpath) |
| 635 file_list = [] | 635 file_list = [] |
| 636 scm.update(options, None, file_list) | 636 scm.update(options, None, file_list) |
| 637 file_path = join(self.base_path, 'c') | 637 file_path = join(self.base_path, 'c') |
| 638 f = open(file_path, 'w') | 638 f = open(file_path, 'w') |
| 639 f.writelines('new\n') | 639 f.writelines('new\n') |
| 640 f.close() | 640 f.close() |
| 641 Popen(['git', 'add', 'c'], stdout=PIPE, | 641 Popen(['git', 'add', 'c'], stdout=PIPE, |
| 642 stderr=STDOUT, cwd=self.base_path).communicate() | 642 stderr=STDOUT, cwd=self.base_path).communicate() |
| 643 file_list = [] | 643 file_list = [] |
| 644 scm.revert(options, self.args, file_list) | 644 scm.revert(options, self.args, file_list) |
| 645 self.assertEquals(file_list, [file_path]) | 645 self.assertEquals(file_list, [file_path]) |
| 646 file_list = [] | 646 file_list = [] |
| 647 scm.diff(options, self.args, file_list) | 647 scm.diff(options, self.args, file_list) |
| 648 self.assertEquals(file_list, []) | 648 self.assertEquals(file_list, []) |
| 649 self.assertEquals(scm.revinfo(options, self.args, None), | 649 self.assertEquals(scm.revinfo(options, self.args, None), |
| 650 'a7142dc9f0009350b96a11f372b6ea658592aa95') | 650 'a7142dc9f0009350b96a11f372b6ea658592aa95') |
| 651 self.checkstdout( | 651 expectation = ('\n_____ . at refs/heads/master\nUpdating 069c602..a7142dc\n' |
| 652 ('\n_____ . at refs/heads/master\nUpdating 069c602..a7142dc\n' | |
| 653 'Fast-forward\n a | 1 +\n b | 1 +\n' | 652 'Fast-forward\n a | 1 +\n b | 1 +\n' |
| 654 ' 2 files changed, 2 insertions(+), 0 deletions(-)\n\n\n' | 653 ' 2 files changed, 2 insertions(+), 0 deletions(-)\n\n\n' |
| 655 '________ running \'git reset --hard origin/master\' in \'%s\'\n' | 654 '________ running \'git reset --hard origin/master\' in \'%s\'\n' |
| 656 'HEAD is now at a7142dc Personalized\n') % | 655 'HEAD is now at a7142dc Personalized\n') % join(self.root_dir, '.') |
| 657 join(self.root_dir, '.')) | 656 self.assertTrue(sys.stdout.getvalue().startswith(expectation)) |
| 657 sys.stdout.close() |
| 658 | 658 |
| 659 def testStatusNew(self): | 659 def testStatusNew(self): |
| 660 if not self.enabled: | 660 if not self.enabled: |
| 661 return | 661 return |
| 662 options = self.Options() | 662 options = self.Options() |
| 663 file_path = join(self.base_path, 'a') | 663 file_path = join(self.base_path, 'a') |
| 664 open(file_path, 'a').writelines('touched\n') | 664 open(file_path, 'a').writelines('touched\n') |
| 665 scm = gclient_scm.CreateSCM(url=self.url, root_dir=self.root_dir, | 665 scm = gclient_scm.CreateSCM(url=self.url, root_dir=self.root_dir, |
| 666 relpath=self.relpath) | 666 relpath=self.relpath) |
| 667 file_list = [] | 667 file_list = [] |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 706 file_list = [] | 706 file_list = [] |
| 707 scm.update(options, (), file_list) | 707 scm.update(options, (), file_list) |
| 708 self.assertEquals(len(file_list), 2) | 708 self.assertEquals(len(file_list), 2) |
| 709 self.assert_(gclient_scm.os.path.isfile(join(base_path, 'a'))) | 709 self.assert_(gclient_scm.os.path.isfile(join(base_path, 'a'))) |
| 710 self.assertEquals(scm.revinfo(options, (), None), | 710 self.assertEquals(scm.revinfo(options, (), None), |
| 711 '069c602044c5388d2d15c3f875b057c852003458') | 711 '069c602044c5388d2d15c3f875b057c852003458') |
| 712 finally: | 712 finally: |
| 713 rmtree(root_dir) | 713 rmtree(root_dir) |
| 714 msg1 = ( | 714 msg1 = ( |
| 715 "\n_____ foo at refs/heads/master\n\n" | 715 "\n_____ foo at refs/heads/master\n\n" |
| 716 "________ running 'git clone -b master --verbose %s %s' in '%s'\n" | 716 "________ running 'git clone --progress -b master --verbose %s %s' " |
| 717 "in '%s'\n" |
| 717 "Initialized empty Git repository in %s\n") % ( | 718 "Initialized empty Git repository in %s\n") % ( |
| 718 join(self.root_dir, '.', '.git'), | 719 join(self.root_dir, '.', '.git'), |
| 719 join(root_dir, 'foo'), | 720 join(root_dir, 'foo'), |
| 720 root_dir, | 721 root_dir, |
| 721 join(gclient_scm.os.path.realpath(root_dir), 'foo', '.git') + '/') | 722 join(gclient_scm.os.path.realpath(root_dir), 'foo', '.git') + '/') |
| 722 msg2 = ( | 723 msg2 = ( |
| 723 "\n_____ foo at refs/heads/master\n\n" | 724 "\n_____ foo at refs/heads/master\n\n" |
| 724 "________ running 'git clone -b master --verbose %s %s' in '%s'\n" | 725 "________ running 'git clone --progress -b master --verbose %s %s'" |
| 726 " in '%s'\n" |
| 725 "Cloning into %s...\ndone.\n") % ( | 727 "Cloning into %s...\ndone.\n") % ( |
| 726 join(self.root_dir, '.', '.git'), | 728 join(self.root_dir, '.', '.git'), |
| 727 join(root_dir, 'foo'), | 729 join(root_dir, 'foo'), |
| 728 root_dir, | 730 root_dir, |
| 729 join(gclient_scm.os.path.realpath(root_dir), 'foo')) | 731 join(gclient_scm.os.path.realpath(root_dir), 'foo')) |
| 730 out = sys.stdout.getvalue() | 732 out = sys.stdout.getvalue() |
| 731 sys.stdout.close() | 733 sys.stdout.close() |
| 732 sys.stdout = self._old_stdout | 734 sys.stdout = self._old_stdout |
| 733 self.assertTrue(out in (msg1, msg2), (out, msg1, msg2)) | 735 self.assertTrue(out in (msg1, msg2), (out, msg1, msg2)) |
| 734 | 736 |
| (...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 841 options.revision = 'unmanaged' | 843 options.revision = 'unmanaged' |
| 842 scm.update(options, (), file_list) | 844 scm.update(options, (), file_list) |
| 843 self.assertEquals(len(file_list), 2) | 845 self.assertEquals(len(file_list), 2) |
| 844 self.assert_(gclient_scm.os.path.isfile(join(base_path, 'a'))) | 846 self.assert_(gclient_scm.os.path.isfile(join(base_path, 'a'))) |
| 845 self.assertEquals(scm.revinfo(options, (), None), | 847 self.assertEquals(scm.revinfo(options, (), None), |
| 846 '069c602044c5388d2d15c3f875b057c852003458') | 848 '069c602044c5388d2d15c3f875b057c852003458') |
| 847 finally: | 849 finally: |
| 848 rmtree(root_dir) | 850 rmtree(root_dir) |
| 849 msg1 = ( | 851 msg1 = ( |
| 850 "\n_____ foo at refs/heads/master\n\n" | 852 "\n_____ foo at refs/heads/master\n\n" |
| 851 "________ running 'git clone -b master --verbose %s %s' in '%s'\n" | 853 "________ running 'git clone --progress -b master --verbose %s %s'" |
| 854 " in '%s'\n" |
| 852 "Initialized empty Git repository in %s\n") % ( | 855 "Initialized empty Git repository in %s\n") % ( |
| 853 join(self.root_dir, '.', '.git'), | 856 join(self.root_dir, '.', '.git'), |
| 854 join(root_dir, 'foo'), | 857 join(root_dir, 'foo'), |
| 855 root_dir, | 858 root_dir, |
| 856 join(gclient_scm.os.path.realpath(root_dir), 'foo', '.git') + '/') | 859 join(gclient_scm.os.path.realpath(root_dir), 'foo', '.git') + '/') |
| 857 msg2 = ( | 860 msg2 = ( |
| 858 "\n_____ foo at refs/heads/master\n\n" | 861 "\n_____ foo at refs/heads/master\n\n" |
| 859 "________ running 'git clone -b master --verbose %s %s' in '%s'\n" | 862 "________ running 'git clone --progress -b master --verbose %s %s'" |
| 863 " in '%s'\n" |
| 860 "Cloning into %s...\ndone.\n") % ( | 864 "Cloning into %s...\ndone.\n") % ( |
| 861 join(self.root_dir, '.', '.git'), | 865 join(self.root_dir, '.', '.git'), |
| 862 join(root_dir, 'foo'), | 866 join(root_dir, 'foo'), |
| 863 root_dir, | 867 root_dir, |
| 864 join(gclient_scm.os.path.realpath(root_dir), 'foo')) | 868 join(gclient_scm.os.path.realpath(root_dir), 'foo')) |
| 865 out = sys.stdout.getvalue() | 869 out = sys.stdout.getvalue() |
| 866 sys.stdout.close() | 870 sys.stdout.close() |
| 867 sys.stdout = self._old_stdout | 871 sys.stdout = self._old_stdout |
| 868 self.assertTrue(out in (msg1, msg2), (out, msg1, msg2)) | 872 self.assertTrue(out in (msg1, msg2), (out, msg1, msg2)) |
| 869 | 873 |
| (...skipping 15 matching lines...) Expand all Loading... |
| 885 | 889 |
| 886 if __name__ == '__main__': | 890 if __name__ == '__main__': |
| 887 if '-v' in sys.argv: | 891 if '-v' in sys.argv: |
| 888 logging.basicConfig( | 892 logging.basicConfig( |
| 889 level=logging.DEBUG, | 893 level=logging.DEBUG, |
| 890 format='%(asctime).19s %(levelname)s %(filename)s:' | 894 format='%(asctime).19s %(levelname)s %(filename)s:' |
| 891 '%(lineno)s %(message)s') | 895 '%(lineno)s %(message)s') |
| 892 unittest.main() | 896 unittest.main() |
| 893 | 897 |
| 894 # vim: ts=2:sw=2:tw=80:et: | 898 # vim: ts=2:sw=2:tw=80:et: |
| OLD | NEW |