| 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 14 matching lines...) Expand all Loading... |
| 25 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 25 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| 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 tempfile | 30 import tempfile |
| 31 import traceback | 31 import traceback |
| 32 import unittest | 32 import unittest |
| 33 | 33 |
| 34 import auto_roll | 34 import auto_roll |
| 35 from auto_roll import AutoRollOptions | |
| 36 from auto_roll import CheckLastPush | 35 from auto_roll import CheckLastPush |
| 37 from auto_roll import FetchLatestRevision | 36 from auto_roll import FetchLatestRevision |
| 38 from auto_roll import SETTINGS_LOCATION | 37 from auto_roll import SETTINGS_LOCATION |
| 39 import common_includes | 38 import common_includes |
| 40 from common_includes import * | 39 from common_includes import * |
| 41 import merge_to_branch | 40 import merge_to_branch |
| 42 from merge_to_branch import * | 41 from merge_to_branch import * |
| 43 import push_to_trunk | 42 import push_to_trunk |
| 44 from push_to_trunk import * | 43 from push_to_trunk import * |
| 45 | 44 |
| (...skipping 19 matching lines...) Expand all Loading... |
| 65 } | 64 } |
| 66 | 65 |
| 67 | 66 |
| 68 AUTO_ROLL_ARGS = [ | 67 AUTO_ROLL_ARGS = [ |
| 69 "-a", "author@chromium.org", | 68 "-a", "author@chromium.org", |
| 70 "-c", TEST_CONFIG[CHROMIUM], | 69 "-c", TEST_CONFIG[CHROMIUM], |
| 71 "-r", "reviewer@chromium.org", | 70 "-r", "reviewer@chromium.org", |
| 72 ] | 71 ] |
| 73 | 72 |
| 74 | 73 |
| 75 def MakeOptions(s=0, l=None, f=False, m=True, r=None, c=None, a=None, | |
| 76 status_password=None, revert_bleeding_edge=None, p=None): | |
| 77 """Convenience wrapper.""" | |
| 78 class Options(object): | |
| 79 pass | |
| 80 options = Options() | |
| 81 options.step = s | |
| 82 options.last_push = l | |
| 83 options.force = f | |
| 84 options.manual = m | |
| 85 options.reviewer = r | |
| 86 options.chromium = c | |
| 87 options.author = a | |
| 88 options.push = p | |
| 89 options.status_password = status_password | |
| 90 options.revert_bleeding_edge = revert_bleeding_edge | |
| 91 return options | |
| 92 | |
| 93 | |
| 94 class ToplevelTest(unittest.TestCase): | 74 class ToplevelTest(unittest.TestCase): |
| 95 def testMakeComment(self): | 75 def testMakeComment(self): |
| 96 self.assertEquals("# Line 1\n# Line 2\n#", | 76 self.assertEquals("# Line 1\n# Line 2\n#", |
| 97 MakeComment(" Line 1\n Line 2\n")) | 77 MakeComment(" Line 1\n Line 2\n")) |
| 98 self.assertEquals("#Line 1\n#Line 2", | 78 self.assertEquals("#Line 1\n#Line 2", |
| 99 MakeComment("Line 1\n Line 2")) | 79 MakeComment("Line 1\n Line 2")) |
| 100 | 80 |
| 101 def testStripComments(self): | 81 def testStripComments(self): |
| 102 self.assertEquals(" Line 1\n Line 3\n", | 82 self.assertEquals(" Line 1\n Line 3\n", |
| 103 StripComments(" Line 1\n# Line 2\n Line 3\n#\n")) | 83 StripComments(" Line 1\n# Line 2\n Line 3\n#\n")) |
| (...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 295 f.write(" // Some line...\n") | 275 f.write(" // Some line...\n") |
| 296 f.write("\n") | 276 f.write("\n") |
| 297 f.write("#define MAJOR_VERSION 3\n") | 277 f.write("#define MAJOR_VERSION 3\n") |
| 298 f.write("#define MINOR_VERSION 22\n") | 278 f.write("#define MINOR_VERSION 22\n") |
| 299 f.write("#define BUILD_NUMBER 5\n") | 279 f.write("#define BUILD_NUMBER 5\n") |
| 300 f.write("#define PATCH_LEVEL 0\n") | 280 f.write("#define PATCH_LEVEL 0\n") |
| 301 f.write(" // Some line...\n") | 281 f.write(" // Some line...\n") |
| 302 f.write("#define IS_CANDIDATE_VERSION 0\n") | 282 f.write("#define IS_CANDIDATE_VERSION 0\n") |
| 303 return name | 283 return name |
| 304 | 284 |
| 305 def MakeStep(self, step_class=Step, state=None, options=None): | 285 def MakeStep(self): |
| 306 """Convenience wrapper.""" | 286 """Convenience wrapper.""" |
| 307 options = options or CommonOptions(MakeOptions()) | 287 options = ScriptsBase(TEST_CONFIG, self, self._state).MakeOptions([]) |
| 308 state = state if state is not None else self._state | 288 return MakeStep(step_class=Step, state=self._state, |
| 309 return MakeStep(step_class=step_class, number=0, state=state, | 289 config=TEST_CONFIG, side_effect_handler=self, |
| 310 config=TEST_CONFIG, options=options, | 290 options=options) |
| 311 side_effect_handler=self) | 291 |
| 292 def RunStep(self, script=PushToTrunk, step_class=Step, args=None): |
| 293 """Convenience wrapper.""" |
| 294 args = args or ["-m"] |
| 295 return script(TEST_CONFIG, self, self._state).RunSteps([step_class], args) |
| 312 | 296 |
| 313 def GitMock(self, cmd, args="", pipe=True): | 297 def GitMock(self, cmd, args="", pipe=True): |
| 314 print "%s %s" % (cmd, args) | 298 print "%s %s" % (cmd, args) |
| 315 return self._git_mock.Call(args) | 299 return self._git_mock.Call(args) |
| 316 | 300 |
| 317 def LogMock(self, cmd, args=""): | 301 def LogMock(self, cmd, args=""): |
| 318 print "Log: %s %s" % (cmd, args) | 302 print "Log: %s %s" % (cmd, args) |
| 319 | 303 |
| 320 MOCKS = { | 304 MOCKS = { |
| 321 "git": GitMock, | 305 "git": GitMock, |
| (...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 483 ["log -1 --format=%an rev4", "author4@chromium.org"], | 467 ["log -1 --format=%an rev4", "author4@chromium.org"], |
| 484 ]) | 468 ]) |
| 485 | 469 |
| 486 # The cl for rev4 on rietveld has an updated LOG flag. | 470 # The cl for rev4 on rietveld has an updated LOG flag. |
| 487 self.ExpectReadURL([ | 471 self.ExpectReadURL([ |
| 488 ["https://codereview.chromium.org/9876543210/description", | 472 ["https://codereview.chromium.org/9876543210/description", |
| 489 "Title\n\nBUG=456\nLOG=N\n\n"], | 473 "Title\n\nBUG=456\nLOG=N\n\n"], |
| 490 ]) | 474 ]) |
| 491 | 475 |
| 492 self._state["last_push_bleeding_edge"] = "1234" | 476 self._state["last_push_bleeding_edge"] = "1234" |
| 493 self.MakeStep(PrepareChangeLog).Run() | 477 self.RunStep(PushToTrunk, PrepareChangeLog) |
| 494 | 478 |
| 495 actual_cl = FileToText(TEST_CONFIG[CHANGELOG_ENTRY_FILE]) | 479 actual_cl = FileToText(TEST_CONFIG[CHANGELOG_ENTRY_FILE]) |
| 496 | 480 |
| 497 expected_cl = """1999-07-31: Version 3.22.5 | 481 expected_cl = """1999-07-31: Version 3.22.5 |
| 498 | 482 |
| 499 Title text 1. | 483 Title text 1. |
| 500 | 484 |
| 501 Title text 3 (Chromium issue 321). | 485 Title text 3 (Chromium issue 321). |
| 502 | 486 |
| 503 Performance and stability improvements on all platforms. | 487 Performance and stability improvements on all platforms. |
| (...skipping 26 matching lines...) Expand all Loading... |
| 530 TEST_CONFIG[CHANGELOG_ENTRY_FILE] = self.MakeEmptyTempFile() | 514 TEST_CONFIG[CHANGELOG_ENTRY_FILE] = self.MakeEmptyTempFile() |
| 531 TEST_CONFIG[CHANGELOG_FILE] = self.MakeEmptyTempFile() | 515 TEST_CONFIG[CHANGELOG_FILE] = self.MakeEmptyTempFile() |
| 532 TextToFile(" Original CL", TEST_CONFIG[CHANGELOG_FILE]) | 516 TextToFile(" Original CL", TEST_CONFIG[CHANGELOG_FILE]) |
| 533 TextToFile(" New \n\tLines \n", TEST_CONFIG[CHANGELOG_ENTRY_FILE]) | 517 TextToFile(" New \n\tLines \n", TEST_CONFIG[CHANGELOG_ENTRY_FILE]) |
| 534 os.environ["EDITOR"] = "vi" | 518 os.environ["EDITOR"] = "vi" |
| 535 | 519 |
| 536 self.ExpectReadline([ | 520 self.ExpectReadline([ |
| 537 "", # Open editor. | 521 "", # Open editor. |
| 538 ]) | 522 ]) |
| 539 | 523 |
| 540 self.MakeStep(EditChangeLog).Run() | 524 self.RunStep(PushToTrunk, EditChangeLog) |
| 541 | 525 |
| 542 self.assertEquals("New\n Lines\n\n\n Original CL", | 526 self.assertEquals("New\n Lines\n\n\n Original CL", |
| 543 FileToText(TEST_CONFIG[CHANGELOG_FILE])) | 527 FileToText(TEST_CONFIG[CHANGELOG_FILE])) |
| 544 | 528 |
| 545 def testIncrementVersion(self): | 529 def testIncrementVersion(self): |
| 546 TEST_CONFIG[VERSION_FILE] = self.MakeTempVersionFile() | 530 TEST_CONFIG[VERSION_FILE] = self.MakeTempVersionFile() |
| 547 self._state["build"] = "5" | 531 self._state["build"] = "5" |
| 548 | 532 |
| 549 self.ExpectReadline([ | 533 self.ExpectReadline([ |
| 550 "Y", # Increment build number. | 534 "Y", # Increment build number. |
| 551 ]) | 535 ]) |
| 552 | 536 |
| 553 self.MakeStep(IncrementVersion).Run() | 537 self.RunStep(PushToTrunk, IncrementVersion) |
| 554 | 538 |
| 555 self.assertEquals("3", self._state["new_major"]) | 539 self.assertEquals("3", self._state["new_major"]) |
| 556 self.assertEquals("22", self._state["new_minor"]) | 540 self.assertEquals("22", self._state["new_minor"]) |
| 557 self.assertEquals("6", self._state["new_build"]) | 541 self.assertEquals("6", self._state["new_build"]) |
| 558 self.assertEquals("0", self._state["new_patch"]) | 542 self.assertEquals("0", self._state["new_patch"]) |
| 559 | 543 |
| 560 def testLastChangeLogEntries(self): | 544 def testLastChangeLogEntries(self): |
| 561 TEST_CONFIG[CHANGELOG_FILE] = self.MakeEmptyTempFile() | 545 TEST_CONFIG[CHANGELOG_FILE] = self.MakeEmptyTempFile() |
| 562 l = """ | 546 l = """ |
| 563 Fixed something. | 547 Fixed something. |
| (...skipping 15 matching lines...) Expand all Loading... |
| 579 f.write(change_log) | 563 f.write(change_log) |
| 580 | 564 |
| 581 self.ExpectGit([ | 565 self.ExpectGit([ |
| 582 ["diff svn/trunk hash1", "patch content"], | 566 ["diff svn/trunk hash1", "patch content"], |
| 583 ["svn find-rev hash1", "123455\n"], | 567 ["svn find-rev hash1", "123455\n"], |
| 584 ]) | 568 ]) |
| 585 | 569 |
| 586 self._state["prepare_commit_hash"] = "hash1" | 570 self._state["prepare_commit_hash"] = "hash1" |
| 587 self._state["date"] = "1999-11-11" | 571 self._state["date"] = "1999-11-11" |
| 588 | 572 |
| 589 self.MakeStep(SquashCommits).Run() | 573 self.RunStep(PushToTrunk, SquashCommits) |
| 590 self.assertEquals(FileToText(TEST_CONFIG[COMMITMSG_FILE]), expected_msg) | 574 self.assertEquals(FileToText(TEST_CONFIG[COMMITMSG_FILE]), expected_msg) |
| 591 | 575 |
| 592 patch = FileToText(TEST_CONFIG[ PATCH_FILE]) | 576 patch = FileToText(TEST_CONFIG[ PATCH_FILE]) |
| 593 self.assertTrue(re.search(r"patch content", patch)) | 577 self.assertTrue(re.search(r"patch content", patch)) |
| 594 | 578 |
| 595 def testSquashCommitsUnformatted(self): | 579 def testSquashCommitsUnformatted(self): |
| 596 change_log = """1999-11-11: Version 3.22.5 | 580 change_log = """1999-11-11: Version 3.22.5 |
| 597 | 581 |
| 598 Log text 1. | 582 Log text 1. |
| 599 Chromium issue 12345 | 583 Chromium issue 12345 |
| (...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 744 ]) | 728 ]) |
| 745 | 729 |
| 746 # No keyboard input in forced mode: | 730 # No keyboard input in forced mode: |
| 747 if force: | 731 if force: |
| 748 self.ExpectReadline([]) | 732 self.ExpectReadline([]) |
| 749 | 733 |
| 750 args = ["-a", "author@chromium.org", "-c", TEST_CONFIG[CHROMIUM]] | 734 args = ["-a", "author@chromium.org", "-c", TEST_CONFIG[CHROMIUM]] |
| 751 if force: args.append("-f") | 735 if force: args.append("-f") |
| 752 if manual: args.append("-m") | 736 if manual: args.append("-m") |
| 753 else: args += ["-r", "reviewer@chromium.org"] | 737 else: args += ["-r", "reviewer@chromium.org"] |
| 754 options = push_to_trunk.BuildOptions().parse_args(args) | 738 PushToTrunk(TEST_CONFIG, self).Run(args) |
| 755 RunPushToTrunk(TEST_CONFIG, PushToTrunkOptions(options), self) | |
| 756 | 739 |
| 757 deps = FileToText(TEST_CONFIG[DEPS_FILE]) | 740 deps = FileToText(TEST_CONFIG[DEPS_FILE]) |
| 758 self.assertTrue(re.search("\"v8_revision\": \"123456\"", deps)) | 741 self.assertTrue(re.search("\"v8_revision\": \"123456\"", deps)) |
| 759 | 742 |
| 760 cl = FileToText(TEST_CONFIG[CHANGELOG_FILE]) | 743 cl = FileToText(TEST_CONFIG[CHANGELOG_FILE]) |
| 761 self.assertTrue(re.search(r"^\d\d\d\d\-\d+\-\d+: Version 3\.22\.5", cl)) | 744 self.assertTrue(re.search(r"^\d\d\d\d\-\d+\-\d+: Version 3\.22\.5", cl)) |
| 762 self.assertTrue(re.search(r" Log text 1 \(issue 321\).", cl)) | 745 self.assertTrue(re.search(r" Log text 1 \(issue 321\).", cl)) |
| 763 self.assertTrue(re.search(r"1999\-04\-05: Version 3\.22\.4", cl)) | 746 self.assertTrue(re.search(r"1999\-04\-05: Version 3\.22\.4", cl)) |
| 764 | 747 |
| 765 # Note: The version file is on build number 5 again in the end of this test | 748 # Note: The version file is on build number 5 again in the end of this test |
| 766 # since the git command that merges to the bleeding edge branch is mocked | 749 # since the git command that merges to the bleeding edge branch is mocked |
| 767 # out. | 750 # out. |
| 768 | 751 |
| 769 def testPushToTrunkManual(self): | 752 def testPushToTrunkManual(self): |
| 770 self._PushToTrunk(manual=True) | 753 self._PushToTrunk(manual=True) |
| 771 | 754 |
| 772 def testPushToTrunkSemiAutomatic(self): | 755 def testPushToTrunkSemiAutomatic(self): |
| 773 self._PushToTrunk() | 756 self._PushToTrunk() |
| 774 | 757 |
| 775 def testPushToTrunkForced(self): | 758 def testPushToTrunkForced(self): |
| 776 self._PushToTrunk(force=True) | 759 self._PushToTrunk(force=True) |
| 777 | 760 |
| 778 def testCheckLastPushRecently(self): | 761 def testCheckLastPushRecently(self): |
| 779 self.ExpectGit([ | 762 self.ExpectGit([ |
| 780 ["svn log -1 --oneline", "r101 | Text"], | 763 ["svn log -1 --oneline", "r101 | Text"], |
| 781 ["svn log -1 --oneline ChangeLog", "r99 | Prepare push to trunk..."], | 764 ["svn log -1 --oneline ChangeLog", "r99 | Prepare push to trunk..."], |
| 782 ]) | 765 ]) |
| 783 | 766 |
| 784 state = {} | 767 self.RunStep(auto_roll.AutoRoll, FetchLatestRevision, AUTO_ROLL_ARGS) |
| 785 self.MakeStep(FetchLatestRevision, state=state).Run() | 768 self.assertRaises(Exception, lambda: self.RunStep(auto_roll.AutoRoll, |
| 786 self.assertRaises(Exception, self.MakeStep(CheckLastPush, state=state).Run) | 769 CheckLastPush, |
| 770 AUTO_ROLL_ARGS)) |
| 787 | 771 |
| 788 def testAutoRoll(self): | 772 def testAutoRoll(self): |
| 789 password = self.MakeEmptyTempFile() | 773 password = self.MakeEmptyTempFile() |
| 790 TextToFile("PW", password) | 774 TextToFile("PW", password) |
| 791 TEST_CONFIG[DOT_GIT_LOCATION] = self.MakeEmptyTempFile() | 775 TEST_CONFIG[DOT_GIT_LOCATION] = self.MakeEmptyTempFile() |
| 792 TEST_CONFIG[SETTINGS_LOCATION] = "~/.doesnotexist" | 776 TEST_CONFIG[SETTINGS_LOCATION] = "~/.doesnotexist" |
| 793 | 777 |
| 794 self.ExpectReadURL([ | 778 self.ExpectReadURL([ |
| 795 ["https://v8-status.appspot.com/current?format=json", | 779 ["https://v8-status.appspot.com/current?format=json", |
| 796 "{\"message\": \"Tree is throttled\"}"], | 780 "{\"message\": \"Tree is throttled\"}"], |
| (...skipping 12 matching lines...) Expand all Loading... |
| 809 ["status -s -uno", ""], | 793 ["status -s -uno", ""], |
| 810 ["status -s -b -uno", "## some_branch\n"], | 794 ["status -s -b -uno", "## some_branch\n"], |
| 811 ["svn fetch", ""], | 795 ["svn fetch", ""], |
| 812 ["svn log -1 --oneline", "r100 | Text"], | 796 ["svn log -1 --oneline", "r100 | Text"], |
| 813 [("log -1 --format=%H --grep=\"" | 797 [("log -1 --format=%H --grep=\"" |
| 814 "^Version [[:digit:]]*\.[[:digit:]]*\.[[:digit:]]* (based\"" | 798 "^Version [[:digit:]]*\.[[:digit:]]*\.[[:digit:]]* (based\"" |
| 815 " svn/trunk"), "push_hash\n"], | 799 " svn/trunk"), "push_hash\n"], |
| 816 ["svn find-rev push_hash", "65"], | 800 ["svn find-rev push_hash", "65"], |
| 817 ]) | 801 ]) |
| 818 | 802 |
| 819 options = auto_roll.BuildOptions().parse_args( | 803 auto_roll.AutoRoll(TEST_CONFIG, self).Run( |
| 820 AUTO_ROLL_ARGS + ["--status-password", password]) | 804 AUTO_ROLL_ARGS + ["--status-password", password]) |
| 821 auto_roll.RunAutoRoll(TEST_CONFIG, AutoRollOptions(options), self) | |
| 822 | 805 |
| 823 state = json.loads(FileToText("%s-state.json" | 806 state = json.loads(FileToText("%s-state.json" |
| 824 % TEST_CONFIG[PERSISTFILE_BASENAME])) | 807 % TEST_CONFIG[PERSISTFILE_BASENAME])) |
| 825 | 808 |
| 826 self.assertEquals("100", state["lkgr"]) | 809 self.assertEquals("100", state["lkgr"]) |
| 827 self.assertEquals("100", state["latest"]) | 810 self.assertEquals("100", state["latest"]) |
| 828 | 811 |
| 829 def testAutoRollStoppedBySettings(self): | 812 def testAutoRollStoppedBySettings(self): |
| 830 TEST_CONFIG[DOT_GIT_LOCATION] = self.MakeEmptyTempFile() | 813 TEST_CONFIG[DOT_GIT_LOCATION] = self.MakeEmptyTempFile() |
| 831 TEST_CONFIG[SETTINGS_LOCATION] = self.MakeEmptyTempFile() | 814 TEST_CONFIG[SETTINGS_LOCATION] = self.MakeEmptyTempFile() |
| 832 TextToFile("{\"enable_auto_roll\": false}", TEST_CONFIG[SETTINGS_LOCATION]) | 815 TextToFile("{\"enable_auto_roll\": false}", TEST_CONFIG[SETTINGS_LOCATION]) |
| 833 | 816 |
| 834 self.ExpectReadURL([]) | 817 self.ExpectReadURL([]) |
| 835 | 818 |
| 836 self.ExpectGit([ | 819 self.ExpectGit([ |
| 837 ["status -s -uno", ""], | 820 ["status -s -uno", ""], |
| 838 ["status -s -b -uno", "## some_branch\n"], | 821 ["status -s -b -uno", "## some_branch\n"], |
| 839 ["svn fetch", ""], | 822 ["svn fetch", ""], |
| 840 ]) | 823 ]) |
| 841 | 824 |
| 842 options = auto_roll.BuildOptions().parse_args(AUTO_ROLL_ARGS) | |
| 843 def RunAutoRoll(): | 825 def RunAutoRoll(): |
| 844 auto_roll.RunAutoRoll(TEST_CONFIG, AutoRollOptions(options), self) | 826 auto_roll.AutoRoll(TEST_CONFIG, self).Run(AUTO_ROLL_ARGS) |
| 845 self.assertRaises(Exception, RunAutoRoll) | 827 self.assertRaises(Exception, RunAutoRoll) |
| 846 | 828 |
| 847 def testAutoRollStoppedByTreeStatus(self): | 829 def testAutoRollStoppedByTreeStatus(self): |
| 848 TEST_CONFIG[DOT_GIT_LOCATION] = self.MakeEmptyTempFile() | 830 TEST_CONFIG[DOT_GIT_LOCATION] = self.MakeEmptyTempFile() |
| 849 TEST_CONFIG[SETTINGS_LOCATION] = "~/.doesnotexist" | 831 TEST_CONFIG[SETTINGS_LOCATION] = "~/.doesnotexist" |
| 850 | 832 |
| 851 self.ExpectReadURL([ | 833 self.ExpectReadURL([ |
| 852 ["https://v8-status.appspot.com/current?format=json", | 834 ["https://v8-status.appspot.com/current?format=json", |
| 853 "{\"message\": \"Tree is throttled (no push)\"}"], | 835 "{\"message\": \"Tree is throttled (no push)\"}"], |
| 854 ]) | 836 ]) |
| 855 | 837 |
| 856 self.ExpectGit([ | 838 self.ExpectGit([ |
| 857 ["status -s -uno", ""], | 839 ["status -s -uno", ""], |
| 858 ["status -s -b -uno", "## some_branch\n"], | 840 ["status -s -b -uno", "## some_branch\n"], |
| 859 ["svn fetch", ""], | 841 ["svn fetch", ""], |
| 860 ]) | 842 ]) |
| 861 | 843 |
| 862 options = auto_roll.BuildOptions().parse_args(AUTO_ROLL_ARGS) | |
| 863 def RunAutoRoll(): | 844 def RunAutoRoll(): |
| 864 auto_roll.RunAutoRoll(TEST_CONFIG, AutoRollOptions(options), self) | 845 auto_roll.AutoRoll(TEST_CONFIG, self).Run(AUTO_ROLL_ARGS) |
| 865 self.assertRaises(Exception, RunAutoRoll) | 846 self.assertRaises(Exception, RunAutoRoll) |
| 866 | 847 |
| 867 def testMergeToBranch(self): | 848 def testMergeToBranch(self): |
| 868 TEST_CONFIG[ALREADY_MERGING_SENTINEL_FILE] = self.MakeEmptyTempFile() | 849 TEST_CONFIG[ALREADY_MERGING_SENTINEL_FILE] = self.MakeEmptyTempFile() |
| 869 TEST_CONFIG[DOT_GIT_LOCATION] = self.MakeEmptyTempFile() | 850 TEST_CONFIG[DOT_GIT_LOCATION] = self.MakeEmptyTempFile() |
| 870 TEST_CONFIG[VERSION_FILE] = self.MakeTempVersionFile() | 851 TEST_CONFIG[VERSION_FILE] = self.MakeTempVersionFile() |
| 871 os.environ["EDITOR"] = "vi" | 852 os.environ["EDITOR"] = "vi" |
| 872 extra_patch = self.MakeEmptyTempFile() | 853 extra_patch = self.MakeEmptyTempFile() |
| 873 | 854 |
| 874 def VerifyPatch(patch): | 855 def VerifyPatch(patch): |
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 975 "Y", # Automatically add corresponding ports (34567, 56789)? | 956 "Y", # Automatically add corresponding ports (34567, 56789)? |
| 976 "Y", # Automatically increment patch level? | 957 "Y", # Automatically increment patch level? |
| 977 "reviewer@chromium.org", # V8 reviewer. | 958 "reviewer@chromium.org", # V8 reviewer. |
| 978 "LGTM", # Enter LGTM for V8 CL. | 959 "LGTM", # Enter LGTM for V8 CL. |
| 979 ]) | 960 ]) |
| 980 | 961 |
| 981 # r12345 and r34567 are patches. r23456 (included) and r45678 are the MIPS | 962 # r12345 and r34567 are patches. r23456 (included) and r45678 are the MIPS |
| 982 # ports of r12345. r56789 is the MIPS port of r34567. | 963 # ports of r12345. r56789 is the MIPS port of r34567. |
| 983 args = ["-f", "-p", extra_patch, "--branch", "trunk", "12345", "23456", | 964 args = ["-f", "-p", extra_patch, "--branch", "trunk", "12345", "23456", |
| 984 "34567"] | 965 "34567"] |
| 985 options = merge_to_branch.BuildOptions().parse_args(args) | |
| 986 self.assertTrue(merge_to_branch.ProcessOptions(options)) | |
| 987 | 966 |
| 988 # The first run of the script stops because of the svn being down. | 967 # The first run of the script stops because of the svn being down. |
| 989 self.assertRaises(GitFailedException, | 968 self.assertRaises(GitFailedException, |
| 990 lambda: RunMergeToBranch(TEST_CONFIG, | 969 lambda: MergeToBranch(TEST_CONFIG, self).Run(args)) |
| 991 MergeToBranchOptions(options), | |
| 992 self)) | |
| 993 | 970 |
| 994 # Test that state recovery after restarting the script works. | 971 # Test that state recovery after restarting the script works. |
| 995 options.step = 3 | 972 args += ["-s", "3"] |
| 996 RunMergeToBranch(TEST_CONFIG, MergeToBranchOptions(options), self) | 973 MergeToBranch(TEST_CONFIG, self).Run(args) |
| 997 | 974 |
| 998 | 975 |
| 999 class SystemTest(unittest.TestCase): | 976 class SystemTest(unittest.TestCase): |
| 1000 def testReload(self): | 977 def testReload(self): |
| 1001 step = MakeStep(step_class=PrepareChangeLog, number=0, state={}, config={}, | 978 step = MakeStep(step_class=PrepareChangeLog, number=0, state={}, config={}, |
| 1002 options=CommonOptions(MakeOptions()), | |
| 1003 side_effect_handler=DEFAULT_SIDE_EFFECT_HANDLER) | 979 side_effect_handler=DEFAULT_SIDE_EFFECT_HANDLER) |
| 1004 body = step.Reload( | 980 body = step.Reload( |
| 1005 """------------------------------------------------------------------------ | 981 """------------------------------------------------------------------------ |
| 1006 r17997 | machenbach@chromium.org | 2013-11-22 11:04:04 +0100 (...) | 6 lines | 982 r17997 | machenbach@chromium.org | 2013-11-22 11:04:04 +0100 (...) | 6 lines |
| 1007 | 983 |
| 1008 Prepare push to trunk. Now working on version 3.23.11. | 984 Prepare push to trunk. Now working on version 3.23.11. |
| 1009 | 985 |
| 1010 R=danno@chromium.org | 986 R=danno@chromium.org |
| 1011 | 987 |
| 1012 Review URL: https://codereview.chromium.org/83173002 | 988 Review URL: https://codereview.chromium.org/83173002 |
| 1013 | 989 |
| 1014 ------------------------------------------------------------------------""") | 990 ------------------------------------------------------------------------""") |
| 1015 self.assertEquals( | 991 self.assertEquals( |
| 1016 """Prepare push to trunk. Now working on version 3.23.11. | 992 """Prepare push to trunk. Now working on version 3.23.11. |
| 1017 | 993 |
| 1018 R=danno@chromium.org | 994 R=danno@chromium.org |
| 1019 | 995 |
| 1020 Committed: https://code.google.com/p/v8/source/detail?r=17997""", body) | 996 Committed: https://code.google.com/p/v8/source/detail?r=17997""", body) |
| OLD | NEW |