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

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

Issue 266083003: Remove old branch logic from push scripts. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Fix logging subprocesses. Created 6 years, 7 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/releases.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 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
46 from chromium_roll import DEPS_FILE 46 from chromium_roll import DEPS_FILE
47 from chromium_roll import ChromiumRoll 47 from chromium_roll import ChromiumRoll
48 import releases 48 import releases
49 from releases import Releases 49 from releases import Releases
50 50
51 51
52 TEST_CONFIG = { 52 TEST_CONFIG = {
53 BRANCHNAME: "test-prepare-push", 53 BRANCHNAME: "test-prepare-push",
54 TRUNKBRANCH: "test-trunk-push", 54 TRUNKBRANCH: "test-trunk-push",
55 PERSISTFILE_BASENAME: "/tmp/test-v8-push-to-trunk-tempfile", 55 PERSISTFILE_BASENAME: "/tmp/test-v8-push-to-trunk-tempfile",
56 TEMP_BRANCH: "test-prepare-push-temporary-branch-created-by-script",
57 DOT_GIT_LOCATION: None, 56 DOT_GIT_LOCATION: None,
58 VERSION_FILE: None, 57 VERSION_FILE: None,
59 CHANGELOG_FILE: None, 58 CHANGELOG_FILE: None,
60 CHANGELOG_ENTRY_FILE: "/tmp/test-v8-push-to-trunk-tempfile-changelog-entry", 59 CHANGELOG_ENTRY_FILE: "/tmp/test-v8-push-to-trunk-tempfile-changelog-entry",
61 PATCH_FILE: "/tmp/test-v8-push-to-trunk-tempfile-patch", 60 PATCH_FILE: "/tmp/test-v8-push-to-trunk-tempfile-patch",
62 COMMITMSG_FILE: "/tmp/test-v8-push-to-trunk-tempfile-commitmsg", 61 COMMITMSG_FILE: "/tmp/test-v8-push-to-trunk-tempfile-commitmsg",
63 CHROMIUM: "/tmp/test-v8-push-to-trunk-tempfile-chromium", 62 CHROMIUM: "/tmp/test-v8-push-to-trunk-tempfile-chromium",
64 DEPS_FILE: "/tmp/test-v8-push-to-trunk-tempfile-chromium/DEPS", 63 DEPS_FILE: "/tmp/test-v8-push-to-trunk-tempfile-chromium/DEPS",
65 SETTINGS_LOCATION: None, 64 SETTINGS_LOCATION: None,
66 ALREADY_MERGING_SENTINEL_FILE: 65 ALREADY_MERGING_SENTINEL_FILE:
(...skipping 361 matching lines...) Expand 10 before | Expand all | Expand 10 after
428 def testGitMock(self): 427 def testGitMock(self):
429 self.ExpectGit([Git("--version", "git version 1.2.3"), Git("dummy", "")]) 428 self.ExpectGit([Git("--version", "git version 1.2.3"), Git("dummy", "")])
430 self.assertEquals("git version 1.2.3", self.MakeStep().Git("--version")) 429 self.assertEquals("git version 1.2.3", self.MakeStep().Git("--version"))
431 self.assertEquals("", self.MakeStep().Git("dummy")) 430 self.assertEquals("", self.MakeStep().Git("dummy"))
432 431
433 def testCommonPrepareDefault(self): 432 def testCommonPrepareDefault(self):
434 self.ExpectGit([ 433 self.ExpectGit([
435 Git("status -s -uno", ""), 434 Git("status -s -uno", ""),
436 Git("status -s -b -uno", "## some_branch"), 435 Git("status -s -b -uno", "## some_branch"),
437 Git("svn fetch", ""), 436 Git("svn fetch", ""),
438 Git("branch", " branch1\n* %s" % TEST_CONFIG[TEMP_BRANCH]), 437 Git("branch", " branch1\n* %s" % TEST_CONFIG[BRANCHNAME]),
439 Git("branch -D %s" % TEST_CONFIG[TEMP_BRANCH], ""), 438 Git("branch -D %s" % TEST_CONFIG[BRANCHNAME], ""),
440 Git("checkout -b %s" % TEST_CONFIG[TEMP_BRANCH], ""),
441 Git("branch", ""),
442 ]) 439 ])
443 self.ExpectReadline([RL("Y")]) 440 self.ExpectReadline([RL("Y")])
444 self.MakeStep().CommonPrepare() 441 self.MakeStep().CommonPrepare()
445 self.MakeStep().PrepareBranch() 442 self.MakeStep().PrepareBranch()
446 self.assertEquals("some_branch", self._state["current_branch"]) 443 self.assertEquals("some_branch", self._state["current_branch"])
447 444
448 def testCommonPrepareNoConfirm(self): 445 def testCommonPrepareNoConfirm(self):
449 self.ExpectGit([ 446 self.ExpectGit([
450 Git("status -s -uno", ""), 447 Git("status -s -uno", ""),
451 Git("status -s -b -uno", "## some_branch"), 448 Git("status -s -b -uno", "## some_branch"),
452 Git("svn fetch", ""), 449 Git("svn fetch", ""),
453 Git("branch", " branch1\n* %s" % TEST_CONFIG[TEMP_BRANCH]), 450 Git("branch", " branch1\n* %s" % TEST_CONFIG[BRANCHNAME]),
454 ]) 451 ])
455 self.ExpectReadline([RL("n")]) 452 self.ExpectReadline([RL("n")])
456 self.MakeStep().CommonPrepare() 453 self.MakeStep().CommonPrepare()
457 self.assertRaises(Exception, self.MakeStep().PrepareBranch) 454 self.assertRaises(Exception, self.MakeStep().PrepareBranch)
458 self.assertEquals("some_branch", self._state["current_branch"]) 455 self.assertEquals("some_branch", self._state["current_branch"])
459 456
460 def testCommonPrepareDeleteBranchFailure(self): 457 def testCommonPrepareDeleteBranchFailure(self):
461 self.ExpectGit([ 458 self.ExpectGit([
462 Git("status -s -uno", ""), 459 Git("status -s -uno", ""),
463 Git("status -s -b -uno", "## some_branch"), 460 Git("status -s -b -uno", "## some_branch"),
464 Git("svn fetch", ""), 461 Git("svn fetch", ""),
465 Git("branch", " branch1\n* %s" % TEST_CONFIG[TEMP_BRANCH]), 462 Git("branch", " branch1\n* %s" % TEST_CONFIG[BRANCHNAME]),
466 Git("branch -D %s" % TEST_CONFIG[TEMP_BRANCH], None), 463 Git("branch -D %s" % TEST_CONFIG[BRANCHNAME], None),
467 ]) 464 ])
468 self.ExpectReadline([RL("Y")]) 465 self.ExpectReadline([RL("Y")])
469 self.MakeStep().CommonPrepare() 466 self.MakeStep().CommonPrepare()
470 self.assertRaises(Exception, self.MakeStep().PrepareBranch) 467 self.assertRaises(Exception, self.MakeStep().PrepareBranch)
471 self.assertEquals("some_branch", self._state["current_branch"]) 468 self.assertEquals("some_branch", self._state["current_branch"])
472 469
473 def testInitialEnvironmentChecks(self): 470 def testInitialEnvironmentChecks(self):
474 TEST_CONFIG[DOT_GIT_LOCATION] = self.MakeEmptyTempFile() 471 TEST_CONFIG[DOT_GIT_LOCATION] = self.MakeEmptyTempFile()
475 os.environ["EDITOR"] = "vi" 472 os.environ["EDITOR"] = "vi"
476 self.MakeStep().InitialEnvironmentChecks() 473 self.MakeStep().InitialEnvironmentChecks()
(...skipping 243 matching lines...) Expand 10 before | Expand all | Expand 10 after
720 717
721 Performance and stability improvements on all platforms.\n""", 718 Performance and stability improvements on all platforms.\n""",
722 change_log) 719 change_log)
723 720
724 force_flag = " -f" if not manual else "" 721 force_flag = " -f" if not manual else ""
725 self.ExpectGit([ 722 self.ExpectGit([
726 Git("status -s -uno", ""), 723 Git("status -s -uno", ""),
727 Git("status -s -b -uno", "## some_branch\n"), 724 Git("status -s -b -uno", "## some_branch\n"),
728 Git("svn fetch", ""), 725 Git("svn fetch", ""),
729 Git("branch", " branch1\n* branch2\n"), 726 Git("branch", " branch1\n* branch2\n"),
730 Git("checkout -b %s" % TEST_CONFIG[TEMP_BRANCH], ""),
731 Git("branch", " branch1\n* branch2\n"),
732 Git("branch", " branch1\n* branch2\n"), 727 Git("branch", " branch1\n* branch2\n"),
733 Git("checkout -b %s svn/bleeding_edge" % TEST_CONFIG[BRANCHNAME], ""), 728 Git("checkout -b %s svn/bleeding_edge" % TEST_CONFIG[BRANCHNAME], ""),
734 Git("svn find-rev r123455", "push_hash\n"), 729 Git("svn find-rev r123455", "push_hash\n"),
735 Git(("log -1 --format=%H --grep=" 730 Git(("log -1 --format=%H --grep="
736 "\"^Version [[:digit:]]*\.[[:digit:]]*\.[[:digit:]]* (based\" " 731 "\"^Version [[:digit:]]*\.[[:digit:]]*\.[[:digit:]]* (based\" "
737 "svn/trunk"), "hash2\n"), 732 "svn/trunk"), "hash2\n"),
738 Git("log -1 hash2", "Log message\n"), 733 Git("log -1 hash2", "Log message\n"),
739 Git("log -1 --format=%s hash2", 734 Git("log -1 --format=%s hash2",
740 "Version 3.4.5 (based on bleeding_edge revision r1234)\n"), 735 "Version 3.4.5 (based on bleeding_edge revision r1234)\n"),
741 Git("svn find-rev r1234", "hash3\n"), 736 Git("svn find-rev r1234", "hash3\n"),
(...skipping 12 matching lines...) Expand all
754 Git("apply --index --reject \"%s\"" % TEST_CONFIG[PATCH_FILE], ""), 749 Git("apply --index --reject \"%s\"" % TEST_CONFIG[PATCH_FILE], ""),
755 Git("checkout -f svn/trunk -- %s" % TEST_CONFIG[CHANGELOG_FILE], "", 750 Git("checkout -f svn/trunk -- %s" % TEST_CONFIG[CHANGELOG_FILE], "",
756 cb=ResetChangeLog), 751 cb=ResetChangeLog),
757 Git("checkout -f svn/trunk -- %s" % TEST_CONFIG[VERSION_FILE], "", 752 Git("checkout -f svn/trunk -- %s" % TEST_CONFIG[VERSION_FILE], "",
758 cb=self.WriteFakeVersionFile), 753 cb=self.WriteFakeVersionFile),
759 Git("commit -aF \"%s\"" % TEST_CONFIG[COMMITMSG_FILE], "", 754 Git("commit -aF \"%s\"" % TEST_CONFIG[COMMITMSG_FILE], "",
760 cb=CheckSVNCommit), 755 cb=CheckSVNCommit),
761 Git("svn dcommit 2>&1", "Some output\nCommitted r123456\nSome output\n"), 756 Git("svn dcommit 2>&1", "Some output\nCommitted r123456\nSome output\n"),
762 Git("svn tag 3.22.5 -m \"Tagging version 3.22.5\"", ""), 757 Git("svn tag 3.22.5 -m \"Tagging version 3.22.5\"", ""),
763 Git("checkout -f some_branch", ""), 758 Git("checkout -f some_branch", ""),
764 Git("branch -D %s" % TEST_CONFIG[TEMP_BRANCH], ""),
765 Git("branch -D %s" % TEST_CONFIG[BRANCHNAME], ""), 759 Git("branch -D %s" % TEST_CONFIG[BRANCHNAME], ""),
766 Git("branch -D %s" % TEST_CONFIG[TRUNKBRANCH], ""), 760 Git("branch -D %s" % TEST_CONFIG[TRUNKBRANCH], ""),
767 ]) 761 ])
768 762
769 # Expected keyboard input in manual mode: 763 # Expected keyboard input in manual mode:
770 if manual: 764 if manual:
771 self.ExpectReadline([ 765 self.ExpectReadline([
772 RL("Y"), # Confirm last push. 766 RL("Y"), # Confirm last push.
773 RL(""), # Open editor. 767 RL(""), # Open editor.
774 RL("Y"), # Increment build number. 768 RL("Y"), # Increment build number.
(...skipping 281 matching lines...) Expand 10 before | Expand all | Expand 10 after
1056 self.assertTrue(re.search(r"#define MINOR_VERSION\s+22", version)) 1050 self.assertTrue(re.search(r"#define MINOR_VERSION\s+22", version))
1057 self.assertTrue(re.search(r"#define BUILD_NUMBER\s+5", version)) 1051 self.assertTrue(re.search(r"#define BUILD_NUMBER\s+5", version))
1058 self.assertTrue(re.search(r"#define PATCH_LEVEL\s+1", version)) 1052 self.assertTrue(re.search(r"#define PATCH_LEVEL\s+1", version))
1059 self.assertTrue(re.search(r"#define IS_CANDIDATE_VERSION\s+0", version)) 1053 self.assertTrue(re.search(r"#define IS_CANDIDATE_VERSION\s+0", version))
1060 1054
1061 self.ExpectGit([ 1055 self.ExpectGit([
1062 Git("status -s -uno", ""), 1056 Git("status -s -uno", ""),
1063 Git("status -s -b -uno", "## some_branch\n"), 1057 Git("status -s -b -uno", "## some_branch\n"),
1064 Git("svn fetch", ""), 1058 Git("svn fetch", ""),
1065 Git("branch", " branch1\n* branch2\n"), 1059 Git("branch", " branch1\n* branch2\n"),
1066 Git("checkout -b %s" % TEST_CONFIG[TEMP_BRANCH], ""),
1067 Git("branch", " branch1\n* branch2\n"),
1068 Git("checkout -b %s svn/trunk" % TEST_CONFIG[BRANCHNAME], ""), 1060 Git("checkout -b %s svn/trunk" % TEST_CONFIG[BRANCHNAME], ""),
1069 Git("log --format=%H --grep=\"Port r12345\" --reverse svn/bleeding_edge", 1061 Git("log --format=%H --grep=\"Port r12345\" --reverse svn/bleeding_edge",
1070 "hash1\nhash2"), 1062 "hash1\nhash2"),
1071 Git("svn find-rev hash1 svn/bleeding_edge", "45678"), 1063 Git("svn find-rev hash1 svn/bleeding_edge", "45678"),
1072 Git("log -1 --format=%s hash1", "Title1"), 1064 Git("log -1 --format=%s hash1", "Title1"),
1073 Git("svn find-rev hash2 svn/bleeding_edge", "23456"), 1065 Git("svn find-rev hash2 svn/bleeding_edge", "23456"),
1074 Git("log -1 --format=%s hash2", "Title2"), 1066 Git("log -1 --format=%s hash2", "Title2"),
1075 Git("log --format=%H --grep=\"Port r23456\" --reverse svn/bleeding_edge", 1067 Git("log --format=%H --grep=\"Port r23456\" --reverse svn/bleeding_edge",
1076 ""), 1068 ""),
1077 Git("log --format=%H --grep=\"Port r34567\" --reverse svn/bleeding_edge", 1069 Git("log --format=%H --grep=\"Port r34567\" --reverse svn/bleeding_edge",
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
1119 Git("cl presubmit", "Presubmit successfull\n"), 1111 Git("cl presubmit", "Presubmit successfull\n"),
1120 Git("cl dcommit -f --bypass-hooks", "Closing issue\n", cb=VerifySVNCommit) , 1112 Git("cl dcommit -f --bypass-hooks", "Closing issue\n", cb=VerifySVNCommit) ,
1121 Git("svn fetch", ""), 1113 Git("svn fetch", ""),
1122 Git(("log -1 --format=%%H --grep=\"%s\" svn/trunk" 1114 Git(("log -1 --format=%%H --grep=\"%s\" svn/trunk"
1123 % msg.replace("\"", "\\\"")), "hash6"), 1115 % msg.replace("\"", "\\\"")), "hash6"),
1124 Git("svn find-rev hash6", "1324"), 1116 Git("svn find-rev hash6", "1324"),
1125 Git(("copy -r 1324 https://v8.googlecode.com/svn/trunk " 1117 Git(("copy -r 1324 https://v8.googlecode.com/svn/trunk "
1126 "https://v8.googlecode.com/svn/tags/3.22.5.1 -m " 1118 "https://v8.googlecode.com/svn/tags/3.22.5.1 -m "
1127 "\"Tagging version 3.22.5.1\""), ""), 1119 "\"Tagging version 3.22.5.1\""), ""),
1128 Git("checkout -f some_branch", ""), 1120 Git("checkout -f some_branch", ""),
1129 Git("branch -D %s" % TEST_CONFIG[TEMP_BRANCH], ""),
1130 Git("branch -D %s" % TEST_CONFIG[BRANCHNAME], ""), 1121 Git("branch -D %s" % TEST_CONFIG[BRANCHNAME], ""),
1131 ]) 1122 ])
1132 1123
1133 self.ExpectReadline([ 1124 self.ExpectReadline([
1134 RL("Y"), # Automatically add corresponding ports (34567, 56789)? 1125 RL("Y"), # Automatically add corresponding ports (34567, 56789)?
1135 RL("Y"), # Automatically increment patch level? 1126 RL("Y"), # Automatically increment patch level?
1136 RL("reviewer@chromium.org"), # V8 reviewer. 1127 RL("reviewer@chromium.org"), # V8 reviewer.
1137 RL("LGTM"), # Enter LGTM for V8 CL. 1128 RL("LGTM"), # Enter LGTM for V8 CL.
1138 ]) 1129 ])
1139 1130
(...skipping 30 matching lines...) Expand all
1170 patch=patch) 1161 patch=patch)
1171 1162
1172 def ResetDEPS(revision): 1163 def ResetDEPS(revision):
1173 return lambda: WriteDEPS(revision) 1164 return lambda: WriteDEPS(revision)
1174 1165
1175 self.ExpectGit([ 1166 self.ExpectGit([
1176 Git("status -s -uno", ""), 1167 Git("status -s -uno", ""),
1177 Git("status -s -b -uno", "## some_branch\n"), 1168 Git("status -s -b -uno", "## some_branch\n"),
1178 Git("svn fetch", ""), 1169 Git("svn fetch", ""),
1179 Git("branch", " branch1\n* branch2\n"), 1170 Git("branch", " branch1\n* branch2\n"),
1180 Git("checkout -b %s" % TEST_CONFIG[TEMP_BRANCH], ""),
1181 Git("branch", " branch1\n* branch2\n"),
1182 Git("checkout -b %s" % TEST_CONFIG[BRANCHNAME], ""), 1171 Git("checkout -b %s" % TEST_CONFIG[BRANCHNAME], ""),
1183 Git("branch -r", " svn/3.21\n svn/3.3\n"), 1172 Git("branch -r", " svn/3.21\n svn/3.3\n"),
1184 Git("reset --hard svn/3.3", ""), 1173 Git("reset --hard svn/3.3", ""),
1185 Git("log --format=%H", "hash1\nhash2"), 1174 Git("log --format=%H", "hash1\nhash2"),
1186 Git("diff --name-only hash1 hash1^", ""), 1175 Git("diff --name-only hash1 hash1^", ""),
1187 Git("diff --name-only hash2 hash2^", TEST_CONFIG[VERSION_FILE]), 1176 Git("diff --name-only hash2 hash2^", TEST_CONFIG[VERSION_FILE]),
1188 Git("checkout -f hash2 -- %s" % TEST_CONFIG[VERSION_FILE], "", 1177 Git("checkout -f hash2 -- %s" % TEST_CONFIG[VERSION_FILE], "",
1189 cb=ResetVersion(3, 1, 1)), 1178 cb=ResetVersion(3, 1, 1)),
1190 Git("log -1 --format=%B hash2", 1179 Git("log -1 --format=%B hash2",
1191 "Version 3.3.1.1 (merged 12)\n\nReview URL: fake.com\n"), 1180 "Version 3.3.1.1 (merged 12)\n\nReview URL: fake.com\n"),
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
1229 Git("checkout -f HEAD -- %s" % TEST_CONFIG[DEPS_FILE], "", 1218 Git("checkout -f HEAD -- %s" % TEST_CONFIG[DEPS_FILE], "",
1230 cb=ResetDEPS(567)), 1219 cb=ResetDEPS(567)),
1231 Git("branch -r", " weird/123\n branch-heads/7\n"), 1220 Git("branch -r", " weird/123\n branch-heads/7\n"),
1232 Git("checkout -f branch-heads/7 -- %s" % TEST_CONFIG[DEPS_FILE], "", 1221 Git("checkout -f branch-heads/7 -- %s" % TEST_CONFIG[DEPS_FILE], "",
1233 cb=ResetDEPS(345)), 1222 cb=ResetDEPS(345)),
1234 Git("checkout -f HEAD -- %s" % TEST_CONFIG[DEPS_FILE], "", 1223 Git("checkout -f HEAD -- %s" % TEST_CONFIG[DEPS_FILE], "",
1235 cb=ResetDEPS(567)), 1224 cb=ResetDEPS(567)),
1236 Git("checkout -f master", ""), 1225 Git("checkout -f master", ""),
1237 Git("branch -D %s" % TEST_CONFIG[BRANCHNAME], ""), 1226 Git("branch -D %s" % TEST_CONFIG[BRANCHNAME], ""),
1238 Git("checkout -f some_branch", ""), 1227 Git("checkout -f some_branch", ""),
1239 Git("branch -D %s" % TEST_CONFIG[TEMP_BRANCH], ""),
1240 Git("branch -D %s" % TEST_CONFIG[BRANCHNAME], ""), 1228 Git("branch -D %s" % TEST_CONFIG[BRANCHNAME], ""),
1241 ]) 1229 ])
1242 1230
1243 args = ["-c", TEST_CONFIG[CHROMIUM], 1231 args = ["-c", TEST_CONFIG[CHROMIUM],
1244 "--json", json_output, 1232 "--json", json_output,
1245 "--csv", csv_output, 1233 "--csv", csv_output,
1246 "--max-releases", "1"] 1234 "--max-releases", "1"]
1247 Releases(TEST_CONFIG, self).Run(args) 1235 Releases(TEST_CONFIG, self).Run(args)
1248 1236
1249 # Check expected output. 1237 # Check expected output.
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
1283 1271
1284 Review URL: https://codereview.chromium.org/83173002 1272 Review URL: https://codereview.chromium.org/83173002
1285 1273
1286 ------------------------------------------------------------------------""") 1274 ------------------------------------------------------------------------""")
1287 self.assertEquals( 1275 self.assertEquals(
1288 """Prepare push to trunk. Now working on version 3.23.11. 1276 """Prepare push to trunk. Now working on version 3.23.11.
1289 1277
1290 R=danno@chromium.org 1278 R=danno@chromium.org
1291 1279
1292 Committed: https://code.google.com/p/v8/source/detail?r=17997""", body) 1280 Committed: https://code.google.com/p/v8/source/detail?r=17997""", body)
OLDNEW
« no previous file with comments | « tools/push-to-trunk/releases.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698