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 15 matching lines...) Expand all Loading... |
26 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 26 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
27 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 27 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
28 | 28 |
29 import os | 29 import os |
30 import shutil | 30 import shutil |
31 import tempfile | 31 import tempfile |
32 import traceback | 32 import traceback |
33 import unittest | 33 import unittest |
34 | 34 |
35 import auto_push | 35 import auto_push |
36 from auto_push import CheckLastPush | 36 from auto_push import LastReleaseBailout |
37 import auto_roll | 37 import auto_roll |
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_candidates | 42 import push_to_candidates |
43 from push_to_candidates import * | 43 from push_to_candidates import * |
44 import chromium_roll | 44 import chromium_roll |
45 from chromium_roll import ChromiumRoll | 45 from chromium_roll import ChromiumRoll |
46 import releases | 46 import releases |
(...skipping 728 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
775 expectations = [] | 775 expectations = [] |
776 if not force: | 776 if not force: |
777 expectations.append(Cmd("which vi", "/usr/bin/vi")) | 777 expectations.append(Cmd("which vi", "/usr/bin/vi")) |
778 expectations += [ | 778 expectations += [ |
779 Cmd("git status -s -uno", ""), | 779 Cmd("git status -s -uno", ""), |
780 Cmd("git status -s -b -uno", "## some_branch\n"), | 780 Cmd("git status -s -b -uno", "## some_branch\n"), |
781 Cmd("git fetch", ""), | 781 Cmd("git fetch", ""), |
782 Cmd("git branch", " branch1\n* branch2\n"), | 782 Cmd("git branch", " branch1\n* branch2\n"), |
783 Cmd("git branch", " branch1\n* branch2\n"), | 783 Cmd("git branch", " branch1\n* branch2\n"), |
784 Cmd(("git new-branch %s --upstream origin/master" % | 784 Cmd(("git new-branch %s --upstream origin/master" % |
785 TEST_CONFIG["BRANCHNAME"]), | 785 TEST_CONFIG["BRANCHNAME"]), ""), |
786 ""), | |
787 Cmd(("git log -1 --format=%H --grep=" | |
788 "\"^Version [[:digit:]]*\.[[:digit:]]*\.[[:digit:]]* (based\" " | |
789 "origin/candidates"), "hash2\n"), | |
790 Cmd("git log -1 hash2", "Log message\n"), | |
791 ] | |
792 if manual: | |
793 expectations.append(RL("Y")) # Confirm last push. | |
794 expectations += [ | |
795 Cmd("git log -1 --format=%s hash2", | |
796 "Version 3.4.5 (based on abc3)\n"), | |
797 Cmd("git fetch origin +refs/tags/*:refs/tags/*", ""), | 786 Cmd("git fetch origin +refs/tags/*:refs/tags/*", ""), |
798 Cmd("git tag", self.TAGS), | 787 Cmd("git tag", self.TAGS), |
799 Cmd("git checkout -f origin/master -- src/version.cc", | 788 Cmd("git checkout -f origin/master -- src/version.cc", |
800 "", cb=self.WriteFakeVersionFile), | 789 "", cb=self.WriteFakeVersionFile), |
| 790 Cmd("git log -1 --format=%H 3.22.4", "release_hash\n"), |
| 791 Cmd("git log -1 --format=%s release_hash", |
| 792 "Version 3.22.4 (based on abc3)\n"), |
801 Cmd("git log --format=%H abc3..push_hash", "rev1\n"), | 793 Cmd("git log --format=%H abc3..push_hash", "rev1\n"), |
802 Cmd("git log -1 --format=%s rev1", "Log text 1.\n"), | 794 Cmd("git log -1 --format=%s rev1", "Log text 1.\n"), |
803 Cmd("git log -1 --format=%B rev1", "Text\nLOG=YES\nBUG=v8:321\nText\n"), | 795 Cmd("git log -1 --format=%B rev1", "Text\nLOG=YES\nBUG=v8:321\nText\n"), |
804 Cmd("git log -1 --format=%an rev1", "author1@chromium.org\n"), | 796 Cmd("git log -1 --format=%an rev1", "author1@chromium.org\n"), |
805 ] | 797 ] |
806 if manual: | 798 if manual: |
807 expectations.append(RL("")) # Open editor. | 799 expectations.append(RL("")) # Open editor. |
808 if not force: | 800 if not force: |
809 expectations.append( | 801 expectations.append( |
810 Cmd("vi %s" % TEST_CONFIG["CHANGELOG_ENTRY_FILE"], "")) | 802 Cmd("vi %s" % TEST_CONFIG["CHANGELOG_ENTRY_FILE"], "")) |
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
903 | 895 |
904 # Write fake deps file. | 896 # Write fake deps file. |
905 TextToFile("Some line\n \"v8_revision\": \"123444\",\n some line", | 897 TextToFile("Some line\n \"v8_revision\": \"123444\",\n some line", |
906 os.path.join(chrome_dir, "DEPS")) | 898 os.path.join(chrome_dir, "DEPS")) |
907 def WriteDeps(): | 899 def WriteDeps(): |
908 TextToFile("Some line\n \"v8_revision\": \"22624\",\n some line", | 900 TextToFile("Some line\n \"v8_revision\": \"22624\",\n some line", |
909 os.path.join(chrome_dir, "DEPS")) | 901 os.path.join(chrome_dir, "DEPS")) |
910 | 902 |
911 expectations = [ | 903 expectations = [ |
912 Cmd("git fetch origin", ""), | 904 Cmd("git fetch origin", ""), |
913 Cmd(("git log -1 --format=%H --grep=" | 905 Cmd("git fetch origin +refs/tags/*:refs/tags/*", ""), |
914 "\"^Version [[:digit:]]*\.[[:digit:]]*\.[[:digit:]]*\" " | 906 Cmd("git tag", self.TAGS), |
915 "origin/candidates"), "push_hash\n"), | 907 Cmd("git log -1 --format=%H 3.22.4", "push_hash\n"), |
916 Cmd("git log -1 --format=%s push_hash", | 908 Cmd("git log -1 --format=%s push_hash", |
917 "Version 3.22.5 (based on abc)\n"), | 909 "Version 3.22.5 (based on abc)\n"), |
918 URL("https://chromium-build.appspot.com/p/chromium/sheriff_v8.js", | 910 URL("https://chromium-build.appspot.com/p/chromium/sheriff_v8.js", |
919 "document.write('g_name')"), | 911 "document.write('g_name')"), |
920 Cmd("git status -s -uno", "", cwd=chrome_dir), | 912 Cmd("git status -s -uno", "", cwd=chrome_dir), |
921 Cmd("git checkout -f master", "", cwd=chrome_dir), | 913 Cmd("git checkout -f master", "", cwd=chrome_dir), |
922 Cmd("gclient sync --nohooks", "syncing...", cwd=chrome_dir), | 914 Cmd("gclient sync --nohooks", "syncing...", cwd=chrome_dir), |
923 Cmd("git pull", "", cwd=chrome_dir), | 915 Cmd("git pull", "", cwd=chrome_dir), |
924 Cmd("git fetch origin", ""), | 916 Cmd("git fetch origin", ""), |
925 Cmd("git new-branch v8-roll-push_hash", "", cwd=chrome_dir), | 917 Cmd("git new-branch v8-roll-push_hash", "", cwd=chrome_dir), |
(...skipping 12 matching lines...) Expand all Loading... |
938 args = ["-a", "author@chromium.org", "-c", chrome_dir, | 930 args = ["-a", "author@chromium.org", "-c", chrome_dir, |
939 "--sheriff", "--googlers-mapping", googlers_mapping_py, | 931 "--sheriff", "--googlers-mapping", googlers_mapping_py, |
940 "-r", "reviewer@chromium.org"] | 932 "-r", "reviewer@chromium.org"] |
941 ChromiumRoll(TEST_CONFIG, self).Run(args) | 933 ChromiumRoll(TEST_CONFIG, self).Run(args) |
942 | 934 |
943 deps = FileToText(os.path.join(chrome_dir, "DEPS")) | 935 deps = FileToText(os.path.join(chrome_dir, "DEPS")) |
944 self.assertTrue(re.search("\"v8_revision\": \"22624\"", deps)) | 936 self.assertTrue(re.search("\"v8_revision\": \"22624\"", deps)) |
945 | 937 |
946 def testCheckLastPushRecently(self): | 938 def testCheckLastPushRecently(self): |
947 self.Expect([ | 939 self.Expect([ |
948 Cmd(("git log -1 --format=%H --grep=" | 940 Cmd("git fetch origin +refs/tags/*:refs/tags/*", ""), |
949 "\"^Version [[:digit:]]*\.[[:digit:]]*\.[[:digit:]]* (based\" " | 941 Cmd("git tag", self.TAGS), |
950 "origin/candidates"), "hash2\n"), | 942 Cmd("git log -1 --format=%H 3.22.4", "release_hash\n"), |
951 Cmd("git log -1 --format=%s hash2", | 943 Cmd("git log -1 --format=%s release_hash", |
952 "Version 3.4.5 (based on abc123)\n"), | 944 "Version 3.22.4 (based on abc3)\n"), |
| 945 Cmd("git log --format=%H abc3..abc123", "\n"), |
953 ]) | 946 ]) |
954 | 947 |
955 self._state["candidate"] = "abc123" | 948 self._state["candidate"] = "abc123" |
956 self.assertEquals(0, self.RunStep( | 949 self.assertEquals(0, self.RunStep( |
957 auto_push.AutoPush, CheckLastPush, AUTO_PUSH_ARGS)) | 950 auto_push.AutoPush, LastReleaseBailout, AUTO_PUSH_ARGS)) |
958 | 951 |
959 def testAutoPush(self): | 952 def testAutoPush(self): |
960 TextToFile("", os.path.join(TEST_CONFIG["DEFAULT_CWD"], ".git")) | 953 TextToFile("", os.path.join(TEST_CONFIG["DEFAULT_CWD"], ".git")) |
961 | 954 |
962 self.Expect([ | 955 self.Expect([ |
963 Cmd("git status -s -uno", ""), | 956 Cmd("git status -s -uno", ""), |
964 Cmd("git status -s -b -uno", "## some_branch\n"), | 957 Cmd("git status -s -b -uno", "## some_branch\n"), |
965 Cmd("git fetch", ""), | 958 Cmd("git fetch", ""), |
966 Cmd("git fetch origin +refs/heads/candidate:refs/heads/candidate", ""), | 959 Cmd("git fetch origin +refs/heads/roll:refs/heads/roll", ""), |
967 Cmd("git show-ref -s refs/heads/candidate", "abc123\n"), | 960 Cmd("git show-ref -s refs/heads/roll", "abc123\n"), |
968 Cmd(("git log -1 --format=%H --grep=\"" | 961 Cmd("git fetch origin +refs/tags/*:refs/tags/*", ""), |
969 "^Version [[:digit:]]*\.[[:digit:]]*\.[[:digit:]]* (based\"" | 962 Cmd("git tag", self.TAGS), |
970 " origin/candidates"), "push_hash\n"), | 963 Cmd("git log -1 --format=%H 3.22.4", "release_hash\n"), |
971 Cmd("git log -1 --format=%s push_hash", | 964 Cmd("git log -1 --format=%s release_hash", |
972 "Version 3.4.5 (based on abc101)\n"), | 965 "Version 3.22.4 (based on abc3)\n"), |
| 966 Cmd("git log --format=%H abc3..abc123", "some_stuff\n"), |
973 ]) | 967 ]) |
974 | 968 |
975 auto_push.AutoPush(TEST_CONFIG, self).Run(AUTO_PUSH_ARGS + ["--push"]) | 969 auto_push.AutoPush(TEST_CONFIG, self).Run(AUTO_PUSH_ARGS + ["--push"]) |
976 | 970 |
977 state = json.loads(FileToText("%s-state.json" | 971 state = json.loads(FileToText("%s-state.json" |
978 % TEST_CONFIG["PERSISTFILE_BASENAME"])) | 972 % TEST_CONFIG["PERSISTFILE_BASENAME"])) |
979 | 973 |
980 self.assertEquals("abc123", state["candidate"]) | 974 self.assertEquals("abc123", state["candidate"]) |
981 | 975 |
982 def testAutoRollExistingRoll(self): | 976 def testAutoRollExistingRoll(self): |
(...skipping 20 matching lines...) Expand all Loading... |
1003 } | 997 } |
1004 """ | 998 """ |
1005 | 999 |
1006 def testAutoRollUpToDate(self): | 1000 def testAutoRollUpToDate(self): |
1007 TEST_CONFIG["CHROMIUM"] = self.MakeEmptyTempDirectory() | 1001 TEST_CONFIG["CHROMIUM"] = self.MakeEmptyTempDirectory() |
1008 TextToFile(self.FAKE_DEPS, os.path.join(TEST_CONFIG["CHROMIUM"], "DEPS")) | 1002 TextToFile(self.FAKE_DEPS, os.path.join(TEST_CONFIG["CHROMIUM"], "DEPS")) |
1009 self.Expect([ | 1003 self.Expect([ |
1010 URL("https://codereview.chromium.org/search", | 1004 URL("https://codereview.chromium.org/search", |
1011 "owner=author%40chromium.org&limit=30&closed=3&format=json", | 1005 "owner=author%40chromium.org&limit=30&closed=3&format=json", |
1012 ("{\"results\": [{\"subject\": \"different\"}]}")), | 1006 ("{\"results\": [{\"subject\": \"different\"}]}")), |
1013 Cmd("git fetch", ""), | 1007 Cmd("git fetch origin +refs/tags/*:refs/tags/*", ""), |
1014 Cmd(("git log -1 --format=%H --grep=" | 1008 Cmd("git tag", self.TAGS), |
1015 "\"^Version [[:digit:]]*\.[[:digit:]]*\.[[:digit:]]*\" " | 1009 Cmd("git log -1 --format=%H 3.22.4", "push_hash\n"), |
1016 "origin/candidates"), "push_hash\n"), | |
1017 Cmd("git log -1 --format=%B push_hash", self.C_V8_22624_LOG), | |
1018 Cmd("git log -1 --format=%B abcd123455", self.C_V8_123455_LOG), | |
1019 ]) | 1010 ]) |
1020 | 1011 |
1021 result = auto_roll.AutoRoll(TEST_CONFIG, self).Run( | 1012 result = auto_roll.AutoRoll(TEST_CONFIG, self).Run( |
1022 AUTO_PUSH_ARGS + ["-c", TEST_CONFIG["CHROMIUM"]]) | 1013 AUTO_PUSH_ARGS + ["-c", TEST_CONFIG["CHROMIUM"]]) |
1023 self.assertEquals(0, result) | 1014 self.assertEquals(0, result) |
1024 | 1015 |
1025 def testAutoRoll(self): | 1016 def testAutoRoll(self): |
1026 TEST_CONFIG["CHROMIUM"] = self.MakeEmptyTempDirectory() | 1017 TEST_CONFIG["CHROMIUM"] = self.MakeEmptyTempDirectory() |
1027 TextToFile(self.FAKE_DEPS, os.path.join(TEST_CONFIG["CHROMIUM"], "DEPS")) | 1018 TextToFile(self.FAKE_DEPS, os.path.join(TEST_CONFIG["CHROMIUM"], "DEPS")) |
1028 TEST_CONFIG["CLUSTERFUZZ_API_KEY_FILE"] = self.MakeEmptyTempFile() | 1019 TEST_CONFIG["CLUSTERFUZZ_API_KEY_FILE"] = self.MakeEmptyTempFile() |
1029 TextToFile("fake key", TEST_CONFIG["CLUSTERFUZZ_API_KEY_FILE"]) | 1020 TextToFile("fake key", TEST_CONFIG["CLUSTERFUZZ_API_KEY_FILE"]) |
1030 | 1021 |
1031 self.Expect([ | 1022 self.Expect([ |
1032 URL("https://codereview.chromium.org/search", | 1023 URL("https://codereview.chromium.org/search", |
1033 "owner=author%40chromium.org&limit=30&closed=3&format=json", | 1024 "owner=author%40chromium.org&limit=30&closed=3&format=json", |
1034 ("{\"results\": [{\"subject\": \"different\"}]}")), | 1025 ("{\"results\": [{\"subject\": \"different\"}]}")), |
1035 Cmd("git fetch", ""), | 1026 Cmd("git fetch origin +refs/tags/*:refs/tags/*", ""), |
1036 Cmd(("git log -1 --format=%H --grep=" | 1027 Cmd("git tag", self.TAGS), |
1037 "\"^Version [[:digit:]]*\.[[:digit:]]*\.[[:digit:]]*\" " | 1028 Cmd("git log -1 --format=%H 3.22.4", "push_hash\n"), |
1038 "origin/candidates"), "push_hash\n"), | |
1039 Cmd("git log -1 --format=%B push_hash", self.C_V8_123456_LOG), | |
1040 Cmd("git log -1 --format=%B abcd123455", self.C_V8_123455_LOG), | |
1041 ]) | 1029 ]) |
1042 | 1030 |
1043 result = auto_roll.AutoRoll(TEST_CONFIG, self).Run( | 1031 result = auto_roll.AutoRoll(TEST_CONFIG, self).Run( |
1044 AUTO_PUSH_ARGS + ["-c", TEST_CONFIG["CHROMIUM"], "--roll"]) | 1032 AUTO_PUSH_ARGS + ["-c", TEST_CONFIG["CHROMIUM"], "--roll"]) |
1045 self.assertEquals(0, result) | 1033 self.assertEquals(0, result) |
1046 | 1034 |
1047 def testMergeToBranch(self): | 1035 def testMergeToBranch(self): |
1048 TEST_CONFIG["ALREADY_MERGING_SENTINEL_FILE"] = self.MakeEmptyTempFile() | 1036 TEST_CONFIG["ALREADY_MERGING_SENTINEL_FILE"] = self.MakeEmptyTempFile() |
1049 TextToFile("", os.path.join(TEST_CONFIG["DEFAULT_CWD"], ".git")) | 1037 TextToFile("", os.path.join(TEST_CONFIG["DEFAULT_CWD"], ".git")) |
1050 self.WriteFakeVersionFile(build=5) | 1038 self.WriteFakeVersionFile(build=5) |
(...skipping 341 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1392 | 1380 |
1393 Review URL: https://codereview.chromium.org/83173002 | 1381 Review URL: https://codereview.chromium.org/83173002 |
1394 | 1382 |
1395 ------------------------------------------------------------------------""") | 1383 ------------------------------------------------------------------------""") |
1396 self.assertEquals( | 1384 self.assertEquals( |
1397 """Prepare push to trunk. Now working on version 3.23.11. | 1385 """Prepare push to trunk. Now working on version 3.23.11. |
1398 | 1386 |
1399 R=danno@chromium.org | 1387 R=danno@chromium.org |
1400 | 1388 |
1401 Committed: https://code.google.com/p/v8/source/detail?r=17997""", body) | 1389 Committed: https://code.google.com/p/v8/source/detail?r=17997""", body) |
OLD | NEW |