| OLD | NEW |
| 1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
| 2 # Copyright 2013 the V8 project authors. All rights reserved. | 2 # Copyright 2013 the V8 project authors. All rights reserved. |
| 3 # Redistribution and use in source and binary forms, with or without | 3 # Redistribution and use in source and binary forms, with or without |
| 4 # modification, are permitted provided that the following conditions are | 4 # modification, are permitted provided that the following conditions are |
| 5 # met: | 5 # met: |
| 6 # | 6 # |
| 7 # * Redistributions of source code must retain the above copyright | 7 # * Redistributions of source code must retain the above copyright |
| 8 # notice, this list of conditions and the following disclaimer. | 8 # notice, this list of conditions and the following disclaimer. |
| 9 # * Redistributions in binary form must reproduce the above | 9 # * Redistributions in binary form must reproduce the above |
| 10 # copyright notice, this list of conditions and the following | 10 # copyright notice, this list of conditions and the following |
| (...skipping 23 matching lines...) Expand all Loading... |
| 34 import auto_roll | 34 import auto_roll |
| 35 from auto_roll import CheckLastPush | 35 from auto_roll import CheckLastPush |
| 36 from auto_roll import FetchLatestRevision | 36 from auto_roll import FetchLatestRevision |
| 37 from auto_roll import SETTINGS_LOCATION | 37 from auto_roll import SETTINGS_LOCATION |
| 38 import common_includes | 38 import common_includes |
| 39 from common_includes import * | 39 from common_includes import * |
| 40 import merge_to_branch | 40 import merge_to_branch |
| 41 from merge_to_branch import * | 41 from merge_to_branch import * |
| 42 import push_to_trunk | 42 import push_to_trunk |
| 43 from push_to_trunk import * | 43 from push_to_trunk import * |
| 44 import chromium_roll |
| 45 from chromium_roll import CHROMIUM |
| 46 from chromium_roll import DEPS_FILE |
| 47 from chromium_roll import ChromiumRoll |
| 44 | 48 |
| 45 | 49 |
| 46 TEST_CONFIG = { | 50 TEST_CONFIG = { |
| 47 BRANCHNAME: "test-prepare-push", | 51 BRANCHNAME: "test-prepare-push", |
| 48 TRUNKBRANCH: "test-trunk-push", | 52 TRUNKBRANCH: "test-trunk-push", |
| 49 PERSISTFILE_BASENAME: "/tmp/test-v8-push-to-trunk-tempfile", | 53 PERSISTFILE_BASENAME: "/tmp/test-v8-push-to-trunk-tempfile", |
| 50 TEMP_BRANCH: "test-prepare-push-temporary-branch-created-by-script", | 54 TEMP_BRANCH: "test-prepare-push-temporary-branch-created-by-script", |
| 51 DOT_GIT_LOCATION: None, | 55 DOT_GIT_LOCATION: None, |
| 52 VERSION_FILE: None, | 56 VERSION_FILE: None, |
| 53 CHANGELOG_FILE: None, | 57 CHANGELOG_FILE: None, |
| (...skipping 567 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 621 def _PushToTrunk(self, force=False, manual=False): | 625 def _PushToTrunk(self, force=False, manual=False): |
| 622 TEST_CONFIG[DOT_GIT_LOCATION] = self.MakeEmptyTempFile() | 626 TEST_CONFIG[DOT_GIT_LOCATION] = self.MakeEmptyTempFile() |
| 623 | 627 |
| 624 # The version file on bleeding edge has build level 5, while the version | 628 # The version file on bleeding edge has build level 5, while the version |
| 625 # file from trunk has build level 4. | 629 # file from trunk has build level 4. |
| 626 TEST_CONFIG[VERSION_FILE] = self.MakeEmptyTempFile() | 630 TEST_CONFIG[VERSION_FILE] = self.MakeEmptyTempFile() |
| 627 self.WriteFakeVersionFile(build=5) | 631 self.WriteFakeVersionFile(build=5) |
| 628 | 632 |
| 629 TEST_CONFIG[CHANGELOG_ENTRY_FILE] = self.MakeEmptyTempFile() | 633 TEST_CONFIG[CHANGELOG_ENTRY_FILE] = self.MakeEmptyTempFile() |
| 630 TEST_CONFIG[CHANGELOG_FILE] = self.MakeEmptyTempFile() | 634 TEST_CONFIG[CHANGELOG_FILE] = self.MakeEmptyTempFile() |
| 631 if not os.path.exists(TEST_CONFIG[CHROMIUM]): | |
| 632 os.makedirs(TEST_CONFIG[CHROMIUM]) | |
| 633 bleeding_edge_change_log = "2014-03-17: Sentinel\n" | 635 bleeding_edge_change_log = "2014-03-17: Sentinel\n" |
| 634 TextToFile(bleeding_edge_change_log, TEST_CONFIG[CHANGELOG_FILE]) | 636 TextToFile(bleeding_edge_change_log, TEST_CONFIG[CHANGELOG_FILE]) |
| 635 TextToFile("Some line\n \"v8_revision\": \"123444\",\n some line", | |
| 636 TEST_CONFIG[DEPS_FILE]) | |
| 637 os.environ["EDITOR"] = "vi" | 637 os.environ["EDITOR"] = "vi" |
| 638 | 638 |
| 639 def CheckPreparePush(): | 639 def CheckPreparePush(): |
| 640 self.assertEquals(bleeding_edge_change_log, | 640 self.assertEquals(bleeding_edge_change_log, |
| 641 FileToText(TEST_CONFIG[CHANGELOG_FILE])) | 641 FileToText(TEST_CONFIG[CHANGELOG_FILE])) |
| 642 | 642 |
| 643 version = FileToText(TEST_CONFIG[VERSION_FILE]) | 643 version = FileToText(TEST_CONFIG[VERSION_FILE]) |
| 644 self.assertTrue(re.search(r"#define BUILD_NUMBER\s+6", version)) | 644 self.assertTrue(re.search(r"#define BUILD_NUMBER\s+6", version)) |
| 645 | 645 |
| 646 def ResetChangeLog(): | 646 def ResetChangeLog(): |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 679 | 679 |
| 680 Performance and stability improvements on all platforms. | 680 Performance and stability improvements on all platforms. |
| 681 | 681 |
| 682 | 682 |
| 683 1999-04-05: Version 3.22.4 | 683 1999-04-05: Version 3.22.4 |
| 684 | 684 |
| 685 Performance and stability improvements on all platforms.\n""", | 685 Performance and stability improvements on all platforms.\n""", |
| 686 change_log) | 686 change_log) |
| 687 | 687 |
| 688 force_flag = " -f" if not manual else "" | 688 force_flag = " -f" if not manual else "" |
| 689 review_suffix = "\n\nTBR=reviewer@chromium.org" if not manual else "" | |
| 690 self.ExpectGit([ | 689 self.ExpectGit([ |
| 691 Git("status -s -uno", ""), | 690 Git("status -s -uno", ""), |
| 692 Git("status -s -b -uno", "## some_branch\n"), | 691 Git("status -s -b -uno", "## some_branch\n"), |
| 693 Git("svn fetch", ""), | 692 Git("svn fetch", ""), |
| 694 Git("branch", " branch1\n* branch2\n"), | 693 Git("branch", " branch1\n* branch2\n"), |
| 695 Git("checkout -b %s" % TEST_CONFIG[TEMP_BRANCH], ""), | 694 Git("checkout -b %s" % TEST_CONFIG[TEMP_BRANCH], ""), |
| 696 Git("branch", " branch1\n* branch2\n"), | 695 Git("branch", " branch1\n* branch2\n"), |
| 697 Git("branch", " branch1\n* branch2\n"), | 696 Git("branch", " branch1\n* branch2\n"), |
| 698 Git("checkout -b %s svn/bleeding_edge" % TEST_CONFIG[BRANCHNAME], ""), | 697 Git("checkout -b %s svn/bleeding_edge" % TEST_CONFIG[BRANCHNAME], ""), |
| 699 Git(("log -1 --format=%H --grep=" | 698 Git(("log -1 --format=%H --grep=" |
| (...skipping 18 matching lines...) Expand all Loading... |
| 718 cb=ResetToTrunk), | 717 cb=ResetToTrunk), |
| 719 Git("apply --index --reject \"%s\"" % TEST_CONFIG[PATCH_FILE], ""), | 718 Git("apply --index --reject \"%s\"" % TEST_CONFIG[PATCH_FILE], ""), |
| 720 Git("checkout -f svn/trunk -- %s" % TEST_CONFIG[CHANGELOG_FILE], "", | 719 Git("checkout -f svn/trunk -- %s" % TEST_CONFIG[CHANGELOG_FILE], "", |
| 721 cb=ResetChangeLog), | 720 cb=ResetChangeLog), |
| 722 Git("checkout -f svn/trunk -- %s" % TEST_CONFIG[VERSION_FILE], "", | 721 Git("checkout -f svn/trunk -- %s" % TEST_CONFIG[VERSION_FILE], "", |
| 723 cb=self.WriteFakeVersionFile), | 722 cb=self.WriteFakeVersionFile), |
| 724 Git("commit -aF \"%s\"" % TEST_CONFIG[COMMITMSG_FILE], "", | 723 Git("commit -aF \"%s\"" % TEST_CONFIG[COMMITMSG_FILE], "", |
| 725 cb=CheckSVNCommit), | 724 cb=CheckSVNCommit), |
| 726 Git("svn dcommit 2>&1", "Some output\nCommitted r123456\nSome output\n"), | 725 Git("svn dcommit 2>&1", "Some output\nCommitted r123456\nSome output\n"), |
| 727 Git("svn tag 3.22.5 -m \"Tagging version 3.22.5\"", ""), | 726 Git("svn tag 3.22.5 -m \"Tagging version 3.22.5\"", ""), |
| 728 Git("status -s -uno", ""), | |
| 729 Git("checkout -f master", ""), | |
| 730 Git("pull", ""), | |
| 731 Git("checkout -b v8-roll-123456", ""), | |
| 732 Git(("commit -am \"Update V8 to version 3.22.5 " | |
| 733 "(based on bleeding_edge revision r123455).\n\n" | |
| 734 "TBR=reviewer@chromium.org\""), | |
| 735 ""), | |
| 736 Git(("cl upload --send-mail --email \"author@chromium.org\"%s" | |
| 737 % force_flag), ""), | |
| 738 Git("checkout -f some_branch", ""), | 727 Git("checkout -f some_branch", ""), |
| 739 Git("branch -D %s" % TEST_CONFIG[TEMP_BRANCH], ""), | 728 Git("branch -D %s" % TEST_CONFIG[TEMP_BRANCH], ""), |
| 740 Git("branch -D %s" % TEST_CONFIG[BRANCHNAME], ""), | 729 Git("branch -D %s" % TEST_CONFIG[BRANCHNAME], ""), |
| 741 Git("branch -D %s" % TEST_CONFIG[TRUNKBRANCH], ""), | 730 Git("branch -D %s" % TEST_CONFIG[TRUNKBRANCH], ""), |
| 742 ]) | 731 ]) |
| 743 | 732 |
| 744 # Expected keyboard input in manual mode: | 733 # Expected keyboard input in manual mode: |
| 745 if manual: | 734 if manual: |
| 746 self.ExpectReadline([ | 735 self.ExpectReadline([ |
| 747 RL("Y"), # Confirm last push. | 736 RL("Y"), # Confirm last push. |
| 748 RL(""), # Open editor. | 737 RL(""), # Open editor. |
| 749 RL("Y"), # Increment build number. | 738 RL("Y"), # Increment build number. |
| 750 RL("Y"), # Sanity check. | 739 RL("Y"), # Sanity check. |
| 751 RL("reviewer@chromium.org"), # Chromium reviewer. | |
| 752 ]) | 740 ]) |
| 753 | 741 |
| 754 # Expected keyboard input in semi-automatic mode and forced mode: | 742 # Expected keyboard input in semi-automatic mode and forced mode: |
| 755 if not manual: | 743 if not manual: |
| 756 self.ExpectReadline([]) | 744 self.ExpectReadline([]) |
| 757 | 745 |
| 758 args = ["-a", "author@chromium.org", "-c", TEST_CONFIG[CHROMIUM]] | 746 args = ["-a", "author@chromium.org"] |
| 759 if force: args.append("-f") | 747 if force: args.append("-f") |
| 760 if manual: args.append("-m") | 748 if manual: args.append("-m") |
| 761 else: args += ["-r", "reviewer@chromium.org"] | 749 else: args += ["-r", "reviewer@chromium.org"] |
| 762 PushToTrunk(TEST_CONFIG, self).Run(args) | 750 PushToTrunk(TEST_CONFIG, self).Run(args) |
| 763 | 751 |
| 764 deps = FileToText(TEST_CONFIG[DEPS_FILE]) | |
| 765 self.assertTrue(re.search("\"v8_revision\": \"123456\"", deps)) | |
| 766 | |
| 767 cl = FileToText(TEST_CONFIG[CHANGELOG_FILE]) | 752 cl = FileToText(TEST_CONFIG[CHANGELOG_FILE]) |
| 768 self.assertTrue(re.search(r"^\d\d\d\d\-\d+\-\d+: Version 3\.22\.5", cl)) | 753 self.assertTrue(re.search(r"^\d\d\d\d\-\d+\-\d+: Version 3\.22\.5", cl)) |
| 769 self.assertTrue(re.search(r" Log text 1 \(issue 321\).", cl)) | 754 self.assertTrue(re.search(r" Log text 1 \(issue 321\).", cl)) |
| 770 self.assertTrue(re.search(r"1999\-04\-05: Version 3\.22\.4", cl)) | 755 self.assertTrue(re.search(r"1999\-04\-05: Version 3\.22\.4", cl)) |
| 771 | 756 |
| 772 # Note: The version file is on build number 5 again in the end of this test | 757 # Note: The version file is on build number 5 again in the end of this test |
| 773 # since the git command that merges to the bleeding edge branch is mocked | 758 # since the git command that merges to the bleeding edge branch is mocked |
| 774 # out. | 759 # out. |
| 775 | 760 |
| 776 def testPushToTrunkManual(self): | 761 def testPushToTrunkManual(self): |
| 777 self._PushToTrunk(manual=True) | 762 self._PushToTrunk(manual=True) |
| 778 | 763 |
| 779 def testPushToTrunkSemiAutomatic(self): | 764 def testPushToTrunkSemiAutomatic(self): |
| 780 self._PushToTrunk() | 765 self._PushToTrunk() |
| 781 | 766 |
| 782 def testPushToTrunkForced(self): | 767 def testPushToTrunkForced(self): |
| 783 self._PushToTrunk(force=True) | 768 self._PushToTrunk(force=True) |
| 784 | 769 |
| 770 |
| 771 def _ChromiumRoll(self, force=False, manual=False): |
| 772 TEST_CONFIG[DOT_GIT_LOCATION] = self.MakeEmptyTempFile() |
| 773 if not os.path.exists(TEST_CONFIG[CHROMIUM]): |
| 774 os.makedirs(TEST_CONFIG[CHROMIUM]) |
| 775 TextToFile("Some line\n \"v8_revision\": \"123444\",\n some line", |
| 776 TEST_CONFIG[DEPS_FILE]) |
| 777 |
| 778 os.environ["EDITOR"] = "vi" |
| 779 force_flag = " -f" if not manual else "" |
| 780 self.ExpectGit([ |
| 781 Git("status -s -uno", ""), |
| 782 Git("status -s -b -uno", "## some_branch\n"), |
| 783 Git("svn fetch", ""), |
| 784 Git(("log -1 --format=%H --grep=" |
| 785 "\"^Version [[:digit:]]*\.[[:digit:]]*\.[[:digit:]]* (based\" " |
| 786 "svn/trunk"), "push_hash\n"), |
| 787 Git("svn find-rev push_hash", "123455\n"), |
| 788 Git("log -1 --format=%s push_hash", |
| 789 "Version 3.22.5 (based on bleeding_edge revision r123454)\n"), |
| 790 Git("status -s -uno", ""), |
| 791 Git("checkout -f master", ""), |
| 792 Git("pull", ""), |
| 793 Git("checkout -b v8-roll-123455", ""), |
| 794 Git(("commit -am \"Update V8 to version 3.22.5 " |
| 795 "(based on bleeding_edge revision r123454).\n\n" |
| 796 "TBR=reviewer@chromium.org\""), |
| 797 ""), |
| 798 Git(("cl upload --send-mail --email \"author@chromium.org\"%s" |
| 799 % force_flag), ""), |
| 800 ]) |
| 801 |
| 802 # Expected keyboard input in manual mode: |
| 803 if manual: |
| 804 self.ExpectReadline([ |
| 805 RL("reviewer@chromium.org"), # Chromium reviewer. |
| 806 ]) |
| 807 |
| 808 # Expected keyboard input in semi-automatic mode and forced mode: |
| 809 if not manual: |
| 810 self.ExpectReadline([]) |
| 811 |
| 812 args = ["-a", "author@chromium.org", "-c", TEST_CONFIG[CHROMIUM]] |
| 813 if force: args.append("-f") |
| 814 if manual: args.append("-m") |
| 815 else: args += ["-r", "reviewer@chromium.org"] |
| 816 ChromiumRoll(TEST_CONFIG, self).Run(args) |
| 817 |
| 818 deps = FileToText(TEST_CONFIG[DEPS_FILE]) |
| 819 self.assertTrue(re.search("\"v8_revision\": \"123455\"", deps)) |
| 820 |
| 821 def testChromiumRollManual(self): |
| 822 self._ChromiumRoll(manual=True) |
| 823 |
| 824 def testChromiumRollSemiAutomatic(self): |
| 825 self._ChromiumRoll() |
| 826 |
| 827 def testChromiumRollForced(self): |
| 828 self._ChromiumRoll(force=True) |
| 829 |
| 785 def testCheckLastPushRecently(self): | 830 def testCheckLastPushRecently(self): |
| 786 self.ExpectGit([ | 831 self.ExpectGit([ |
| 787 Git("svn log -1 --oneline", "r101 | Text"), | 832 Git("svn log -1 --oneline", "r101 | Text"), |
| 788 Git("svn log -1 --oneline ChangeLog", "r99 | Prepare push to trunk..."), | 833 Git("svn log -1 --oneline ChangeLog", "r99 | Prepare push to trunk..."), |
| 789 ]) | 834 ]) |
| 790 | 835 |
| 791 self.RunStep(auto_roll.AutoRoll, FetchLatestRevision, AUTO_ROLL_ARGS) | 836 self.RunStep(auto_roll.AutoRoll, FetchLatestRevision, AUTO_ROLL_ARGS) |
| 792 self.assertRaises(Exception, lambda: self.RunStep(auto_roll.AutoRoll, | 837 self.assertRaises(Exception, lambda: self.RunStep(auto_roll.AutoRoll, |
| 793 CheckLastPush, | 838 CheckLastPush, |
| 794 AUTO_ROLL_ARGS)) | 839 AUTO_ROLL_ARGS)) |
| (...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1011 | 1056 |
| 1012 Review URL: https://codereview.chromium.org/83173002 | 1057 Review URL: https://codereview.chromium.org/83173002 |
| 1013 | 1058 |
| 1014 ------------------------------------------------------------------------""") | 1059 ------------------------------------------------------------------------""") |
| 1015 self.assertEquals( | 1060 self.assertEquals( |
| 1016 """Prepare push to trunk. Now working on version 3.23.11. | 1061 """Prepare push to trunk. Now working on version 3.23.11. |
| 1017 | 1062 |
| 1018 R=danno@chromium.org | 1063 R=danno@chromium.org |
| 1019 | 1064 |
| 1020 Committed: https://code.google.com/p/v8/source/detail?r=17997""", body) | 1065 Committed: https://code.google.com/p/v8/source/detail?r=17997""", body) |
| OLD | NEW |