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

Side by Side Diff: tools/push-to-trunk/test_scripts.py

Issue 199733012: Split of rolling Chromium from push-to-trunk. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Rebase. Created 6 years, 9 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 | Annotate | Revision Log
« no previous file with comments | « tools/push-to-trunk/push_to_trunk.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/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
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 577 matching lines...) Expand 10 before | Expand all | Expand 10 after
631 def _PushToTrunk(self, force=False, manual=False): 635 def _PushToTrunk(self, force=False, manual=False):
632 TEST_CONFIG[DOT_GIT_LOCATION] = self.MakeEmptyTempFile() 636 TEST_CONFIG[DOT_GIT_LOCATION] = self.MakeEmptyTempFile()
633 637
634 # The version file on bleeding edge has build level 5, while the version 638 # The version file on bleeding edge has build level 5, while the version
635 # file from trunk has build level 4. 639 # file from trunk has build level 4.
636 TEST_CONFIG[VERSION_FILE] = self.MakeEmptyTempFile() 640 TEST_CONFIG[VERSION_FILE] = self.MakeEmptyTempFile()
637 self.WriteFakeVersionFile(build=5) 641 self.WriteFakeVersionFile(build=5)
638 642
639 TEST_CONFIG[CHANGELOG_ENTRY_FILE] = self.MakeEmptyTempFile() 643 TEST_CONFIG[CHANGELOG_ENTRY_FILE] = self.MakeEmptyTempFile()
640 TEST_CONFIG[CHANGELOG_FILE] = self.MakeEmptyTempFile() 644 TEST_CONFIG[CHANGELOG_FILE] = self.MakeEmptyTempFile()
641 if not os.path.exists(TEST_CONFIG[CHROMIUM]):
642 os.makedirs(TEST_CONFIG[CHROMIUM])
643 bleeding_edge_change_log = "2014-03-17: Sentinel\n" 645 bleeding_edge_change_log = "2014-03-17: Sentinel\n"
644 TextToFile(bleeding_edge_change_log, TEST_CONFIG[CHANGELOG_FILE]) 646 TextToFile(bleeding_edge_change_log, TEST_CONFIG[CHANGELOG_FILE])
645 TextToFile("Some line\n \"v8_revision\": \"123444\",\n some line",
646 TEST_CONFIG[DEPS_FILE])
647 os.environ["EDITOR"] = "vi" 647 os.environ["EDITOR"] = "vi"
648 648
649 def ResetChangeLog(): 649 def ResetChangeLog():
650 """On 'git co -b new_branch svn/trunk', and 'git checkout -- ChangeLog', 650 """On 'git co -b new_branch svn/trunk', and 'git checkout -- ChangeLog',
651 the ChangLog will be reset to its content on trunk.""" 651 the ChangLog will be reset to its content on trunk."""
652 trunk_change_log = """1999-04-05: Version 3.22.4 652 trunk_change_log = """1999-04-05: Version 3.22.4
653 653
654 Performance and stability improvements on all platforms.\n""" 654 Performance and stability improvements on all platforms.\n"""
655 TextToFile(trunk_change_log, TEST_CONFIG[CHANGELOG_FILE]) 655 TextToFile(trunk_change_log, TEST_CONFIG[CHANGELOG_FILE])
656 656
(...skipping 25 matching lines...) Expand all
682 682
683 Performance and stability improvements on all platforms. 683 Performance and stability improvements on all platforms.
684 684
685 685
686 1999-04-05: Version 3.22.4 686 1999-04-05: Version 3.22.4
687 687
688 Performance and stability improvements on all platforms.\n""", 688 Performance and stability improvements on all platforms.\n""",
689 change_log) 689 change_log)
690 690
691 force_flag = " -f" if not manual else "" 691 force_flag = " -f" if not manual else ""
692 review_suffix = "\n\nTBR=reviewer@chromium.org" if not manual else ""
693 self.ExpectGit([ 692 self.ExpectGit([
694 Git("status -s -uno", ""), 693 Git("status -s -uno", ""),
695 Git("status -s -b -uno", "## some_branch\n"), 694 Git("status -s -b -uno", "## some_branch\n"),
696 Git("svn fetch", ""), 695 Git("svn fetch", ""),
697 Git("branch", " branch1\n* branch2\n"), 696 Git("branch", " branch1\n* branch2\n"),
698 Git("checkout -b %s" % TEST_CONFIG[TEMP_BRANCH], ""), 697 Git("checkout -b %s" % TEST_CONFIG[TEMP_BRANCH], ""),
699 Git("branch", " branch1\n* branch2\n"), 698 Git("branch", " branch1\n* branch2\n"),
700 Git("branch", " branch1\n* branch2\n"), 699 Git("branch", " branch1\n* branch2\n"),
701 Git("checkout -b %s svn/bleeding_edge" % TEST_CONFIG[BRANCHNAME], ""), 700 Git("checkout -b %s svn/bleeding_edge" % TEST_CONFIG[BRANCHNAME], ""),
702 Git("svn find-rev r123455", "push_hash\n"), 701 Git("svn find-rev r123455", "push_hash\n"),
(...skipping 18 matching lines...) Expand all
721 cb=ResetToTrunk), 720 cb=ResetToTrunk),
722 Git("apply --index --reject \"%s\"" % TEST_CONFIG[PATCH_FILE], ""), 721 Git("apply --index --reject \"%s\"" % TEST_CONFIG[PATCH_FILE], ""),
723 Git("checkout -f svn/trunk -- %s" % TEST_CONFIG[CHANGELOG_FILE], "", 722 Git("checkout -f svn/trunk -- %s" % TEST_CONFIG[CHANGELOG_FILE], "",
724 cb=ResetChangeLog), 723 cb=ResetChangeLog),
725 Git("checkout -f svn/trunk -- %s" % TEST_CONFIG[VERSION_FILE], "", 724 Git("checkout -f svn/trunk -- %s" % TEST_CONFIG[VERSION_FILE], "",
726 cb=self.WriteFakeVersionFile), 725 cb=self.WriteFakeVersionFile),
727 Git("commit -aF \"%s\"" % TEST_CONFIG[COMMITMSG_FILE], "", 726 Git("commit -aF \"%s\"" % TEST_CONFIG[COMMITMSG_FILE], "",
728 cb=CheckSVNCommit), 727 cb=CheckSVNCommit),
729 Git("svn dcommit 2>&1", "Some output\nCommitted r123456\nSome output\n"), 728 Git("svn dcommit 2>&1", "Some output\nCommitted r123456\nSome output\n"),
730 Git("svn tag 3.22.5 -m \"Tagging version 3.22.5\"", ""), 729 Git("svn tag 3.22.5 -m \"Tagging version 3.22.5\"", ""),
731 Git("status -s -uno", ""),
732 Git("checkout -f master", ""),
733 Git("pull", ""),
734 Git("checkout -b v8-roll-123456", ""),
735 Git(("commit -am \"Update V8 to version 3.22.5 "
736 "(based on bleeding_edge revision r123455).\n\n"
737 "TBR=reviewer@chromium.org\""),
738 ""),
739 Git(("cl upload --send-mail --email \"author@chromium.org\"%s"
740 % force_flag), ""),
741 Git("checkout -f some_branch", ""), 730 Git("checkout -f some_branch", ""),
742 Git("branch -D %s" % TEST_CONFIG[TEMP_BRANCH], ""), 731 Git("branch -D %s" % TEST_CONFIG[TEMP_BRANCH], ""),
743 Git("branch -D %s" % TEST_CONFIG[BRANCHNAME], ""), 732 Git("branch -D %s" % TEST_CONFIG[BRANCHNAME], ""),
744 Git("branch -D %s" % TEST_CONFIG[TRUNKBRANCH], ""), 733 Git("branch -D %s" % TEST_CONFIG[TRUNKBRANCH], ""),
745 ]) 734 ])
746 735
747 # Expected keyboard input in manual mode: 736 # Expected keyboard input in manual mode:
748 if manual: 737 if manual:
749 self.ExpectReadline([ 738 self.ExpectReadline([
750 RL("Y"), # Confirm last push. 739 RL("Y"), # Confirm last push.
751 RL(""), # Open editor. 740 RL(""), # Open editor.
752 RL("Y"), # Increment build number. 741 RL("Y"), # Increment build number.
753 RL("Y"), # Sanity check. 742 RL("Y"), # Sanity check.
754 RL("reviewer@chromium.org"), # Chromium reviewer.
755 ]) 743 ])
756 744
757 # Expected keyboard input in semi-automatic mode and forced mode: 745 # Expected keyboard input in semi-automatic mode and forced mode:
758 if not manual: 746 if not manual:
759 self.ExpectReadline([]) 747 self.ExpectReadline([])
760 748
761 args = ["-a", "author@chromium.org", "-c", TEST_CONFIG[CHROMIUM], 749 args = ["-a", "author@chromium.org", "--revision", "123455"]
762 "--revision", "123455"]
763 if force: args.append("-f") 750 if force: args.append("-f")
764 if manual: args.append("-m") 751 if manual: args.append("-m")
765 else: args += ["-r", "reviewer@chromium.org"] 752 else: args += ["-r", "reviewer@chromium.org"]
766 PushToTrunk(TEST_CONFIG, self).Run(args) 753 PushToTrunk(TEST_CONFIG, self).Run(args)
767 754
768 deps = FileToText(TEST_CONFIG[DEPS_FILE])
769 self.assertTrue(re.search("\"v8_revision\": \"123456\"", deps))
770
771 cl = FileToText(TEST_CONFIG[CHANGELOG_FILE]) 755 cl = FileToText(TEST_CONFIG[CHANGELOG_FILE])
772 self.assertTrue(re.search(r"^\d\d\d\d\-\d+\-\d+: Version 3\.22\.5", cl)) 756 self.assertTrue(re.search(r"^\d\d\d\d\-\d+\-\d+: Version 3\.22\.5", cl))
773 self.assertTrue(re.search(r" Log text 1 \(issue 321\).", cl)) 757 self.assertTrue(re.search(r" Log text 1 \(issue 321\).", cl))
774 self.assertTrue(re.search(r"1999\-04\-05: Version 3\.22\.4", cl)) 758 self.assertTrue(re.search(r"1999\-04\-05: Version 3\.22\.4", cl))
775 759
776 # Note: The version file is on build number 5 again in the end of this test 760 # Note: The version file is on build number 5 again in the end of this test
777 # since the git command that merges to the bleeding edge branch is mocked 761 # since the git command that merges to the bleeding edge branch is mocked
778 # out. 762 # out.
779 763
780 def testPushToTrunkManual(self): 764 def testPushToTrunkManual(self):
781 self._PushToTrunk(manual=True) 765 self._PushToTrunk(manual=True)
782 766
783 def testPushToTrunkSemiAutomatic(self): 767 def testPushToTrunkSemiAutomatic(self):
784 self._PushToTrunk() 768 self._PushToTrunk()
785 769
786 def testPushToTrunkForced(self): 770 def testPushToTrunkForced(self):
787 self._PushToTrunk(force=True) 771 self._PushToTrunk(force=True)
788 772
773
774 def _ChromiumRoll(self, force=False, manual=False):
775 TEST_CONFIG[DOT_GIT_LOCATION] = self.MakeEmptyTempFile()
776 if not os.path.exists(TEST_CONFIG[CHROMIUM]):
777 os.makedirs(TEST_CONFIG[CHROMIUM])
778 TextToFile("Some line\n \"v8_revision\": \"123444\",\n some line",
779 TEST_CONFIG[DEPS_FILE])
780
781 os.environ["EDITOR"] = "vi"
782 force_flag = " -f" if not manual else ""
783 self.ExpectGit([
784 Git("status -s -uno", ""),
785 Git("status -s -b -uno", "## some_branch\n"),
786 Git("svn fetch", ""),
787 Git(("log -1 --format=%H --grep="
788 "\"^Version [[:digit:]]*\.[[:digit:]]*\.[[:digit:]]* (based\" "
789 "svn/trunk"), "push_hash\n"),
790 Git("svn find-rev push_hash", "123455\n"),
791 Git("log -1 --format=%s push_hash",
792 "Version 3.22.5 (based on bleeding_edge revision r123454)\n"),
793 Git("status -s -uno", ""),
794 Git("checkout -f master", ""),
795 Git("pull", ""),
796 Git("checkout -b v8-roll-123455", ""),
797 Git(("commit -am \"Update V8 to version 3.22.5 "
798 "(based on bleeding_edge revision r123454).\n\n"
799 "TBR=reviewer@chromium.org\""),
800 ""),
801 Git(("cl upload --send-mail --email \"author@chromium.org\"%s"
802 % force_flag), ""),
803 ])
804
805 # Expected keyboard input in manual mode:
806 if manual:
807 self.ExpectReadline([
808 RL("reviewer@chromium.org"), # Chromium reviewer.
809 ])
810
811 # Expected keyboard input in semi-automatic mode and forced mode:
812 if not manual:
813 self.ExpectReadline([])
814
815 args = ["-a", "author@chromium.org", "-c", TEST_CONFIG[CHROMIUM]]
816 if force: args.append("-f")
817 if manual: args.append("-m")
818 else: args += ["-r", "reviewer@chromium.org"]
819 ChromiumRoll(TEST_CONFIG, self).Run(args)
820
821 deps = FileToText(TEST_CONFIG[DEPS_FILE])
822 self.assertTrue(re.search("\"v8_revision\": \"123455\"", deps))
823
824 def testChromiumRollManual(self):
825 self._ChromiumRoll(manual=True)
826
827 def testChromiumRollSemiAutomatic(self):
828 self._ChromiumRoll()
829
830 def testChromiumRollForced(self):
831 self._ChromiumRoll(force=True)
832
789 def testCheckLastPushRecently(self): 833 def testCheckLastPushRecently(self):
790 self.ExpectGit([ 834 self.ExpectGit([
791 Git("svn log -1 --oneline", "r101 | Text"), 835 Git("svn log -1 --oneline", "r101 | Text"),
792 Git("svn log -1 --oneline ChangeLog", "r99 | Prepare push to trunk..."), 836 Git("svn log -1 --oneline ChangeLog", "r99 | Prepare push to trunk..."),
793 ]) 837 ])
794 838
795 self.RunStep(auto_roll.AutoRoll, FetchLatestRevision, AUTO_ROLL_ARGS) 839 self.RunStep(auto_roll.AutoRoll, FetchLatestRevision, AUTO_ROLL_ARGS)
796 self.assertRaises(Exception, lambda: self.RunStep(auto_roll.AutoRoll, 840 self.assertRaises(Exception, lambda: self.RunStep(auto_roll.AutoRoll,
797 CheckLastPush, 841 CheckLastPush,
798 AUTO_ROLL_ARGS)) 842 AUTO_ROLL_ARGS))
(...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after
1015 1059
1016 Review URL: https://codereview.chromium.org/83173002 1060 Review URL: https://codereview.chromium.org/83173002
1017 1061
1018 ------------------------------------------------------------------------""") 1062 ------------------------------------------------------------------------""")
1019 self.assertEquals( 1063 self.assertEquals(
1020 """Prepare push to trunk. Now working on version 3.23.11. 1064 """Prepare push to trunk. Now working on version 3.23.11.
1021 1065
1022 R=danno@chromium.org 1066 R=danno@chromium.org
1023 1067
1024 Committed: https://code.google.com/p/v8/source/detail?r=17997""", body) 1068 Committed: https://code.google.com/p/v8/source/detail?r=17997""", body)
OLDNEW
« no previous file with comments | « tools/push-to-trunk/push_to_trunk.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698