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

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

Issue 181583002: Refactoring: Deprecate optparse in push and merge scripts. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: 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 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
57 COMMITMSG_FILE: "/tmp/test-v8-push-to-trunk-tempfile-commitmsg", 57 COMMITMSG_FILE: "/tmp/test-v8-push-to-trunk-tempfile-commitmsg",
58 CHROMIUM: "/tmp/test-v8-push-to-trunk-tempfile-chromium", 58 CHROMIUM: "/tmp/test-v8-push-to-trunk-tempfile-chromium",
59 DEPS_FILE: "/tmp/test-v8-push-to-trunk-tempfile-chromium/DEPS", 59 DEPS_FILE: "/tmp/test-v8-push-to-trunk-tempfile-chromium/DEPS",
60 SETTINGS_LOCATION: None, 60 SETTINGS_LOCATION: None,
61 ALREADY_MERGING_SENTINEL_FILE: 61 ALREADY_MERGING_SENTINEL_FILE:
62 "/tmp/test-merge-to-branch-tempfile-already-merging", 62 "/tmp/test-merge-to-branch-tempfile-already-merging",
63 COMMIT_HASHES_FILE: "/tmp/test-merge-to-branch-tempfile-PATCH_COMMIT_HASHES", 63 COMMIT_HASHES_FILE: "/tmp/test-merge-to-branch-tempfile-PATCH_COMMIT_HASHES",
64 TEMPORARY_PATCH_FILE: "/tmp/test-merge-to-branch-tempfile-temporary-patch", 64 TEMPORARY_PATCH_FILE: "/tmp/test-merge-to-branch-tempfile-temporary-patch",
65 } 65 }
66 66
67 AUTO_ROLL_ARGS = [
68 "-a", "author@chromium.org",
69 "-c", TEST_CONFIG[CHROMIUM],
70 "-r", "reviewer@chromium.org",
71 ]
72
67 73
68 def MakeOptions(s=0, l=None, f=False, m=True, r=None, c=None, a=None, 74 def MakeOptions(s=0, l=None, f=False, m=True, r=None, c=None, a=None,
69 status_password=None, revert_bleeding_edge=None, p=None): 75 status_password=None, revert_bleeding_edge=None, p=None):
70 """Convenience wrapper.""" 76 """Convenience wrapper."""
71 class Options(object): 77 class Options(object):
72 pass 78 pass
73 options = Options() 79 options = Options()
74 options.s = s 80 options.s = s
75 options.l = l 81 options.l = l
76 options.f = f 82 options.f = f
(...skipping 656 matching lines...) Expand 10 before | Expand all | Expand 10 after
733 # Expected keyboard input in semi-automatic mode: 739 # Expected keyboard input in semi-automatic mode:
734 if not manual and not force: 740 if not manual and not force:
735 self.ExpectReadline([ 741 self.ExpectReadline([
736 "LGTM", # Enter LGTM for V8 CL. 742 "LGTM", # Enter LGTM for V8 CL.
737 ]) 743 ])
738 744
739 # No keyboard input in forced mode: 745 # No keyboard input in forced mode:
740 if force: 746 if force:
741 self.ExpectReadline([]) 747 self.ExpectReadline([])
742 748
743 options = MakeOptions(f=force, m=manual, a="author@chromium.org", 749 args = ["-a", "author@chromium.org", "-c", TEST_CONFIG[CHROMIUM]]
744 r="reviewer@chromium.org" if not manual else None, 750 if force: args.append("-f")
745 c = TEST_CONFIG[CHROMIUM]) 751 if manual: args.append("-m")
752 else: args += ["-r", "reviewer@chromium.org"]
753 options = push_to_trunk.BuildOptions().parse_args(args)
746 RunPushToTrunk(TEST_CONFIG, PushToTrunkOptions(options), self) 754 RunPushToTrunk(TEST_CONFIG, PushToTrunkOptions(options), self)
747 755
748 deps = FileToText(TEST_CONFIG[DEPS_FILE]) 756 deps = FileToText(TEST_CONFIG[DEPS_FILE])
749 self.assertTrue(re.search("\"v8_revision\": \"123456\"", deps)) 757 self.assertTrue(re.search("\"v8_revision\": \"123456\"", deps))
750 758
751 cl = FileToText(TEST_CONFIG[CHANGELOG_FILE]) 759 cl = FileToText(TEST_CONFIG[CHANGELOG_FILE])
752 self.assertTrue(re.search(r"^\d\d\d\d\-\d+\-\d+: Version 3\.22\.5", cl)) 760 self.assertTrue(re.search(r"^\d\d\d\d\-\d+\-\d+: Version 3\.22\.5", cl))
753 self.assertTrue(re.search(r" Log text 1 \(issue 321\).", cl)) 761 self.assertTrue(re.search(r" Log text 1 \(issue 321\).", cl))
754 self.assertTrue(re.search(r"1999\-04\-05: Version 3\.22\.4", cl)) 762 self.assertTrue(re.search(r"1999\-04\-05: Version 3\.22\.4", cl))
755 763
(...skipping 14 matching lines...) Expand all
770 self.ExpectGit([ 778 self.ExpectGit([
771 ["svn log -1 --oneline", "r101 | Text"], 779 ["svn log -1 --oneline", "r101 | Text"],
772 ["svn log -1 --oneline ChangeLog", "r99 | Prepare push to trunk..."], 780 ["svn log -1 --oneline ChangeLog", "r99 | Prepare push to trunk..."],
773 ]) 781 ])
774 782
775 state = {} 783 state = {}
776 self.MakeStep(FetchLatestRevision, state=state).Run() 784 self.MakeStep(FetchLatestRevision, state=state).Run()
777 self.assertRaises(Exception, self.MakeStep(CheckLastPush, state=state).Run) 785 self.assertRaises(Exception, self.MakeStep(CheckLastPush, state=state).Run)
778 786
779 def testAutoRoll(self): 787 def testAutoRoll(self):
780 status_password = self.MakeEmptyTempFile() 788 password = self.MakeEmptyTempFile()
781 TextToFile("PW", status_password) 789 TextToFile("PW", password)
782 TEST_CONFIG[DOT_GIT_LOCATION] = self.MakeEmptyTempFile() 790 TEST_CONFIG[DOT_GIT_LOCATION] = self.MakeEmptyTempFile()
783 TEST_CONFIG[SETTINGS_LOCATION] = "~/.doesnotexist" 791 TEST_CONFIG[SETTINGS_LOCATION] = "~/.doesnotexist"
784 792
785 self.ExpectReadURL([ 793 self.ExpectReadURL([
786 ["https://v8-status.appspot.com/current?format=json", 794 ["https://v8-status.appspot.com/current?format=json",
787 "{\"message\": \"Tree is throttled\"}"], 795 "{\"message\": \"Tree is throttled\"}"],
788 ["https://v8-status.appspot.com/lkgr", Exception("Network problem")], 796 ["https://v8-status.appspot.com/lkgr", Exception("Network problem")],
789 ["https://v8-status.appspot.com/lkgr", "100"], 797 ["https://v8-status.appspot.com/lkgr", "100"],
790 ["https://v8-status.appspot.com/status", 798 ["https://v8-status.appspot.com/status",
791 ("username=v8-auto-roll%40chromium.org&" 799 ("username=v8-auto-roll%40chromium.org&"
792 "message=Tree+is+closed+%28preparing+to+push%29&password=PW"), 800 "message=Tree+is+closed+%28preparing+to+push%29&password=PW"),
793 ""], 801 ""],
794 ["https://v8-status.appspot.com/status", 802 ["https://v8-status.appspot.com/status",
795 ("username=v8-auto-roll%40chromium.org&" 803 ("username=v8-auto-roll%40chromium.org&"
796 "message=Tree+is+throttled&password=PW"), ""], 804 "message=Tree+is+throttled&password=PW"), ""],
797 ]) 805 ])
798 806
799 self.ExpectGit([ 807 self.ExpectGit([
800 ["status -s -uno", ""], 808 ["status -s -uno", ""],
801 ["status -s -b -uno", "## some_branch\n"], 809 ["status -s -b -uno", "## some_branch\n"],
802 ["svn fetch", ""], 810 ["svn fetch", ""],
803 ["svn log -1 --oneline", "r100 | Text"], 811 ["svn log -1 --oneline", "r100 | Text"],
804 [("log -1 --format=%H --grep=\"" 812 [("log -1 --format=%H --grep=\""
805 "^Version [[:digit:]]*\.[[:digit:]]*\.[[:digit:]]* (based\"" 813 "^Version [[:digit:]]*\.[[:digit:]]*\.[[:digit:]]* (based\""
806 " svn/trunk"), "push_hash\n"], 814 " svn/trunk"), "push_hash\n"],
807 ["svn find-rev push_hash", "65"], 815 ["svn find-rev push_hash", "65"],
808 ]) 816 ])
809 817
810 auto_roll.RunAutoRoll(TEST_CONFIG, AutoRollOptions( 818 options = auto_roll.BuildOptions().parse_args(
811 MakeOptions(status_password=status_password)), self) 819 AUTO_ROLL_ARGS + ["--status-password", password])
820 auto_roll.RunAutoRoll(TEST_CONFIG, AutoRollOptions(options), self)
812 821
813 state = json.loads(FileToText("%s-state.json" 822 state = json.loads(FileToText("%s-state.json"
814 % TEST_CONFIG[PERSISTFILE_BASENAME])) 823 % TEST_CONFIG[PERSISTFILE_BASENAME]))
815 824
816 self.assertEquals("100", state["lkgr"]) 825 self.assertEquals("100", state["lkgr"])
817 self.assertEquals("100", state["latest"]) 826 self.assertEquals("100", state["latest"])
818 827
819 def testAutoRollStoppedBySettings(self): 828 def testAutoRollStoppedBySettings(self):
820 TEST_CONFIG[DOT_GIT_LOCATION] = self.MakeEmptyTempFile() 829 TEST_CONFIG[DOT_GIT_LOCATION] = self.MakeEmptyTempFile()
821 TEST_CONFIG[SETTINGS_LOCATION] = self.MakeEmptyTempFile() 830 TEST_CONFIG[SETTINGS_LOCATION] = self.MakeEmptyTempFile()
822 TextToFile("{\"enable_auto_roll\": false}", TEST_CONFIG[SETTINGS_LOCATION]) 831 TextToFile("{\"enable_auto_roll\": false}", TEST_CONFIG[SETTINGS_LOCATION])
823 832
824 self.ExpectReadURL([]) 833 self.ExpectReadURL([])
825 834
826 self.ExpectGit([ 835 self.ExpectGit([
827 ["status -s -uno", ""], 836 ["status -s -uno", ""],
828 ["status -s -b -uno", "## some_branch\n"], 837 ["status -s -b -uno", "## some_branch\n"],
829 ["svn fetch", ""], 838 ["svn fetch", ""],
830 ]) 839 ])
831 840
841 options = auto_roll.BuildOptions().parse_args(AUTO_ROLL_ARGS)
832 def RunAutoRoll(): 842 def RunAutoRoll():
833 auto_roll.RunAutoRoll(TEST_CONFIG, AutoRollOptions(MakeOptions()), self) 843 auto_roll.RunAutoRoll(TEST_CONFIG, AutoRollOptions(options), self)
834 self.assertRaises(Exception, RunAutoRoll) 844 self.assertRaises(Exception, RunAutoRoll)
835 845
836 def testAutoRollStoppedByTreeStatus(self): 846 def testAutoRollStoppedByTreeStatus(self):
837 TEST_CONFIG[DOT_GIT_LOCATION] = self.MakeEmptyTempFile() 847 TEST_CONFIG[DOT_GIT_LOCATION] = self.MakeEmptyTempFile()
838 TEST_CONFIG[SETTINGS_LOCATION] = "~/.doesnotexist" 848 TEST_CONFIG[SETTINGS_LOCATION] = "~/.doesnotexist"
839 849
840 self.ExpectReadURL([ 850 self.ExpectReadURL([
841 ["https://v8-status.appspot.com/current?format=json", 851 ["https://v8-status.appspot.com/current?format=json",
842 "{\"message\": \"Tree is throttled (no push)\"}"], 852 "{\"message\": \"Tree is throttled (no push)\"}"],
843 ]) 853 ])
844 854
845 self.ExpectGit([ 855 self.ExpectGit([
846 ["status -s -uno", ""], 856 ["status -s -uno", ""],
847 ["status -s -b -uno", "## some_branch\n"], 857 ["status -s -b -uno", "## some_branch\n"],
848 ["svn fetch", ""], 858 ["svn fetch", ""],
849 ]) 859 ])
850 860
861 options = auto_roll.BuildOptions().parse_args(AUTO_ROLL_ARGS)
851 def RunAutoRoll(): 862 def RunAutoRoll():
852 auto_roll.RunAutoRoll(TEST_CONFIG, AutoRollOptions(MakeOptions()), self) 863 auto_roll.RunAutoRoll(TEST_CONFIG, AutoRollOptions(options), self)
853 self.assertRaises(Exception, RunAutoRoll) 864 self.assertRaises(Exception, RunAutoRoll)
854 865
855 def testMergeToBranch(self): 866 def testMergeToBranch(self):
856 TEST_CONFIG[ALREADY_MERGING_SENTINEL_FILE] = self.MakeEmptyTempFile() 867 TEST_CONFIG[ALREADY_MERGING_SENTINEL_FILE] = self.MakeEmptyTempFile()
857 TEST_CONFIG[DOT_GIT_LOCATION] = self.MakeEmptyTempFile() 868 TEST_CONFIG[DOT_GIT_LOCATION] = self.MakeEmptyTempFile()
858 TEST_CONFIG[VERSION_FILE] = self.MakeTempVersionFile() 869 TEST_CONFIG[VERSION_FILE] = self.MakeTempVersionFile()
859 os.environ["EDITOR"] = "vi" 870 os.environ["EDITOR"] = "vi"
860 extra_patch = self.MakeEmptyTempFile() 871 extra_patch = self.MakeEmptyTempFile()
861 872
862 def VerifyPatch(patch): 873 def VerifyPatch(patch):
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
959 ["branch -D %s" % TEST_CONFIG[BRANCHNAME], ""], 970 ["branch -D %s" % TEST_CONFIG[BRANCHNAME], ""],
960 ]) 971 ])
961 972
962 self.ExpectReadline([ 973 self.ExpectReadline([
963 "Y", # Automatically add corresponding ports (34567, 56789)? 974 "Y", # Automatically add corresponding ports (34567, 56789)?
964 "Y", # Automatically increment patch level? 975 "Y", # Automatically increment patch level?
965 "reviewer@chromium.org", # V8 reviewer. 976 "reviewer@chromium.org", # V8 reviewer.
966 "LGTM", # Enter LGTM for V8 CL. 977 "LGTM", # Enter LGTM for V8 CL.
967 ]) 978 ])
968 979
969 options = MakeOptions(p=extra_patch, f=True)
970 # r12345 and r34567 are patches. r23456 (included) and r45678 are the MIPS 980 # r12345 and r34567 are patches. r23456 (included) and r45678 are the MIPS
971 # ports of r12345. r56789 is the MIPS port of r34567. 981 # ports of r12345. r56789 is the MIPS port of r34567.
972 args = ["trunk", "12345", "23456", "34567"] 982 args = ["-f", "-p", extra_patch, "--branch", "trunk", "12345", "23456",
973 self.assertTrue(merge_to_branch.ProcessOptions(options, args)) 983 "34567"]
984 options = merge_to_branch.BuildOptions().parse_args(args)
985 self.assertTrue(merge_to_branch.ProcessOptions(options))
974 986
975 # The first run of the script stops because of the svn being down. 987 # The first run of the script stops because of the svn being down.
976 self.assertRaises(GitFailedException, 988 self.assertRaises(GitFailedException,
977 lambda: RunMergeToBranch(TEST_CONFIG, 989 lambda: RunMergeToBranch(TEST_CONFIG,
978 MergeToBranchOptions(options, args), 990 MergeToBranchOptions(options),
979 self)) 991 self))
980 992
981 # Test that state recovery after restarting the script works. 993 # Test that state recovery after restarting the script works.
982 options.s = 3 994 options.s = 3
983 RunMergeToBranch(TEST_CONFIG, MergeToBranchOptions(options, args), self) 995 RunMergeToBranch(TEST_CONFIG, MergeToBranchOptions(options), self)
984 996
985 997
986 class SystemTest(unittest.TestCase): 998 class SystemTest(unittest.TestCase):
987 def testReload(self): 999 def testReload(self):
988 step = MakeStep(step_class=PrepareChangeLog, number=0, state={}, config={}, 1000 step = MakeStep(step_class=PrepareChangeLog, number=0, state={}, config={},
989 options=CommonOptions(MakeOptions()), 1001 options=CommonOptions(MakeOptions()),
990 side_effect_handler=DEFAULT_SIDE_EFFECT_HANDLER) 1002 side_effect_handler=DEFAULT_SIDE_EFFECT_HANDLER)
991 body = step.Reload( 1003 body = step.Reload(
992 """------------------------------------------------------------------------ 1004 """------------------------------------------------------------------------
993 r17997 | machenbach@chromium.org | 2013-11-22 11:04:04 +0100 (...) | 6 lines 1005 r17997 | machenbach@chromium.org | 2013-11-22 11:04:04 +0100 (...) | 6 lines
994 1006
995 Prepare push to trunk. Now working on version 3.23.11. 1007 Prepare push to trunk. Now working on version 3.23.11.
996 1008
997 R=danno@chromium.org 1009 R=danno@chromium.org
998 1010
999 Review URL: https://codereview.chromium.org/83173002 1011 Review URL: https://codereview.chromium.org/83173002
1000 1012
1001 ------------------------------------------------------------------------""") 1013 ------------------------------------------------------------------------""")
1002 self.assertEquals( 1014 self.assertEquals(
1003 """Prepare push to trunk. Now working on version 3.23.11. 1015 """Prepare push to trunk. Now working on version 3.23.11.
1004 1016
1005 R=danno@chromium.org 1017 R=danno@chromium.org
1006 1018
1007 Committed: https://code.google.com/p/v8/source/detail?r=17997""", body) 1019 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