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

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: Fix location for retrieving the push title. 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
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 567 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
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
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)
OLDNEW
« tools/push-to-trunk/chromium_roll.py ('K') | « 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