1b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#!/usr/bin/env python 2b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch# Copyright 2013 the V8 project authors. All rights reserved. 3b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch# Redistribution and use in source and binary forms, with or without 4b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch# modification, are permitted provided that the following conditions are 5b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch# met: 6b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch# 7b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch# * Redistributions of source code must retain the above copyright 8b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch# notice, this list of conditions and the following disclaimer. 9b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch# * Redistributions in binary form must reproduce the above 10b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch# copyright notice, this list of conditions and the following 11b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch# disclaimer in the documentation and/or other materials provided 12b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch# with the distribution. 13b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch# * Neither the name of Google Inc. nor the names of its 14b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch# contributors may be used to endorse or promote products derived 15b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch# from this software without specific prior written permission. 16b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch# 17b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 18b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 19b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 20b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 21b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 22b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 23b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 24b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 25b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 26b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 29b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochimport os 30b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochimport shutil 31b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochimport tempfile 32b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochimport traceback 33b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochimport unittest 34b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 35b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochimport auto_push 36014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochfrom auto_push import LastReleaseBailout 37b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochimport auto_roll 38b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochimport common_includes 39b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochfrom common_includes import * 40014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochimport create_release 41014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochfrom create_release import CreateRelease 42b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochimport merge_to_branch 43f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochfrom merge_to_branch import MergeToBranch 44014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochimport push_to_candidates 45014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochfrom push_to_candidates import * 46b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochimport releases 47b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochfrom releases import Releases 48b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochfrom auto_tag import AutoTag 49f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochimport roll_merge 50f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochfrom roll_merge import RollMerge 51b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 52b8a8cc1952d61a2f3a2568848933943a543b5d3eBen MurdochTEST_CONFIG = { 53b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "DEFAULT_CWD": None, 54b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "BRANCHNAME": "test-prepare-push", 55014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "CANDIDATESBRANCH": "test-candidates-push", 56014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "PERSISTFILE_BASENAME": "/tmp/test-v8-push-to-candidates-tempfile", 57014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "CHANGELOG_ENTRY_FILE": 58014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "/tmp/test-v8-push-to-candidates-tempfile-changelog-entry", 59014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "PATCH_FILE": "/tmp/test-v8-push-to-candidates-tempfile-patch", 60014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "COMMITMSG_FILE": "/tmp/test-v8-push-to-candidates-tempfile-commitmsg", 61014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "CHROMIUM": "/tmp/test-v8-push-to-candidates-tempfile-chromium", 62b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "SETTINGS_LOCATION": None, 63b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "ALREADY_MERGING_SENTINEL_FILE": 64b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "/tmp/test-merge-to-branch-tempfile-already-merging", 65b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "TEMPORARY_PATCH_FILE": "/tmp/test-merge-to-branch-tempfile-temporary-patch", 66b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch} 67b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 68b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 69b8a8cc1952d61a2f3a2568848933943a543b5d3eBen MurdochAUTO_PUSH_ARGS = [ 70b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "-a", "author@chromium.org", 71b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "-r", "reviewer@chromium.org", 72b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch] 73b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 74b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 75b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochclass ToplevelTest(unittest.TestCase): 76014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch def testSaniniziteVersionTags(self): 77014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch self.assertEquals("4.8.230", SanitizeVersionTag("4.8.230")) 78014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch self.assertEquals("4.8.230", SanitizeVersionTag("tags/4.8.230")) 79014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch self.assertEquals(None, SanitizeVersionTag("candidate")) 80014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 81014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch def testNormalizeVersionTags(self): 82014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch input = ["4.8.230", 83014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "tags/4.8.230", 84014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "tags/4.8.224.1", 85014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "4.8.224.1", 86014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "4.8.223.1", 87014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "tags/4.8.223", 88014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "tags/4.8.231", 89014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "candidates"] 90014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch expected = ["4.8.230", 91014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "4.8.230", 92014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "4.8.224.1", 93014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "4.8.224.1", 94014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "4.8.223.1", 95014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "4.8.223", 96014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "4.8.231", 97014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch ] 98014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch self.assertEquals(expected, NormalizeVersionTags(input)) 99014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 100b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch def testSortBranches(self): 101b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch S = releases.SortBranches 102b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.assertEquals(["3.1", "2.25"], S(["2.25", "3.1"])[0:2]) 103b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.assertEquals(["3.0", "2.25"], S(["2.25", "3.0", "2.24"])[0:2]) 104b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.assertEquals(["3.11", "3.2"], S(["3.11", "3.2", "2.24"])[0:2]) 105b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 106b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch def testFilterDuplicatesAndReverse(self): 107b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch F = releases.FilterDuplicatesAndReverse 108b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.assertEquals([], F([])) 109b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.assertEquals([["100", "10"]], F([["100", "10"]])) 110b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.assertEquals([["99", "9"], ["100", "10"]], 111b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch F([["100", "10"], ["99", "9"]])) 112b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.assertEquals([["98", "9"], ["100", "10"]], 113b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch F([["100", "10"], ["99", "9"], ["98", "9"]])) 114b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.assertEquals([["98", "9"], ["99", "10"]], 115b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch F([["100", "10"], ["99", "10"], ["98", "9"]])) 116b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 117b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch def testBuildRevisionRanges(self): 118b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch B = releases.BuildRevisionRanges 119b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.assertEquals({}, B([])) 120b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.assertEquals({"10": "100"}, B([["100", "10"]])) 121b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.assertEquals({"10": "100", "9": "99:99"}, 122b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch B([["100", "10"], ["99", "9"]])) 123b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.assertEquals({"10": "100", "9": "97:99"}, 124b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch B([["100", "10"], ["98", "9"], ["97", "9"]])) 125b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.assertEquals({"10": "100", "9": "99:99", "3": "91:98"}, 126b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch B([["100", "10"], ["99", "9"], ["91", "3"]])) 127b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.assertEquals({"13": "101", "12": "100:100", "9": "94:97", 128b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "3": "91:93, 98:99"}, 129b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch B([["101", "13"], ["100", "12"], ["98", "3"], 130b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch ["94", "9"], ["91", "3"]])) 131b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 132b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch def testMakeComment(self): 133b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.assertEquals("# Line 1\n# Line 2\n#", 134b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch MakeComment(" Line 1\n Line 2\n")) 135b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.assertEquals("#Line 1\n#Line 2", 136b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch MakeComment("Line 1\n Line 2")) 137b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 138b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch def testStripComments(self): 139b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.assertEquals(" Line 1\n Line 3\n", 140b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch StripComments(" Line 1\n# Line 2\n Line 3\n#\n")) 141b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.assertEquals("\nLine 2 ### Test\n #", 142b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch StripComments("###\n# \n\n# Line 1\nLine 2 ### Test\n #")) 143b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 144b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch def testMakeChangeLogBodySimple(self): 145b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch commits = [ 146b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch ["Title text 1", 147b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "Title text 1\n\nBUG=\n", 148b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "author1@chromium.org"], 149b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch ["Title text 2.", 150b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "Title text 2\n\nBUG=1234\n", 151b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "author2@chromium.org"], 152b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch ] 153b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.assertEquals(" Title text 1.\n" 154b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch " (author1@chromium.org)\n\n" 155b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch " Title text 2 (Chromium issue 1234).\n" 156b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch " (author2@chromium.org)\n\n", 157b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch MakeChangeLogBody(commits)) 158b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 159b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch def testMakeChangeLogBodyEmpty(self): 160b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.assertEquals("", MakeChangeLogBody([])) 161b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 162b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch def testMakeChangeLogBodyAutoFormat(self): 163b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch commits = [ 164b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch ["Title text 1!", 165b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "Title text 1\nLOG=y\nBUG=\n", 166b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "author1@chromium.org"], 167b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch ["Title text 2", 168b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "Title text 2\n\nBUG=1234\n", 169b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "author2@chromium.org"], 170b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch ["Title text 3", 171b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "Title text 3\n\nBUG=1234\nLOG = Yes\n", 172b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "author3@chromium.org"], 173b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch ["Title text 3", 174b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "Title text 4\n\nBUG=1234\nLOG=\n", 175b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "author4@chromium.org"], 176b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch ] 177b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.assertEquals(" Title text 1.\n\n" 178b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch " Title text 3 (Chromium issue 1234).\n\n", 179b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch MakeChangeLogBody(commits, True)) 180b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 181b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch def testRegressWrongLogEntryOnTrue(self): 182b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch body = """ 183b8a8cc1952d61a2f3a2568848933943a543b5d3eBen MurdochCheck elimination: Learn from if(CompareMap(x)) on true branch. 184b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 185b8a8cc1952d61a2f3a2568848933943a543b5d3eBen MurdochBUG= 186b8a8cc1952d61a2f3a2568848933943a543b5d3eBen MurdochR=verwaest@chromium.org 187b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 188b8a8cc1952d61a2f3a2568848933943a543b5d3eBen MurdochCommitted: https://code.google.com/p/v8/source/detail?r=18210 189b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch""" 190b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.assertEquals("", MakeChangeLogBody([["title", body, "author"]], True)) 191b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 192b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch def testMakeChangeLogBugReferenceEmpty(self): 193b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.assertEquals("", MakeChangeLogBugReference("")) 194b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.assertEquals("", MakeChangeLogBugReference("LOG=")) 195b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.assertEquals("", MakeChangeLogBugReference(" BUG =")) 196b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.assertEquals("", MakeChangeLogBugReference("BUG=none\t")) 197b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 198b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch def testMakeChangeLogBugReferenceSimple(self): 199b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.assertEquals("(issue 987654)", 200b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch MakeChangeLogBugReference("BUG = v8:987654")) 201b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.assertEquals("(Chromium issue 987654)", 202b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch MakeChangeLogBugReference("BUG=987654 ")) 203b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 204b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch def testMakeChangeLogBugReferenceFromBody(self): 205b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.assertEquals("(Chromium issue 1234567)", 206b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch MakeChangeLogBugReference("Title\n\nTBR=\nBUG=\n" 207b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch " BUG=\tchromium:1234567\t\n" 208b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "R=somebody\n")) 209b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 210b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch def testMakeChangeLogBugReferenceMultiple(self): 211b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch # All issues should be sorted and grouped. Multiple references to the same 212b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch # issue should be filtered. 213b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.assertEquals("(issues 123, 234, Chromium issue 345)", 214b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch MakeChangeLogBugReference("Title\n\n" 215b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "BUG=v8:234\n" 216b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch " BUG\t= 345, \tv8:234,\n" 217b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "BUG=v8:123\n" 218b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "R=somebody\n")) 219b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.assertEquals("(Chromium issues 123, 234)", 220b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch MakeChangeLogBugReference("Title\n\n" 221b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "BUG=234,,chromium:123 \n" 222b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "R=somebody\n")) 223b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.assertEquals("(Chromium issues 123, 234)", 224b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch MakeChangeLogBugReference("Title\n\n" 225b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "BUG=chromium:234, , 123\n" 226b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "R=somebody\n")) 227b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.assertEquals("(issues 345, 456)", 228b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch MakeChangeLogBugReference("Title\n\n" 229b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "\t\tBUG=v8:345,v8:456\n" 230b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "R=somebody\n")) 231b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.assertEquals("(issue 123, Chromium issues 345, 456)", 232b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch MakeChangeLogBugReference("Title\n\n" 233b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "BUG=chromium:456\n" 234b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "BUG = none\n" 235b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "R=somebody\n" 236b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "BUG=456,v8:123, 345")) 237b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 238b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch # TODO(machenbach): These test don't make much sense when the formatting is 239b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch # done later. 240b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch def testMakeChangeLogBugReferenceLong(self): 241b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch # -----------------00--------10--------20--------30-------- 242b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.assertEquals("(issues 234, 1234567890, 1234567" 243b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "8901234567890, Chromium issues 12345678," 244b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch " 123456789)", 245b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch MakeChangeLogBugReference("BUG=v8:234\n" 246b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "BUG=v8:1234567890\n" 247b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "BUG=v8:12345678901234567890\n" 248b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "BUG=123456789\n" 249b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "BUG=12345678\n")) 250b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch # -----------------00--------10--------20--------30-------- 251b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.assertEquals("(issues 234, 1234567890, 1234567" 252b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "8901234567890, Chromium issues" 253b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch " 123456789, 1234567890)", 254b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch MakeChangeLogBugReference("BUG=v8:234\n" 255b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "BUG=v8:12345678901234567890\n" 256b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "BUG=v8:1234567890\n" 257b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "BUG=123456789\n" 258b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "BUG=1234567890\n")) 259b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch # -----------------00--------10--------20--------30-------- 260b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.assertEquals("(Chromium issues 234, 1234567890" 261b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch ", 12345678901234567, " 262b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "1234567890123456789)", 263b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch MakeChangeLogBugReference("BUG=234\n" 264b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "BUG=12345678901234567\n" 265b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "BUG=1234567890123456789\n" 266b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "BUG=1234567890\n")) 267b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 268b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 269b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochdef Cmd(*args, **kwargs): 270b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch """Convenience function returning a shell command test expectation.""" 271b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch return { 272b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "name": "command", 273b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "args": args, 274b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "ret": args[-1], 275b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "cb": kwargs.get("cb"), 276b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "cwd": kwargs.get("cwd", TEST_CONFIG["DEFAULT_CWD"]), 277b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch } 278b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 279b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 280b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochdef RL(text, cb=None): 281b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch """Convenience function returning a readline test expectation.""" 282b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch return { 283b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "name": "readline", 284b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "args": [], 285b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "ret": text, 286b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "cb": cb, 287b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "cwd": None, 288b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch } 289b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 290b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 291b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochdef URL(*args, **kwargs): 292b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch """Convenience function returning a readurl test expectation.""" 293b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch return { 294b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "name": "readurl", 295b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "args": args[:-1], 296b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "ret": args[-1], 297b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "cb": kwargs.get("cb"), 298b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "cwd": None, 299b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch } 300b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 301b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 302b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochclass SimpleMock(object): 303b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch def __init__(self): 304b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self._recipe = [] 305b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self._index = -1 306b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 307b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch def Expect(self, recipe): 308b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self._recipe = recipe 309b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 310b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch def Call(self, name, *args, **kwargs): # pragma: no cover 311b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self._index += 1 312b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch try: 313b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch expected_call = self._recipe[self._index] 314b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch except IndexError: 315b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch raise NoRetryException("Calling %s %s" % (name, " ".join(args))) 316b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 317b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch if not isinstance(expected_call, dict): 318b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch raise NoRetryException("Found wrong expectation type for %s %s" % 319b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch (name, " ".join(args))) 320b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 321b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch if expected_call["name"] != name: 322b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch raise NoRetryException("Expected action: %s %s - Actual: %s" % 323b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch (expected_call["name"], expected_call["args"], name)) 324b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 325b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch # Check if the given working directory matches the expected one. 326b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch if expected_call["cwd"] != kwargs.get("cwd"): 327b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch raise NoRetryException("Expected cwd: %s in %s %s - Actual: %s" % 328b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch (expected_call["cwd"], 329b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch expected_call["name"], 330b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch expected_call["args"], 331b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch kwargs.get("cwd"))) 332b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 333b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch # The number of arguments in the expectation must match the actual 334b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch # arguments. 335b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch if len(args) > len(expected_call['args']): 336b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch raise NoRetryException("When calling %s with arguments, the " 337b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "expectations must consist of at least as many arguments." % 338b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch name) 339b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 340b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch # Compare expected and actual arguments. 341b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch for (expected_arg, actual_arg) in zip(expected_call['args'], args): 342b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch if expected_arg != actual_arg: 343b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch raise NoRetryException("Expected: %s - Actual: %s" % 344b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch (expected_arg, actual_arg)) 345b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 346b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch # The expected call contains an optional callback for checking the context 347b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch # at the time of the call. 348b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch if expected_call['cb']: 349b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch try: 350b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch expected_call['cb']() 351b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch except: 352b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch tb = traceback.format_exc() 353b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch raise NoRetryException("Caught exception from callback: %s" % tb) 354b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 355b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch # If the return value is an exception, raise it instead of returning. 356b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch if isinstance(expected_call['ret'], Exception): 357b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch raise expected_call['ret'] 358b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch return expected_call['ret'] 359b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 360b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch def AssertFinished(self): # pragma: no cover 361b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch if self._index < len(self._recipe) -1: 362b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch raise NoRetryException("Called mock too seldom: %d vs. %d" % 363b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch (self._index, len(self._recipe))) 364b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 365b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 366b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochclass ScriptTest(unittest.TestCase): 367b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch def MakeEmptyTempFile(self): 368b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch handle, name = tempfile.mkstemp() 369b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch os.close(handle) 370b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self._tmp_files.append(name) 371b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch return name 372b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 373b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch def MakeEmptyTempDirectory(self): 374b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch name = tempfile.mkdtemp() 375b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self._tmp_files.append(name) 376b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch return name 377b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 378b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 379014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch def WriteFakeVersionFile(self, major=3, minor=22, build=4, patch=0): 380b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch version_file = os.path.join(TEST_CONFIG["DEFAULT_CWD"], VERSION_FILE) 381b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch if not os.path.exists(os.path.dirname(version_file)): 382b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch os.makedirs(os.path.dirname(version_file)) 383b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch with open(version_file, "w") as f: 384b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch f.write(" // Some line...\n") 385b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch f.write("\n") 386014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch f.write("#define V8_MAJOR_VERSION %s\n" % major) 387014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch f.write("#define V8_MINOR_VERSION %s\n" % minor) 388014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch f.write("#define V8_BUILD_NUMBER %s\n" % build) 389014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch f.write("#define V8_PATCH_LEVEL %s\n" % patch) 390b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch f.write(" // Some line...\n") 391014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch f.write("#define V8_IS_CANDIDATE_VERSION 0\n") 392b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 393109988c7ccb6f3fd1a58574fa3dfb88beaef6632Ben Murdoch def WriteFakeWatchlistsFile(self): 394109988c7ccb6f3fd1a58574fa3dfb88beaef6632Ben Murdoch watchlists_file = os.path.join(TEST_CONFIG["DEFAULT_CWD"], WATCHLISTS_FILE) 395109988c7ccb6f3fd1a58574fa3dfb88beaef6632Ben Murdoch if not os.path.exists(os.path.dirname(watchlists_file)): 396109988c7ccb6f3fd1a58574fa3dfb88beaef6632Ben Murdoch os.makedirs(os.path.dirname(watchlists_file)) 397109988c7ccb6f3fd1a58574fa3dfb88beaef6632Ben Murdoch with open(watchlists_file, "w") as f: 398109988c7ccb6f3fd1a58574fa3dfb88beaef6632Ben Murdoch 399109988c7ccb6f3fd1a58574fa3dfb88beaef6632Ben Murdoch content = """ 400109988c7ccb6f3fd1a58574fa3dfb88beaef6632Ben Murdoch 'merges': [ 401109988c7ccb6f3fd1a58574fa3dfb88beaef6632Ben Murdoch # Only enabled on branches created with tools/release/create_release.py 402109988c7ccb6f3fd1a58574fa3dfb88beaef6632Ben Murdoch # 'v8-merges@googlegroups.com', 403109988c7ccb6f3fd1a58574fa3dfb88beaef6632Ben Murdoch ], 404109988c7ccb6f3fd1a58574fa3dfb88beaef6632Ben Murdoch""" 405109988c7ccb6f3fd1a58574fa3dfb88beaef6632Ben Murdoch f.write(content) 406109988c7ccb6f3fd1a58574fa3dfb88beaef6632Ben Murdoch 407b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch def MakeStep(self): 408b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch """Convenience wrapper.""" 409b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch options = ScriptsBase(TEST_CONFIG, self, self._state).MakeOptions([]) 410b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch return MakeStep(step_class=Step, state=self._state, 411b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch config=TEST_CONFIG, side_effect_handler=self, 412b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch options=options) 413b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 414014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch def RunStep(self, script=PushToCandidates, step_class=Step, args=None): 415b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch """Convenience wrapper.""" 416b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch args = args if args is not None else ["-m"] 417b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch return script(TEST_CONFIG, self, self._state).RunSteps([step_class], args) 418b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 419b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch def Call(self, fun, *args, **kwargs): 420b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch print "Calling %s with %s and %s" % (str(fun), str(args), str(kwargs)) 421b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 422b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch def Command(self, cmd, args="", prefix="", pipe=True, cwd=None): 423b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch print "%s %s" % (cmd, args) 424b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch print "in %s" % cwd 425b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch return self._mock.Call("command", cmd + " " + args, cwd=cwd) 426b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 427b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch def ReadLine(self): 428b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch return self._mock.Call("readline") 429b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 430b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch def ReadURL(self, url, params): 431b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch if params is not None: 432b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch return self._mock.Call("readurl", url, params) 433b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch else: 434b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch return self._mock.Call("readurl", url) 435b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 436b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch def Sleep(self, seconds): 437b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch pass 438b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 439b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch def GetDate(self): 440b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch return "1999-07-31" 441b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 442b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch def GetUTCStamp(self): 443014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch return "1000000" 444b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 445b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch def Expect(self, *args): 446b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch """Convenience wrapper.""" 447b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self._mock.Expect(*args) 448b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 449b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch def setUp(self): 450b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self._mock = SimpleMock() 451b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self._tmp_files = [] 452b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self._state = {} 453b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch TEST_CONFIG["DEFAULT_CWD"] = self.MakeEmptyTempDirectory() 454b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 455b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch def tearDown(self): 456b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch if os.path.exists(TEST_CONFIG["PERSISTFILE_BASENAME"]): 457b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch shutil.rmtree(TEST_CONFIG["PERSISTFILE_BASENAME"]) 458b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 459b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch # Clean up temps. Doesn't work automatically. 460b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch for name in self._tmp_files: 461b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch if os.path.isfile(name): 462b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch os.remove(name) 463b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch if os.path.isdir(name): 464b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch shutil.rmtree(name) 465b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 466b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self._mock.AssertFinished() 467b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 468b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch def testGitMock(self): 469b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.Expect([Cmd("git --version", "git version 1.2.3"), 470b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch Cmd("git dummy", "")]) 471b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.assertEquals("git version 1.2.3", self.MakeStep().Git("--version")) 472b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.assertEquals("", self.MakeStep().Git("dummy")) 473b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 474b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch def testCommonPrepareDefault(self): 475b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.Expect([ 476b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch Cmd("git status -s -uno", ""), 477014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git checkout -f origin/master", ""), 478958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Cmd("git fetch", ""), 479b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch Cmd("git branch", " branch1\n* %s" % TEST_CONFIG["BRANCHNAME"]), 480b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch RL("Y"), 481b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch Cmd("git branch -D %s" % TEST_CONFIG["BRANCHNAME"], ""), 482b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch ]) 483b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.MakeStep().CommonPrepare() 484b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.MakeStep().PrepareBranch() 485b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 486b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch def testCommonPrepareNoConfirm(self): 487b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.Expect([ 488b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch Cmd("git status -s -uno", ""), 489014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git checkout -f origin/master", ""), 490958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Cmd("git fetch", ""), 491b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch Cmd("git branch", " branch1\n* %s" % TEST_CONFIG["BRANCHNAME"]), 492b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch RL("n"), 493b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch ]) 494b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.MakeStep().CommonPrepare() 495b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.assertRaises(Exception, self.MakeStep().PrepareBranch) 496b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 497b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch def testCommonPrepareDeleteBranchFailure(self): 498b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.Expect([ 499b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch Cmd("git status -s -uno", ""), 500014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git checkout -f origin/master", ""), 501958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Cmd("git fetch", ""), 502b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch Cmd("git branch", " branch1\n* %s" % TEST_CONFIG["BRANCHNAME"]), 503b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch RL("Y"), 504b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch Cmd("git branch -D %s" % TEST_CONFIG["BRANCHNAME"], None), 505b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch ]) 506b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.MakeStep().CommonPrepare() 507b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.assertRaises(Exception, self.MakeStep().PrepareBranch) 508b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 509b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch def testInitialEnvironmentChecks(self): 510b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch TextToFile("", os.path.join(TEST_CONFIG["DEFAULT_CWD"], ".git")) 511b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch os.environ["EDITOR"] = "vi" 512b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.Expect([ 513b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch Cmd("which vi", "/usr/bin/vi"), 514b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch ]) 515b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.MakeStep().InitialEnvironmentChecks(TEST_CONFIG["DEFAULT_CWD"]) 516b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 517958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier def testTagTimeout(self): 518958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier self.Expect([ 519958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Cmd("git fetch", ""), 520958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Cmd("git log -1 --format=%H --grep=\"Title\" origin/candidates", ""), 521958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Cmd("git fetch", ""), 522958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Cmd("git log -1 --format=%H --grep=\"Title\" origin/candidates", ""), 523958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Cmd("git fetch", ""), 524958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Cmd("git log -1 --format=%H --grep=\"Title\" origin/candidates", ""), 525958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Cmd("git fetch", ""), 526958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Cmd("git log -1 --format=%H --grep=\"Title\" origin/candidates", ""), 527958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier ]) 528958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier args = ["--branch", "candidates", "ab12345"] 529958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier self._state["version"] = "tag_name" 530958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier self._state["commit_title"] = "Title" 531958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier self.assertRaises(Exception, 532f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch lambda: self.RunStep(RollMerge, TagRevision, args)) 533958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier 534b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch def testReadAndPersistVersion(self): 535b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.WriteFakeVersionFile(build=5) 536b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch step = self.MakeStep() 537b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch step.ReadAndPersistVersion() 538b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.assertEquals("3", step["major"]) 539b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.assertEquals("22", step["minor"]) 540b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.assertEquals("5", step["build"]) 541b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.assertEquals("0", step["patch"]) 542b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 543b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch def testRegex(self): 544b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.assertEqual("(issue 321)", 545b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch re.sub(r"BUG=v8:(.*)$", r"(issue \1)", "BUG=v8:321")) 546b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.assertEqual("(Chromium issue 321)", 547b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch re.sub(r"BUG=(.*)$", r"(Chromium issue \1)", "BUG=321")) 548b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 549b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch cl = " too little\n\ttab\ttab\n too much\n trailing " 550b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch cl = MSub(r"\t", r" ", cl) 551b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch cl = MSub(r"^ {1,7}([^ ])", r" \1", cl) 552b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch cl = MSub(r"^ {9,80}([^ ])", r" \1", cl) 553b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch cl = MSub(r" +$", r"", cl) 554b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.assertEqual(" too little\n" 555b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch " tab tab\n" 556b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch " too much\n" 557b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch " trailing", cl) 558b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 559014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch self.assertEqual("//\n#define V8_BUILD_NUMBER 3\n", 560014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch MSub(r"(?<=#define V8_BUILD_NUMBER)(?P<space>\s+)\d*$", 561b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch r"\g<space>3", 562014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "//\n#define V8_BUILD_NUMBER 321\n")) 563b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 564b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch def testPreparePushRevision(self): 565b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch # Tests the default push hash used when the --revision option is not set. 566b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.Expect([ 567b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch Cmd("git log -1 --format=%H HEAD", "push_hash") 568b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch ]) 569b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 570014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch self.RunStep(PushToCandidates, PreparePushRevision) 571b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.assertEquals("push_hash", self._state["push_hash"]) 572b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 573b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch def testPrepareChangeLog(self): 574b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.WriteFakeVersionFile() 575b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch TEST_CONFIG["CHANGELOG_ENTRY_FILE"] = self.MakeEmptyTempFile() 576b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 577b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.Expect([ 578b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch Cmd("git log --format=%H 1234..push_hash", "rev1\nrev2\nrev3\nrev4"), 579b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch Cmd("git log -1 --format=%s rev1", "Title text 1"), 580b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch Cmd("git log -1 --format=%B rev1", "Title\n\nBUG=\nLOG=y\n"), 581b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch Cmd("git log -1 --format=%an rev1", "author1@chromium.org"), 582b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch Cmd("git log -1 --format=%s rev2", "Title text 2."), 583b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch Cmd("git log -1 --format=%B rev2", "Title\n\nBUG=123\nLOG= \n"), 584b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch Cmd("git log -1 --format=%an rev2", "author2@chromium.org"), 585b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch Cmd("git log -1 --format=%s rev3", "Title text 3"), 586b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch Cmd("git log -1 --format=%B rev3", "Title\n\nBUG=321\nLOG=true\n"), 587b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch Cmd("git log -1 --format=%an rev3", "author3@chromium.org"), 588b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch Cmd("git log -1 --format=%s rev4", "Title text 4"), 589b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch Cmd("git log -1 --format=%B rev4", 590b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch ("Title\n\nBUG=456\nLOG=Y\n\n" 591b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "Review URL: https://codereview.chromium.org/9876543210\n")), 592b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch URL("https://codereview.chromium.org/9876543210/description", 593b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "Title\n\nBUG=456\nLOG=N\n\n"), 594b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch Cmd("git log -1 --format=%an rev4", "author4@chromium.org"), 595b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch ]) 596b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 597014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch self._state["last_push_master"] = "1234" 598b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self._state["push_hash"] = "push_hash" 599b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self._state["version"] = "3.22.5" 600014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch self.RunStep(PushToCandidates, PrepareChangeLog) 601b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 602b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch actual_cl = FileToText(TEST_CONFIG["CHANGELOG_ENTRY_FILE"]) 603b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 604b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch expected_cl = """1999-07-31: Version 3.22.5 605b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 606b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch Title text 1. 607b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 608b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch Title text 3 (Chromium issue 321). 609b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 610b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch Performance and stability improvements on all platforms. 611b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch# 612b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch# The change log above is auto-generated. Please review if all relevant 613b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch# commit messages from the list below are included. 614b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch# All lines starting with # will be stripped. 615b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch# 616b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch# Title text 1. 617b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch# (author1@chromium.org) 618b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch# 619b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch# Title text 2 (Chromium issue 123). 620b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch# (author2@chromium.org) 621b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch# 622b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch# Title text 3 (Chromium issue 321). 623b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch# (author3@chromium.org) 624b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch# 625b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch# Title text 4 (Chromium issue 456). 626b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch# (author4@chromium.org) 627b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch# 628b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#""" 629b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 630b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.assertEquals(expected_cl, actual_cl) 631b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 632b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch def testEditChangeLog(self): 633b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch TEST_CONFIG["CHANGELOG_ENTRY_FILE"] = self.MakeEmptyTempFile() 634b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch TextToFile(" New \n\tLines \n", TEST_CONFIG["CHANGELOG_ENTRY_FILE"]) 635b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch os.environ["EDITOR"] = "vi" 636b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.Expect([ 637b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch RL(""), # Open editor. 638b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch Cmd("vi %s" % TEST_CONFIG["CHANGELOG_ENTRY_FILE"], ""), 639b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch ]) 640b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 641014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch self.RunStep(PushToCandidates, EditChangeLog) 642b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 643b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.assertEquals("New\n Lines", 644b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch FileToText(TEST_CONFIG["CHANGELOG_ENTRY_FILE"])) 645b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 646014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch TAGS = """ 647014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch4425.0 648014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch0.0.0.0 649014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch3.9.6 650014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch3.22.4 651014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochtest_tag 652014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch""" 653b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 654014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch # Version as tag: 3.22.4.0. Version on master: 3.22.6. 655014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch # Make sure that the latest version is 3.22.6.0. 656014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch def testIncrementVersion(self): 657b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.Expect([ 658014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git fetch origin +refs/tags/*:refs/tags/*", ""), 659014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git tag", self.TAGS), 660014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git checkout -f origin/master -- include/v8-version.h", 661014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "", cb=lambda: self.WriteFakeVersionFile(3, 22, 6)), 662b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch ]) 663b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 664014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch self.RunStep(PushToCandidates, IncrementVersion) 665b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 666b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.assertEquals("3", self._state["new_major"]) 667b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.assertEquals("22", self._state["new_minor"]) 668b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.assertEquals("7", self._state["new_build"]) 669b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.assertEquals("0", self._state["new_patch"]) 670b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 671b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch def _TestSquashCommits(self, change_log, expected_msg): 672b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch TEST_CONFIG["CHANGELOG_ENTRY_FILE"] = self.MakeEmptyTempFile() 673b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch with open(TEST_CONFIG["CHANGELOG_ENTRY_FILE"], "w") as f: 674b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch f.write(change_log) 675b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 676b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.Expect([ 677958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Cmd("git diff origin/candidates hash1", "patch content"), 678b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch ]) 679b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 680b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self._state["push_hash"] = "hash1" 681b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self._state["date"] = "1999-11-11" 682b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 683014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch self.RunStep(PushToCandidates, SquashCommits) 684b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.assertEquals(FileToText(TEST_CONFIG["COMMITMSG_FILE"]), expected_msg) 685b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 686b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch patch = FileToText(TEST_CONFIG["PATCH_FILE"]) 687b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.assertTrue(re.search(r"patch content", patch)) 688b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 689b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch def testSquashCommitsUnformatted(self): 690b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch change_log = """1999-11-11: Version 3.22.5 691b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 692b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch Log text 1. 693b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch Chromium issue 12345 694b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 695b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch Performance and stability improvements on all platforms.\n""" 696958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier commit_msg = """Version 3.22.5 (based on hash1) 697b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 698b8a8cc1952d61a2f3a2568848933943a543b5d3eBen MurdochLog text 1. Chromium issue 12345 699b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 700b8a8cc1952d61a2f3a2568848933943a543b5d3eBen MurdochPerformance and stability improvements on all platforms.""" 701b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self._TestSquashCommits(change_log, commit_msg) 702b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 703b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch def testSquashCommitsFormatted(self): 704b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch change_log = """1999-11-11: Version 3.22.5 705b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 706b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch Long commit message that fills more than 80 characters (Chromium issue 707b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 12345). 708b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 709b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch Performance and stability improvements on all platforms.\n""" 710958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier commit_msg = """Version 3.22.5 (based on hash1) 711b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 712b8a8cc1952d61a2f3a2568848933943a543b5d3eBen MurdochLong commit message that fills more than 80 characters (Chromium issue 12345). 713b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 714b8a8cc1952d61a2f3a2568848933943a543b5d3eBen MurdochPerformance and stability improvements on all platforms.""" 715b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self._TestSquashCommits(change_log, commit_msg) 716b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 717b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch def testSquashCommitsQuotationMarks(self): 718b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch change_log = """Line with "quotation marks".\n""" 719b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch commit_msg = """Line with "quotation marks".""" 720b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self._TestSquashCommits(change_log, commit_msg) 721b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 722958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier def testBootstrapper(self): 723958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier work_dir = self.MakeEmptyTempDirectory() 724958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier class FakeScript(ScriptsBase): 725958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier def _Steps(self): 726958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier return [] 727958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier 728958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier # Use the test configuration without the fake testing default work dir. 729958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier fake_config = dict(TEST_CONFIG) 730958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier del(fake_config["DEFAULT_CWD"]) 731958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier 732958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier self.Expect([ 733958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Cmd("fetch v8", "", cwd=work_dir), 734958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier ]) 735958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier FakeScript(fake_config, self).Run(["--work-dir", work_dir]) 736958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier 737014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch def _PushToCandidates(self, force=False, manual=False): 738b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch TextToFile("", os.path.join(TEST_CONFIG["DEFAULT_CWD"], ".git")) 739b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 740014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch # The version file on master has build level 5, while the version 741014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch # file from candidates has build level 4. 742b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.WriteFakeVersionFile(build=5) 743b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 744b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch TEST_CONFIG["CHANGELOG_ENTRY_FILE"] = self.MakeEmptyTempFile() 745014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch master_change_log = "2014-03-17: Sentinel\n" 746014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch TextToFile(master_change_log, 747958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier os.path.join(TEST_CONFIG["DEFAULT_CWD"], CHANGELOG_FILE)) 748b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch os.environ["EDITOR"] = "vi" 749b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 750014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch commit_msg_squashed = """Version 3.22.5 (squashed - based on push_hash) 751014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 752014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben MurdochLog text 1 (issue 321). 753014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 754014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben MurdochPerformance and stability improvements on all platforms.""" 755014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 756014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch commit_msg = """Version 3.22.5 (based on push_hash) 757014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 758014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben MurdochLog text 1 (issue 321). 759014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 760014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben MurdochPerformance and stability improvements on all platforms.""" 761014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 762b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch def ResetChangeLog(): 763014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch """On 'git co -b new_branch origin/candidates', 764014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch and 'git checkout -- ChangeLog', 765014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch the ChangLog will be reset to its content on candidates.""" 766014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch candidates_change_log = """1999-04-05: Version 3.22.4 767b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 768b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch Performance and stability improvements on all platforms.\n""" 769014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch TextToFile(candidates_change_log, 770958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier os.path.join(TEST_CONFIG["DEFAULT_CWD"], CHANGELOG_FILE)) 771b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 772014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch def ResetToCandidates(): 773b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch ResetChangeLog() 774b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.WriteFakeVersionFile() 775b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 776014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch def CheckVersionCommit(): 777b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch commit = FileToText(TEST_CONFIG["COMMITMSG_FILE"]) 778014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch self.assertEquals(commit_msg, commit) 779b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch version = FileToText( 780b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch os.path.join(TEST_CONFIG["DEFAULT_CWD"], VERSION_FILE)) 781014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch self.assertTrue(re.search(r"#define V8_MINOR_VERSION\s+22", version)) 782014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch self.assertTrue(re.search(r"#define V8_BUILD_NUMBER\s+5", version)) 783014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch self.assertFalse(re.search(r"#define V8_BUILD_NUMBER\s+6", version)) 784014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch self.assertTrue(re.search(r"#define V8_PATCH_LEVEL\s+0", version)) 785014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch self.assertTrue( 786014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch re.search(r"#define V8_IS_CANDIDATE_VERSION\s+0", version)) 787014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 788014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch # Check that the change log on the candidates branch got correctly 789014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch # modified. 790958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier change_log = FileToText( 791958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier os.path.join(TEST_CONFIG["DEFAULT_CWD"], CHANGELOG_FILE)) 792b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.assertEquals( 793b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch"""1999-07-31: Version 3.22.5 794b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 795b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch Log text 1 (issue 321). 796b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 797b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch Performance and stability improvements on all platforms. 798b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 799b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 800b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch1999-04-05: Version 3.22.4 801b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 802b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch Performance and stability improvements on all platforms.\n""", 803b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch change_log) 804b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 805b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch force_flag = " -f" if not manual else "" 806b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch expectations = [] 807b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch if not force: 808b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch expectations.append(Cmd("which vi", "/usr/bin/vi")) 809b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch expectations += [ 810b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch Cmd("git status -s -uno", ""), 811014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git checkout -f origin/master", ""), 812958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Cmd("git fetch", ""), 813b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch Cmd("git branch", " branch1\n* branch2\n"), 814b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch Cmd("git branch", " branch1\n* branch2\n"), 815958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Cmd(("git new-branch %s --upstream origin/master" % 816014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch TEST_CONFIG["BRANCHNAME"]), ""), 817014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git fetch origin +refs/tags/*:refs/tags/*", ""), 818014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git tag", self.TAGS), 819014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git checkout -f origin/master -- include/v8-version.h", 820b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "", cb=self.WriteFakeVersionFile), 821014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git log -1 --format=%H 3.22.4", "release_hash\n"), 822014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git log -1 --format=%s release_hash", 823014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "Version 3.22.4 (based on abc3)\n"), 824958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Cmd("git log --format=%H abc3..push_hash", "rev1\n"), 825b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch Cmd("git log -1 --format=%s rev1", "Log text 1.\n"), 826b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch Cmd("git log -1 --format=%B rev1", "Text\nLOG=YES\nBUG=v8:321\nText\n"), 827b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch Cmd("git log -1 --format=%an rev1", "author1@chromium.org\n"), 828b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch ] 829b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch if manual: 830b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch expectations.append(RL("")) # Open editor. 831b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch if not force: 832b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch expectations.append( 833b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch Cmd("vi %s" % TEST_CONFIG["CHANGELOG_ENTRY_FILE"], "")) 834b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch expectations += [ 835958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Cmd("git fetch", ""), 836958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Cmd("git checkout -f origin/master", ""), 837958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Cmd("git diff origin/candidates push_hash", "patch content\n"), 838958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Cmd(("git new-branch %s --upstream origin/candidates" % 839014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch TEST_CONFIG["CANDIDATESBRANCH"]), "", cb=ResetToCandidates), 840b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch Cmd("git apply --index --reject \"%s\"" % TEST_CONFIG["PATCH_FILE"], ""), 841958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Cmd("git checkout -f origin/candidates -- ChangeLog", "", 842b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch cb=ResetChangeLog), 843014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git checkout -f origin/candidates -- include/v8-version.h", "", 844b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch cb=self.WriteFakeVersionFile), 845014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git commit -am \"%s\"" % commit_msg_squashed, ""), 846b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch ] 847b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch if manual: 848b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch expectations.append(RL("Y")) # Sanity check. 849b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch expectations += [ 850958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Cmd("git cl land -f --bypass-hooks", ""), 851014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git checkout -f master", ""), 852014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git fetch", ""), 853014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git branch -D %s" % TEST_CONFIG["CANDIDATESBRANCH"], ""), 854014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd(("git new-branch %s --upstream origin/candidates" % 855014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch TEST_CONFIG["CANDIDATESBRANCH"]), "", cb=ResetToCandidates), 856014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git commit -aF \"%s\"" % TEST_CONFIG["COMMITMSG_FILE"], "", 857014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch cb=CheckVersionCommit), 858014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git cl land -f --bypass-hooks", ""), 859958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Cmd("git fetch", ""), 860958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Cmd("git log -1 --format=%H --grep=" 861958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier "\"Version 3.22.5 (based on push_hash)\"" 862958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier " origin/candidates", "hsh_to_tag"), 863958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Cmd("git tag 3.22.5 hsh_to_tag", ""), 864958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Cmd("git push origin 3.22.5", ""), 865014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git checkout -f origin/master", ""), 866b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch Cmd("git branch -D %s" % TEST_CONFIG["BRANCHNAME"], ""), 867014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git branch -D %s" % TEST_CONFIG["CANDIDATESBRANCH"], ""), 868b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch ] 869b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.Expect(expectations) 870b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 871958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier args = ["-a", "author@chromium.org", "--revision", "push_hash"] 872b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch if force: args.append("-f") 873b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch if manual: args.append("-m") 874b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch else: args += ["-r", "reviewer@chromium.org"] 875014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch PushToCandidates(TEST_CONFIG, self).Run(args) 876b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 877958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier cl = FileToText(os.path.join(TEST_CONFIG["DEFAULT_CWD"], CHANGELOG_FILE)) 878b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.assertTrue(re.search(r"^\d\d\d\d\-\d+\-\d+: Version 3\.22\.5", cl)) 879b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.assertTrue(re.search(r" Log text 1 \(issue 321\).", cl)) 880b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.assertTrue(re.search(r"1999\-04\-05: Version 3\.22\.4", cl)) 881b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 882b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch # Note: The version file is on build number 5 again in the end of this test 883014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch # since the git command that merges to master is mocked out. 884014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 885014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch def testPushToCandidatesManual(self): 886014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch self._PushToCandidates(manual=True) 887014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 888014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch def testPushToCandidatesSemiAutomatic(self): 889014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch self._PushToCandidates() 890014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 891014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch def testPushToCandidatesForced(self): 892014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch self._PushToCandidates(force=True) 893014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 894014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch def testCreateRelease(self): 895014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch TextToFile("", os.path.join(TEST_CONFIG["DEFAULT_CWD"], ".git")) 896014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 897014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch # The version file on master has build level 5. 898014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch self.WriteFakeVersionFile(build=5) 899014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 900014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch master_change_log = "2014-03-17: Sentinel\n" 901014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch TextToFile(master_change_log, 902014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch os.path.join(TEST_CONFIG["DEFAULT_CWD"], CHANGELOG_FILE)) 903014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 904014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch commit_msg = """Version 3.22.5 905014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 906014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben MurdochLog text 1 (issue 321). 907b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 908014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben MurdochPerformance and stability improvements on all platforms.""" 909014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 910014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch def ResetChangeLog(): 911014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch last_change_log = """1999-04-05: Version 3.22.4 912b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 913014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Performance and stability improvements on all platforms.\n""" 914014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch TextToFile(last_change_log, 915014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch os.path.join(TEST_CONFIG["DEFAULT_CWD"], CHANGELOG_FILE)) 916b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 917014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 918014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch def CheckVersionCommit(): 919014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch commit = FileToText(TEST_CONFIG["COMMITMSG_FILE"]) 920014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch self.assertEquals(commit_msg, commit) 921014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch version = FileToText( 922014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch os.path.join(TEST_CONFIG["DEFAULT_CWD"], VERSION_FILE)) 923014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch self.assertTrue(re.search(r"#define V8_MINOR_VERSION\s+22", version)) 924014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch self.assertTrue(re.search(r"#define V8_BUILD_NUMBER\s+5", version)) 925014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch self.assertFalse(re.search(r"#define V8_BUILD_NUMBER\s+6", version)) 926014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch self.assertTrue(re.search(r"#define V8_PATCH_LEVEL\s+0", version)) 927014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch self.assertTrue( 928014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch re.search(r"#define V8_IS_CANDIDATE_VERSION\s+0", version)) 929014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 930014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch # Check that the change log on the candidates branch got correctly 931014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch # modified. 932014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch change_log = FileToText( 933014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch os.path.join(TEST_CONFIG["DEFAULT_CWD"], CHANGELOG_FILE)) 934014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch self.assertEquals( 935014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch"""1999-07-31: Version 3.22.5 936014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 937014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Log text 1 (issue 321). 938014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 939014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Performance and stability improvements on all platforms. 940014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 941014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 942014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch1999-04-05: Version 3.22.4 943014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 944014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Performance and stability improvements on all platforms.\n""", 945014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch change_log) 946014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 947014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch expectations = [ 948014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git fetch origin " 949014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "+refs/heads/*:refs/heads/* " 950014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "+refs/pending/*:refs/pending/* " 951014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "+refs/pending-tags/*:refs/pending-tags/*", ""), 952014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git checkout -f origin/master", ""), 953014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git branch", ""), 954014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git fetch origin +refs/tags/*:refs/tags/*", ""), 955014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git tag", self.TAGS), 956014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git checkout -f origin/master -- include/v8-version.h", 957014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "", cb=self.WriteFakeVersionFile), 958014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git log -1 --format=%H 3.22.4", "release_hash\n"), 959014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git log -1 --format=%s release_hash", "Version 3.22.4\n"), 960014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git log -1 --format=%H release_hash^", "abc3\n"), 961014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git log --format=%H abc3..push_hash", "rev1\n"), 962014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git log -1 --format=%s rev1", "Log text 1.\n"), 963014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git log -1 --format=%B rev1", "Text\nLOG=YES\nBUG=v8:321\nText\n"), 964014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git log -1 --format=%an rev1", "author1@chromium.org\n"), 965014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git reset --hard origin/master", ""), 966014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git checkout -b work-branch push_hash", ""), 967014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git checkout -f 3.22.4 -- ChangeLog", "", cb=ResetChangeLog), 968014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git checkout -f 3.22.4 -- include/v8-version.h", "", 969014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch cb=self.WriteFakeVersionFile), 970109988c7ccb6f3fd1a58574fa3dfb88beaef6632Ben Murdoch Cmd("git checkout -f 3.22.4 -- WATCHLISTS", "", 971109988c7ccb6f3fd1a58574fa3dfb88beaef6632Ben Murdoch cb=self.WriteFakeWatchlistsFile), 972014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git commit -aF \"%s\"" % TEST_CONFIG["COMMITMSG_FILE"], "", 973014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch cb=CheckVersionCommit), 974bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch Cmd("git log -1 --format=%H --grep=\"Version 3.22.5\" origin/3.22.5", 975bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch ""), 976014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git push origin " 977014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "refs/heads/work-branch:refs/pending/heads/3.22.5 " 978014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "push_hash:refs/pending-tags/heads/3.22.5 " 979014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "push_hash:refs/heads/3.22.5", ""), 980014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git fetch", ""), 981014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git log -1 --format=%H --grep=" 982014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "\"Version 3.22.5\" origin/3.22.5", "hsh_to_tag"), 983014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git tag 3.22.5 hsh_to_tag", ""), 984014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git push origin 3.22.5", ""), 985014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git checkout -f origin/master", ""), 986014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git branch", "* master\n work-branch\n"), 987014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git branch -D work-branch", ""), 988014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git gc", ""), 989014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch ] 990014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch self.Expect(expectations) 991014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 992014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch args = ["-a", "author@chromium.org", 993014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "-r", "reviewer@chromium.org", 994014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "--revision", "push_hash"] 995014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch CreateRelease(TEST_CONFIG, self).Run(args) 996014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 997014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch cl = FileToText(os.path.join(TEST_CONFIG["DEFAULT_CWD"], CHANGELOG_FILE)) 998014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch self.assertTrue(re.search(r"^\d\d\d\d\-\d+\-\d+: Version 3\.22\.5", cl)) 999014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch self.assertTrue(re.search(r" Log text 1 \(issue 321\).", cl)) 1000014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch self.assertTrue(re.search(r"1999\-04\-05: Version 3\.22\.4", cl)) 1001014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 1002014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch # Note: The version file is on build number 5 again in the end of this test 1003014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch # since the git command that merges to master is mocked out. 1004b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 1005109988c7ccb6f3fd1a58574fa3dfb88beaef6632Ben Murdoch # Check for correct content of the WATCHLISTS file 1006109988c7ccb6f3fd1a58574fa3dfb88beaef6632Ben Murdoch 1007109988c7ccb6f3fd1a58574fa3dfb88beaef6632Ben Murdoch watchlists_content = FileToText(os.path.join(TEST_CONFIG["DEFAULT_CWD"], 1008109988c7ccb6f3fd1a58574fa3dfb88beaef6632Ben Murdoch WATCHLISTS_FILE)) 1009109988c7ccb6f3fd1a58574fa3dfb88beaef6632Ben Murdoch expected_watchlists_content = """ 1010109988c7ccb6f3fd1a58574fa3dfb88beaef6632Ben Murdoch 'merges': [ 1011109988c7ccb6f3fd1a58574fa3dfb88beaef6632Ben Murdoch # Only enabled on branches created with tools/release/create_release.py 1012109988c7ccb6f3fd1a58574fa3dfb88beaef6632Ben Murdoch 'v8-merges@googlegroups.com', 1013109988c7ccb6f3fd1a58574fa3dfb88beaef6632Ben Murdoch ], 1014109988c7ccb6f3fd1a58574fa3dfb88beaef6632Ben Murdoch""" 1015109988c7ccb6f3fd1a58574fa3dfb88beaef6632Ben Murdoch self.assertEqual(watchlists_content, expected_watchlists_content) 1016109988c7ccb6f3fd1a58574fa3dfb88beaef6632Ben Murdoch 1017b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch C_V8_22624_LOG = """V8 CL. 1018b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 1019b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochgit-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22624 123 1020b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 1021b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch""" 1022b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 1023b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch C_V8_123455_LOG = """V8 CL. 1024b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 1025b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochgit-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@123455 123 1026b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 1027b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch""" 1028b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 1029b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch C_V8_123456_LOG = """V8 CL. 1030b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 1031b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochgit-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@123456 123 1032b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 1033b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch""" 1034b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 1035014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch ROLL_COMMIT_MSG = """Update V8 to version 3.22.4. 1036014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 1037014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben MurdochSummary of changes available at: 1038014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochhttps://chromium.googlesource.com/v8/v8/+log/last_rol..roll_hsh 1039014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 1040014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben MurdochPlease follow these instructions for assigning/CC'ing issues: 1041014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochhttps://github.com/v8/v8/wiki/Triaging%20issues 1042014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 1043014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben MurdochPlease close rolling in case of a roll revert: 1044014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochhttps://v8-roll.appspot.com/ 1045014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben MurdochThis only works with a Google account. 1046014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 1047c8c1d9e03f4babd16833b0f8ccf6aab5fa6e8c7aBen MurdochCQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel 1048bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch 1049014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben MurdochTBR=reviewer@chromium.org""" 1050014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 1051014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch # Snippet from the original DEPS file. 1052014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch FAKE_DEPS = """ 1053014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvars = { 1054014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "v8_revision": "last_roll_hsh", 1055014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch} 1056014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochdeps = { 1057014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "src/v8": 1058014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch (Var("googlecode_url") % "v8") + "/" + Var("v8_branch") + "@" + 1059014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Var("v8_revision"), 1060014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch} 1061014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch""" 1062014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 1063014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch def testChromiumRollUpToDate(self): 1064014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch TEST_CONFIG["CHROMIUM"] = self.MakeEmptyTempDirectory() 1065014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch json_output_file = os.path.join(TEST_CONFIG["CHROMIUM"], "out.json") 1066014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch TextToFile(self.FAKE_DEPS, os.path.join(TEST_CONFIG["CHROMIUM"], "DEPS")) 1067014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch self.Expect([ 1068014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git fetch origin", ""), 1069014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git fetch origin +refs/tags/*:refs/tags/*", ""), 1070014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git describe --tags last_roll_hsh", "3.22.4"), 1071014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git fetch origin +refs/tags/*:refs/tags/*", ""), 1072014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git rev-list --max-age=395200 --tags", 1073014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "bad_tag\nroll_hsh\nhash_123"), 1074014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git describe --tags bad_tag", ""), 1075014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git describe --tags roll_hsh", "3.22.4"), 1076014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git describe --tags hash_123", "3.22.3"), 1077014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git describe --tags roll_hsh", "3.22.4"), 1078014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git describe --tags hash_123", "3.22.3"), 1079014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch ]) 1080014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 1081014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch result = auto_roll.AutoRoll(TEST_CONFIG, self).Run( 1082014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch AUTO_PUSH_ARGS + [ 1083014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "-c", TEST_CONFIG["CHROMIUM"], 1084014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "--json-output", json_output_file]) 1085014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch self.assertEquals(0, result) 1086014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch json_output = json.loads(FileToText(json_output_file)) 1087014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch self.assertEquals("up_to_date", json_output["monitoring_state"]) 1088b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 1089014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 1090014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch def testChromiumRoll(self): 1091b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch # Setup fake directory structures. 1092b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch TEST_CONFIG["CHROMIUM"] = self.MakeEmptyTempDirectory() 1093014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch json_output_file = os.path.join(TEST_CONFIG["CHROMIUM"], "out.json") 1094014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch TextToFile(self.FAKE_DEPS, os.path.join(TEST_CONFIG["CHROMIUM"], "DEPS")) 1095b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch TextToFile("", os.path.join(TEST_CONFIG["CHROMIUM"], ".git")) 1096b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch chrome_dir = TEST_CONFIG["CHROMIUM"] 1097b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch os.makedirs(os.path.join(chrome_dir, "v8")) 1098b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 1099b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch def WriteDeps(): 1100b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch TextToFile("Some line\n \"v8_revision\": \"22624\",\n some line", 1101b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch os.path.join(chrome_dir, "DEPS")) 1102b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 1103b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch expectations = [ 1104b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch Cmd("git fetch origin", ""), 1105014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git fetch origin +refs/tags/*:refs/tags/*", ""), 1106014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git describe --tags last_roll_hsh", "3.22.3.1"), 1107014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git fetch origin +refs/tags/*:refs/tags/*", ""), 1108014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git rev-list --max-age=395200 --tags", 1109014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "bad_tag\nroll_hsh\nhash_123"), 1110014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git describe --tags bad_tag", ""), 1111014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git describe --tags roll_hsh", "3.22.4"), 1112014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git describe --tags hash_123", "3.22.3"), 1113014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git describe --tags roll_hsh", "3.22.4"), 1114014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git log -1 --format=%s roll_hsh", "Version 3.22.4\n"), 1115014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git describe --tags roll_hsh", "3.22.4"), 1116014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git describe --tags last_roll_hsh", "3.22.2.1"), 1117b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch Cmd("git status -s -uno", "", cwd=chrome_dir), 1118b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch Cmd("git checkout -f master", "", cwd=chrome_dir), 1119014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git branch", "", cwd=chrome_dir), 1120b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch Cmd("git pull", "", cwd=chrome_dir), 1121b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch Cmd("git fetch origin", ""), 1122014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git new-branch work-branch", "", cwd=chrome_dir), 1123014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("roll-dep-svn v8 roll_hsh", "rolled", cb=WriteDeps, cwd=chrome_dir), 1124014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd(("git commit -am \"%s\" " 1125014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "--author \"author@chromium.org <author@chromium.org>\"" % 1126014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch self.ROLL_COMMIT_MSG), 1127b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "", cwd=chrome_dir), 1128014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git cl upload --send-mail --email \"author@chromium.org\" -f " 11293b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch "--use-commit-queue --bypass-hooks", "", cwd=chrome_dir), 1130014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git checkout -f master", "", cwd=chrome_dir), 1131014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git branch -D work-branch", "", cwd=chrome_dir), 1132b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch ] 1133b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.Expect(expectations) 1134b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 1135b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch args = ["-a", "author@chromium.org", "-c", chrome_dir, 1136014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "-r", "reviewer@chromium.org", "--json-output", json_output_file] 1137014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch auto_roll.AutoRoll(TEST_CONFIG, self).Run(args) 1138b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 1139b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch deps = FileToText(os.path.join(chrome_dir, "DEPS")) 1140b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.assertTrue(re.search("\"v8_revision\": \"22624\"", deps)) 1141b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 1142014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch json_output = json.loads(FileToText(json_output_file)) 1143014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch self.assertEquals("success", json_output["monitoring_state"]) 1144014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 1145b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch def testCheckLastPushRecently(self): 1146b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.Expect([ 1147014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git fetch origin +refs/tags/*:refs/tags/*", ""), 1148014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git tag", self.TAGS), 1149014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git log -1 --format=%H 3.22.4", "release_hash\n"), 1150014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git log -1 --format=%s release_hash", 1151014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "Version 3.22.4 (based on abc3)\n"), 1152014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git log --format=%H abc3..abc123", "\n"), 1153b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch ]) 1154b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 1155958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier self._state["candidate"] = "abc123" 1156958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier self.assertEquals(0, self.RunStep( 1157014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch auto_push.AutoPush, LastReleaseBailout, AUTO_PUSH_ARGS)) 1158b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 1159b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch def testAutoPush(self): 1160b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.Expect([ 1161958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Cmd("git fetch", ""), 1162014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git fetch origin +refs/heads/lkgr:refs/heads/lkgr", ""), 1163014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git show-ref -s refs/heads/lkgr", "abc123\n"), 1164014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git fetch origin +refs/tags/*:refs/tags/*", ""), 1165014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git tag", self.TAGS), 1166014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git log -1 --format=%H 3.22.4", "release_hash\n"), 1167014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git log -1 --format=%s release_hash", 1168014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "Version 3.22.4 (based on abc3)\n"), 1169014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git log --format=%H abc3..abc123", "some_stuff\n"), 1170b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch ]) 1171b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 1172b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch auto_push.AutoPush(TEST_CONFIG, self).Run(AUTO_PUSH_ARGS + ["--push"]) 1173b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 1174b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch state = json.loads(FileToText("%s-state.json" 1175b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch % TEST_CONFIG["PERSISTFILE_BASENAME"])) 1176b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 1177958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier self.assertEquals("abc123", state["candidate"]) 1178b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 1179f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch def testRollMerge(self): 1180b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch TEST_CONFIG["ALREADY_MERGING_SENTINEL_FILE"] = self.MakeEmptyTempFile() 1181b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch TextToFile("", os.path.join(TEST_CONFIG["DEFAULT_CWD"], ".git")) 1182b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.WriteFakeVersionFile(build=5) 1183b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch os.environ["EDITOR"] = "vi" 1184b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch extra_patch = self.MakeEmptyTempFile() 1185b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 1186b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch def VerifyPatch(patch): 1187b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch return lambda: self.assertEquals(patch, 1188b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch FileToText(TEST_CONFIG["TEMPORARY_PATCH_FILE"])) 1189b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 1190958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier msg = """Version 3.22.5.1 (cherry-pick) 1191958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier 1192958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily BernierMerged ab12345 1193958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily BernierMerged ab23456 1194958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily BernierMerged ab34567 1195958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily BernierMerged ab45678 1196958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily BernierMerged ab56789 1197b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 1198b8a8cc1952d61a2f3a2568848933943a543b5d3eBen MurdochTitle4 1199b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 1200b8a8cc1952d61a2f3a2568848933943a543b5d3eBen MurdochTitle2 1201b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 1202b8a8cc1952d61a2f3a2568848933943a543b5d3eBen MurdochTitle3 1203b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 1204b8a8cc1952d61a2f3a2568848933943a543b5d3eBen MurdochTitle1 1205b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 1206b8a8cc1952d61a2f3a2568848933943a543b5d3eBen MurdochRevert "Something" 1207b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 1208b8a8cc1952d61a2f3a2568848933943a543b5d3eBen MurdochBUG=123,234,345,456,567,v8:123 1209b8a8cc1952d61a2f3a2568848933943a543b5d3eBen MurdochLOG=N 1210b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch""" 1211b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 1212014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch def VerifyLand(): 1213b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch commit = FileToText(TEST_CONFIG["COMMITMSG_FILE"]) 1214b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.assertEquals(msg, commit) 1215b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch version = FileToText( 1216b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch os.path.join(TEST_CONFIG["DEFAULT_CWD"], VERSION_FILE)) 1217014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch self.assertTrue(re.search(r"#define V8_MINOR_VERSION\s+22", version)) 1218014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch self.assertTrue(re.search(r"#define V8_BUILD_NUMBER\s+5", version)) 1219014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch self.assertTrue(re.search(r"#define V8_PATCH_LEVEL\s+1", version)) 1220014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch self.assertTrue( 1221014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch re.search(r"#define V8_IS_CANDIDATE_VERSION\s+0", version)) 1222b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 1223b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.Expect([ 1224b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch Cmd("git status -s -uno", ""), 1225014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git checkout -f origin/master", ""), 1226958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Cmd("git fetch", ""), 1227b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch Cmd("git branch", " branch1\n* branch2\n"), 1228014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git new-branch %s --upstream refs/remotes/origin/candidates" % 1229958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier TEST_CONFIG["BRANCHNAME"], ""), 1230958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Cmd(("git log --format=%H --grep=\"Port ab12345\" " 1231958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier "--reverse origin/master"), 1232958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier "ab45678\nab23456"), 1233958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Cmd("git log -1 --format=%s ab45678", "Title1"), 1234958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Cmd("git log -1 --format=%s ab23456", "Title2"), 1235958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Cmd(("git log --format=%H --grep=\"Port ab23456\" " 1236958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier "--reverse origin/master"), 1237b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch ""), 1238958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Cmd(("git log --format=%H --grep=\"Port ab34567\" " 1239958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier "--reverse origin/master"), 1240958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier "ab56789"), 1241958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Cmd("git log -1 --format=%s ab56789", "Title3"), 1242958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier RL("Y"), # Automatically add corresponding ports (ab34567, ab56789)? 1243958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier # Simulate git being down which stops the script. 1244958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Cmd("git log -1 --format=%s ab12345", None), 1245b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch # Restart script in the failing step. 1246958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Cmd("git log -1 --format=%s ab12345", "Title4"), 1247958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Cmd("git log -1 --format=%s ab23456", "Title2"), 1248958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Cmd("git log -1 --format=%s ab34567", "Title3"), 1249958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Cmd("git log -1 --format=%s ab45678", "Title1"), 1250958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Cmd("git log -1 --format=%s ab56789", "Revert \"Something\""), 1251958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Cmd("git log -1 ab12345", "Title4\nBUG=123\nBUG=234"), 1252958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Cmd("git log -1 ab23456", "Title2\n BUG = v8:123,345"), 1253958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Cmd("git log -1 ab34567", "Title3\nLOG=n\nBUG=567, 456"), 1254958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Cmd("git log -1 ab45678", "Title1\nBUG="), 1255958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Cmd("git log -1 ab56789", "Revert \"Something\"\nBUG=none"), 1256958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Cmd("git log -1 -p ab12345", "patch4"), 1257b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch Cmd(("git apply --index --reject \"%s\"" % 1258b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch TEST_CONFIG["TEMPORARY_PATCH_FILE"]), 1259b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "", cb=VerifyPatch("patch4")), 1260958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Cmd("git log -1 -p ab23456", "patch2"), 1261b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch Cmd(("git apply --index --reject \"%s\"" % 1262b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch TEST_CONFIG["TEMPORARY_PATCH_FILE"]), 1263b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "", cb=VerifyPatch("patch2")), 1264958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Cmd("git log -1 -p ab34567", "patch3"), 1265b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch Cmd(("git apply --index --reject \"%s\"" % 1266b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch TEST_CONFIG["TEMPORARY_PATCH_FILE"]), 1267b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "", cb=VerifyPatch("patch3")), 1268958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Cmd("git log -1 -p ab45678", "patch1"), 1269b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch Cmd(("git apply --index --reject \"%s\"" % 1270b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch TEST_CONFIG["TEMPORARY_PATCH_FILE"]), 1271b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "", cb=VerifyPatch("patch1")), 1272958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Cmd("git log -1 -p ab56789", "patch5\n"), 1273b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch Cmd(("git apply --index --reject \"%s\"" % 1274b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch TEST_CONFIG["TEMPORARY_PATCH_FILE"]), 1275b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "", cb=VerifyPatch("patch5\n")), 1276b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch Cmd("git apply --index --reject \"%s\"" % extra_patch, ""), 1277b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch RL("Y"), # Automatically increment patch level? 1278b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch Cmd("git commit -aF \"%s\"" % TEST_CONFIG["COMMITMSG_FILE"], ""), 1279b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch RL("reviewer@chromium.org"), # V8 reviewer. 1280b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch Cmd("git cl upload --send-mail -r \"reviewer@chromium.org\" " 1281958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier "--bypass-hooks --cc \"ulan@chromium.org\"", ""), 1282b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch Cmd("git checkout -f %s" % TEST_CONFIG["BRANCHNAME"], ""), 1283b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch RL("LGTM"), # Enter LGTM for V8 CL. 1284b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch Cmd("git cl presubmit", "Presubmit successfull\n"), 1285958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Cmd("git cl land -f --bypass-hooks", "Closing issue\n", 1286014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch cb=VerifyLand), 1287958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Cmd("git fetch", ""), 1288958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Cmd("git log -1 --format=%H --grep=\"" 1289958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier "Version 3.22.5.1 (cherry-pick)" 1290014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "\" refs/remotes/origin/candidates", 1291958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier ""), 1292958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Cmd("git fetch", ""), 1293958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Cmd("git log -1 --format=%H --grep=\"" 1294958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier "Version 3.22.5.1 (cherry-pick)" 1295014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "\" refs/remotes/origin/candidates", 1296958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier "hsh_to_tag"), 1297958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Cmd("git tag 3.22.5.1 hsh_to_tag", ""), 1298958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Cmd("git push origin 3.22.5.1", ""), 1299014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git checkout -f origin/master", ""), 1300b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch Cmd("git branch -D %s" % TEST_CONFIG["BRANCHNAME"], ""), 1301b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch ]) 1302b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 1303958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier # ab12345 and ab34567 are patches. ab23456 (included) and ab45678 are the 1304958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier # MIPS ports of ab12345. ab56789 is the MIPS port of ab34567. 1305958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier args = ["-f", "-p", extra_patch, "--branch", "candidates", 1306958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier "ab12345", "ab23456", "ab34567"] 1307b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 1308958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier # The first run of the script stops because of git being down. 1309b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.assertRaises(GitFailedException, 1310f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch lambda: RollMerge(TEST_CONFIG, self).Run(args)) 1311f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 1312f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch # Test that state recovery after restarting the script works. 1313f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch args += ["-s", "4"] 1314f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch RollMerge(TEST_CONFIG, self).Run(args) 1315f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 1316f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch def testReleases(self): 1317f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch c_hash1_commit_log = """Update V8 to Version 4.2.71. 1318f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 1319f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen MurdochCr-Commit-Position: refs/heads/master@{#5678} 1320f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch""" 1321f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch c_hash2_commit_log = """Revert something. 1322f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 1323f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen MurdochBUG=12345 1324f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 1325f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen MurdochReason: 1326f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch> Some reason. 1327f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch> Cr-Commit-Position: refs/heads/master@{#12345} 1328f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch> git-svn-id: svn://svn.chromium.org/chrome/trunk/src@12345 003-1c4 1329f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 1330f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen MurdochReview URL: https://codereview.chromium.org/12345 1331f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 1332f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen MurdochCr-Commit-Position: refs/heads/master@{#4567} 1333f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochgit-svn-id: svn://svn.chromium.org/chrome/trunk/src@4567 0039-1c4b 1334f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 1335f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch""" 1336f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch c_hash3_commit_log = """Simple. 1337f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 1338f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochgit-svn-id: svn://svn.chromium.org/chrome/trunk/src@3456 0039-1c4b 1339f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 1340f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch""" 1341f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch c_hash_234_commit_log = """Version 3.3.1.1 (cherry-pick). 1342f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 1343f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen MurdochMerged abc12. 1344f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 1345f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen MurdochReview URL: fake.com 1346f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 1347f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen MurdochCr-Commit-Position: refs/heads/candidates@{#234} 1348f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch""" 1349f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch c_hash_123_commit_log = """Version 3.3.1.0 1350f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 1351f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochgit-svn-id: googlecode@123 0039-1c4b 1352f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch""" 1353f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch c_hash_345_commit_log = """Version 3.4.0. 1354f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 1355f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen MurdochCr-Commit-Position: refs/heads/candidates@{#345} 1356f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch""" 1357f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch c_hash_456_commit_log = """Version 4.2.71. 1358f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 1359f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen MurdochCr-Commit-Position: refs/heads/4.2.71@{#1} 1360f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch""" 1361f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch c_deps = "Line\n \"v8_revision\": \"%s\",\n line\n" 1362f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 1363f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch json_output = self.MakeEmptyTempFile() 1364f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch csv_output = self.MakeEmptyTempFile() 1365f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch self.WriteFakeVersionFile() 1366f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 1367f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch TEST_CONFIG["CHROMIUM"] = self.MakeEmptyTempDirectory() 1368f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch chrome_dir = TEST_CONFIG["CHROMIUM"] 1369f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch chrome_v8_dir = os.path.join(chrome_dir, "v8") 1370f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch os.makedirs(chrome_v8_dir) 1371f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 1372f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch def ResetVersion(major, minor, build, patch=0): 1373f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch return lambda: self.WriteFakeVersionFile(major=major, 1374f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch minor=minor, 1375f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch build=build, 1376f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch patch=patch) 1377f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 1378f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch self.Expect([ 1379f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git status -s -uno", ""), 1380f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git checkout -f origin/master", ""), 1381f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git fetch", ""), 1382f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git branch", " branch1\n* branch2\n"), 1383f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git new-branch %s" % TEST_CONFIG["BRANCHNAME"], ""), 1384f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git fetch origin +refs/tags/*:refs/tags/*", ""), 1385f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git rev-list --max-age=395200 --tags", 1386f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "bad_tag\nhash_234\nhash_123\nhash_345\nhash_456\n"), 1387f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git describe --tags bad_tag", "3.23.42-1-deadbeef"), 1388f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git describe --tags hash_234", "3.3.1.1"), 1389f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git describe --tags hash_123", "3.21.2"), 1390f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git describe --tags hash_345", "3.22.3"), 1391f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git describe --tags hash_456", "4.2.71"), 1392f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git diff --name-only hash_234 hash_234^", VERSION_FILE), 1393f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git checkout -f hash_234 -- %s" % VERSION_FILE, "", 1394f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch cb=ResetVersion(3, 3, 1, 1)), 1395f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git branch -r --contains hash_234", " branch-heads/3.3\n"), 1396f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git log -1 --format=%B hash_234", c_hash_234_commit_log), 1397f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git log -1 --format=%s hash_234", ""), 1398f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git log -1 --format=%B hash_234", c_hash_234_commit_log), 1399f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git log -1 --format=%ci hash_234", "18:15"), 1400f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git checkout -f HEAD -- %s" % VERSION_FILE, "", 1401f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch cb=ResetVersion(3, 22, 5)), 1402f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git diff --name-only hash_123 hash_123^", VERSION_FILE), 1403f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git checkout -f hash_123 -- %s" % VERSION_FILE, "", 1404f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch cb=ResetVersion(3, 21, 2)), 1405f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git branch -r --contains hash_123", " branch-heads/3.21\n"), 1406f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git log -1 --format=%B hash_123", c_hash_123_commit_log), 1407f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git log -1 --format=%s hash_123", ""), 1408f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git log -1 --format=%B hash_123", c_hash_123_commit_log), 1409f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git log -1 --format=%ci hash_123", "03:15"), 1410f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git checkout -f HEAD -- %s" % VERSION_FILE, "", 1411f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch cb=ResetVersion(3, 22, 5)), 1412f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git diff --name-only hash_345 hash_345^", VERSION_FILE), 1413f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git checkout -f hash_345 -- %s" % VERSION_FILE, "", 1414f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch cb=ResetVersion(3, 22, 3)), 1415f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git branch -r --contains hash_345", " origin/candidates\n"), 1416f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git log -1 --format=%B hash_345", c_hash_345_commit_log), 1417f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git log -1 --format=%s hash_345", ""), 1418f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git log -1 --format=%B hash_345", c_hash_345_commit_log), 1419f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git log -1 --format=%ci hash_345", ""), 1420f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git checkout -f HEAD -- %s" % VERSION_FILE, "", 1421f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch cb=ResetVersion(3, 22, 5)), 1422f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git diff --name-only hash_456 hash_456^", VERSION_FILE), 1423f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git checkout -f hash_456 -- %s" % VERSION_FILE, "", 1424f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch cb=ResetVersion(4, 2, 71)), 1425f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git branch -r --contains hash_456", " origin/4.2.71\n"), 1426f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git log -1 --format=%B hash_456", c_hash_456_commit_log), 1427f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git log -1 --format=%H 4.2.71", "hash_456"), 1428f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git log -1 --format=%s hash_456", "Version 4.2.71"), 1429f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git log -1 --format=%H hash_456^", "master_456"), 1430f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git log -1 --format=%B master_456", 1431f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "Cr-Commit-Position: refs/heads/master@{#456}"), 1432f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git log -1 --format=%B hash_456", c_hash_456_commit_log), 1433f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git log -1 --format=%ci hash_456", "02:15"), 1434f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git checkout -f HEAD -- %s" % VERSION_FILE, "", 1435f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch cb=ResetVersion(3, 22, 5)), 1436f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git fetch origin +refs/heads/*:refs/remotes/origin/* " 1437f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "+refs/branch-heads/*:refs/remotes/branch-heads/*", "", 1438f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch cwd=chrome_dir), 1439f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git fetch origin", "", cwd=chrome_v8_dir), 1440f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git log --format=%H --grep=\"V8\" origin/master -- DEPS", 1441f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "c_hash1\nc_hash2\nc_hash3\n", 1442f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch cwd=chrome_dir), 1443f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git show c_hash1:DEPS", c_deps % "hash_456", cwd=chrome_dir), 1444f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git log -1 --format=%B c_hash1", c_hash1_commit_log, 1445f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch cwd=chrome_dir), 1446f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git show c_hash2:DEPS", c_deps % "hash_345", cwd=chrome_dir), 1447f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git log -1 --format=%B c_hash2", c_hash2_commit_log, 1448f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch cwd=chrome_dir), 1449f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git show c_hash3:DEPS", c_deps % "deadbeef", cwd=chrome_dir), 1450f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git log -1 --format=%B c_hash3", c_hash3_commit_log, 1451f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch cwd=chrome_dir), 1452f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git branch -r", " weird/123\n branch-heads/7\n", cwd=chrome_dir), 1453f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git show refs/branch-heads/7:DEPS", c_deps % "hash_345", 1454f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch cwd=chrome_dir), 1455f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch URL("http://omahaproxy.appspot.com/all.json", """[{ 1456f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "os": "win", 1457f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "versions": [{ 1458f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "version": "2.2.2.2", 1459f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "v8_version": "22.2.2.2", 1460f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "current_reldate": "04/09/15", 1461f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "os": "win", 1462f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "channel": "canary", 1463f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "previous_version": "1.1.1.0" 1464f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch }] 1465f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch }]"""), 1466f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch URL("http://omahaproxy.appspot.com/v8.json?version=1.1.1.0", """{ 1467f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "chromium_version": "1.1.1.0", 1468f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "v8_version": "11.1.1.0" 1469f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch }"""), 1470f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git rev-list -1 11.1.1", "v8_previous_version_hash"), 1471f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git rev-list -1 22.2.2.2", "v8_version_hash"), 1472f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git checkout -f origin/master", ""), 1473f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git branch -D %s" % TEST_CONFIG["BRANCHNAME"], "") 1474f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch ]) 1475f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 1476f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch args = ["-c", TEST_CONFIG["CHROMIUM"], 1477f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "--json", json_output, 1478f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "--csv", csv_output, 1479f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "--max-releases", "1"] 1480f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Releases(TEST_CONFIG, self).Run(args) 1481f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 1482f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch # Check expected output. 1483f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch csv = ("4.2.71,4.2.71,1,5678,\r\n" 1484f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "3.22.3,candidates,345,4567:5677,\r\n" 1485f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "3.21.2,3.21,123,,\r\n" 1486f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "3.3.1.1,3.3,234,,abc12\r\n") 1487f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch self.assertEquals(csv, FileToText(csv_output)) 1488f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 1489f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch expected_json = {"chrome_releases":{ 1490f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "canaries": [ 1491f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch { 1492f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "chrome_version": "2.2.2.2", 1493f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "os": "win", 1494f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "release_date": "04/09/15", 1495f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "v8_version": "22.2.2.2", 1496f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "v8_version_hash": "v8_version_hash", 1497f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "v8_previous_version": "11.1.1.0", 1498f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "v8_previous_version_hash": "v8_previous_version_hash" 1499f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch }]}, 1500f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "releases":[ 1501f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch { 1502f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "revision": "1", 1503f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "revision_git": "hash_456", 1504f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "master_position": "456", 1505f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "master_hash": "master_456", 1506f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "patches_merged": "", 1507f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "version": "4.2.71", 1508f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "chromium_revision": "5678", 1509f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "branch": "4.2.71", 1510f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "review_link": "", 1511f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "date": "02:15", 1512f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "chromium_branch": "", 1513f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch # FIXME(machenbach): Fix revisions link for git. 1514f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "revision_link": "https://code.google.com/p/v8/source/detail?r=1", 1515f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch }, 1516f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch { 1517f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "revision": "345", 1518f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "revision_git": "hash_345", 1519f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "master_position": "", 1520f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "master_hash": "", 1521f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "patches_merged": "", 1522f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "version": "3.22.3", 1523f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "chromium_revision": "4567:5677", 1524f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "branch": "candidates", 1525f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "review_link": "", 1526f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "date": "", 1527f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "chromium_branch": "7", 1528f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "revision_link": "https://code.google.com/p/v8/source/detail?r=345", 1529f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch }, 1530f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch { 1531f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "revision": "123", 1532f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "revision_git": "hash_123", 1533f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "patches_merged": "", 1534f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "master_position": "", 1535f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "master_hash": "", 1536f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "version": "3.21.2", 1537f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "chromium_revision": "", 1538f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "branch": "3.21", 1539f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "review_link": "", 1540f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "date": "03:15", 1541f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "chromium_branch": "", 1542f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "revision_link": "https://code.google.com/p/v8/source/detail?r=123", 1543f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch }, 1544f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch { 1545f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "revision": "234", 1546f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "revision_git": "hash_234", 1547f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "patches_merged": "abc12", 1548f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "master_position": "", 1549f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "master_hash": "", 1550f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "version": "3.3.1.1", 1551f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "chromium_revision": "", 1552f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "branch": "3.3", 1553f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "review_link": "fake.com", 1554f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "date": "18:15", 1555f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "chromium_branch": "", 1556f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "revision_link": "https://code.google.com/p/v8/source/detail?r=234", 1557f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch },], 1558f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch } 1559f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch self.assertEquals(expected_json, json.loads(FileToText(json_output))) 1560f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 1561f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch def testMergeToBranch(self): 1562f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch TEST_CONFIG["ALREADY_MERGING_SENTINEL_FILE"] = self.MakeEmptyTempFile() 1563f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch TextToFile("", os.path.join(TEST_CONFIG["DEFAULT_CWD"], ".git")) 1564f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch self.WriteFakeVersionFile(build=5) 1565f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch os.environ["EDITOR"] = "vi" 1566f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch extra_patch = self.MakeEmptyTempFile() 1567f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 1568f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 1569f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch def VerifyPatch(patch): 1570f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch return lambda: self.assertEquals(patch, 1571f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch FileToText(TEST_CONFIG["TEMPORARY_PATCH_FILE"])) 1572f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 1573f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch info_msg = ("NOTE: This script will no longer automatically " 1574f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "update include/v8-version.h " 1575f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "and create a tag. This is done automatically by the autotag bot. " 1576f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "Please call the merge_to_branch.py with --help for more information.") 1577f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 1578f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch msg = """Merged: Squashed multiple commits. 1579f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 1580f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen MurdochMerged: Title4 1581f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen MurdochRevision: ab12345 1582f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 1583f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen MurdochMerged: Title2 1584f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen MurdochRevision: ab23456 1585f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 1586f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen MurdochMerged: Title3 1587f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen MurdochRevision: ab34567 1588f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 1589f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen MurdochMerged: Title1 1590f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen MurdochRevision: ab45678 1591f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 1592f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen MurdochMerged: Revert \"Something\" 1593f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen MurdochRevision: ab56789 1594f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 1595f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen MurdochBUG=123,234,345,456,567,v8:123 1596f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen MurdochLOG=N 1597f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen MurdochNOTRY=true 1598f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen MurdochNOPRESUBMIT=true 1599f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen MurdochNOTREECHECKS=true 1600f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch""" 1601f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 1602f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch def VerifyLand(): 1603f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch commit = FileToText(TEST_CONFIG["COMMITMSG_FILE"]) 1604f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch self.assertEquals(msg, commit) 1605f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 1606f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch self.Expect([ 1607f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git status -s -uno", ""), 1608f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git checkout -f origin/master", ""), 1609f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git fetch", ""), 1610f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git branch", " branch1\n* branch2\n"), 1611f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git new-branch %s --upstream refs/remotes/origin/candidates" % 1612f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch TEST_CONFIG["BRANCHNAME"], ""), 1613f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd(("git log --format=%H --grep=\"^[Pp]ort ab12345\" " 1614f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "--reverse origin/master"), 1615f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "ab45678\nab23456"), 1616f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git log -1 --format=%s ab45678", "Title1"), 1617f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git log -1 --format=%s ab23456", "Title2"), 1618f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd(("git log --format=%H --grep=\"^[Pp]ort ab23456\" " 1619f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "--reverse origin/master"), 1620f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch ""), 1621f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd(("git log --format=%H --grep=\"^[Pp]ort ab34567\" " 1622f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "--reverse origin/master"), 1623f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "ab56789"), 1624f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git log -1 --format=%s ab56789", "Title3"), 1625f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch RL("Y"), # Automatically add corresponding ports (ab34567, ab56789)? 1626f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch # Simulate git being down which stops the script. 1627f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git log -1 --format=%s ab12345", None), 1628f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch # Restart script in the failing step. 1629f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git log -1 --format=%s ab12345", "Title4"), 1630f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git log -1 --format=%s ab23456", "Title2"), 1631f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git log -1 --format=%s ab34567", "Title3"), 1632f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git log -1 --format=%s ab45678", "Title1"), 1633f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git log -1 --format=%s ab56789", "Revert \"Something\""), 1634f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git log -1 ab12345", "Title4\nBUG=123\nBUG=234"), 1635f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git log -1 ab23456", "Title2\n BUG = v8:123,345"), 1636f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git log -1 ab34567", "Title3\nLOG=n\nBUG=567, 456"), 1637f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git log -1 ab45678", "Title1\nBUG="), 1638f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git log -1 ab56789", "Revert \"Something\"\nBUG=none"), 1639f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git log -1 -p ab12345", "patch4"), 1640f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd(("git apply --index --reject \"%s\"" % 1641f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch TEST_CONFIG["TEMPORARY_PATCH_FILE"]), 1642f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "", cb=VerifyPatch("patch4")), 1643f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git log -1 -p ab23456", "patch2"), 1644f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd(("git apply --index --reject \"%s\"" % 1645f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch TEST_CONFIG["TEMPORARY_PATCH_FILE"]), 1646f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "", cb=VerifyPatch("patch2")), 1647f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git log -1 -p ab34567", "patch3"), 1648f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd(("git apply --index --reject \"%s\"" % 1649f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch TEST_CONFIG["TEMPORARY_PATCH_FILE"]), 1650f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "", cb=VerifyPatch("patch3")), 1651f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git log -1 -p ab45678", "patch1"), 1652f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd(("git apply --index --reject \"%s\"" % 1653f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch TEST_CONFIG["TEMPORARY_PATCH_FILE"]), 1654f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "", cb=VerifyPatch("patch1")), 1655f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git log -1 -p ab56789", "patch5\n"), 1656f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd(("git apply --index --reject \"%s\"" % 1657f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch TEST_CONFIG["TEMPORARY_PATCH_FILE"]), 1658f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "", cb=VerifyPatch("patch5\n")), 1659f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git apply --index --reject \"%s\"" % extra_patch, ""), 1660f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git commit -aF \"%s\"" % TEST_CONFIG["COMMITMSG_FILE"], ""), 1661f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch RL("reviewer@chromium.org"), # V8 reviewer. 1662f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git cl upload --send-mail -r \"reviewer@chromium.org\" " 1663f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "--bypass-hooks --cc \"ulan@chromium.org\"", ""), 1664f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git cl comments -a \"%s\"" % info_msg, ""), 1665f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git checkout -f %s" % TEST_CONFIG["BRANCHNAME"], ""), 1666f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch RL("LGTM"), # Enter LGTM for V8 CL. 1667f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git cl presubmit", "Presubmit successfull\n"), 1668f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git cl land -f --bypass-hooks", "Closing issue\n", 1669f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch cb=VerifyLand), 1670f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git checkout -f origin/master", ""), 1671f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Cmd("git branch -D %s" % TEST_CONFIG["BRANCHNAME"], ""), 1672f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch ]) 1673f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 1674f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch # ab12345 and ab34567 are patches. ab23456 (included) and ab45678 are the 1675f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch # MIPS ports of ab12345. ab56789 is the MIPS port of ab34567. 1676f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch args = ["-f", "-p", extra_patch, "--branch", "candidates", 1677f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch "ab12345", "ab23456", "ab34567"] 1678f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 1679f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch # The first run of the script stops because of git being down. 1680f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch self.assertRaises(GitFailedException, 1681b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch lambda: MergeToBranch(TEST_CONFIG, self).Run(args)) 1682b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 1683b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch # Test that state recovery after restarting the script works. 1684958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier args += ["-s", "4"] 1685b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch MergeToBranch(TEST_CONFIG, self).Run(args) 1686b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 1687b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch def testReleases(self): 1688014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch c_hash1_commit_log = """Update V8 to Version 4.2.71. 1689014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 1690014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben MurdochCr-Commit-Position: refs/heads/master@{#5678} 1691014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch""" 1692b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch c_hash2_commit_log = """Revert something. 1693b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 1694b8a8cc1952d61a2f3a2568848933943a543b5d3eBen MurdochBUG=12345 1695b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 1696b8a8cc1952d61a2f3a2568848933943a543b5d3eBen MurdochReason: 1697b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch> Some reason. 1698b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch> Cr-Commit-Position: refs/heads/master@{#12345} 1699b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch> git-svn-id: svn://svn.chromium.org/chrome/trunk/src@12345 003-1c4 1700b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 1701b8a8cc1952d61a2f3a2568848933943a543b5d3eBen MurdochReview URL: https://codereview.chromium.org/12345 1702b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 1703b8a8cc1952d61a2f3a2568848933943a543b5d3eBen MurdochCr-Commit-Position: refs/heads/master@{#4567} 1704b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochgit-svn-id: svn://svn.chromium.org/chrome/trunk/src@4567 0039-1c4b 1705b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 1706b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch""" 1707b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch c_hash3_commit_log = """Simple. 1708b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 1709b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochgit-svn-id: svn://svn.chromium.org/chrome/trunk/src@3456 0039-1c4b 1710b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 1711b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch""" 1712958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier c_hash_234_commit_log = """Version 3.3.1.1 (cherry-pick). 1713958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier 1714958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily BernierMerged abc12. 1715958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier 1716958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily BernierReview URL: fake.com 1717958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier 1718958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily BernierCr-Commit-Position: refs/heads/candidates@{#234} 1719958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier""" 1720958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier c_hash_123_commit_log = """Version 3.3.1.0 1721958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier 1722958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Berniergit-svn-id: googlecode@123 0039-1c4b 1723958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier""" 1724958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier c_hash_345_commit_log = """Version 3.4.0. 1725958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier 1726958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily BernierCr-Commit-Position: refs/heads/candidates@{#345} 1727958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier""" 1728014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch c_hash_456_commit_log = """Version 4.2.71. 1729014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 1730014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben MurdochCr-Commit-Position: refs/heads/4.2.71@{#1} 1731014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch""" 1732014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch c_deps = "Line\n \"v8_revision\": \"%s\",\n line\n" 1733958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier 1734b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch json_output = self.MakeEmptyTempFile() 1735b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch csv_output = self.MakeEmptyTempFile() 1736b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.WriteFakeVersionFile() 1737b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 1738b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch TEST_CONFIG["CHROMIUM"] = self.MakeEmptyTempDirectory() 1739b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch chrome_dir = TEST_CONFIG["CHROMIUM"] 1740b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch chrome_v8_dir = os.path.join(chrome_dir, "v8") 1741b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch os.makedirs(chrome_v8_dir) 1742b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 1743014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch def ResetVersion(major, minor, build, patch=0): 1744014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch return lambda: self.WriteFakeVersionFile(major=major, 1745014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch minor=minor, 1746b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch build=build, 1747b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch patch=patch) 1748b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 1749b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.Expect([ 1750b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch Cmd("git status -s -uno", ""), 1751014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git checkout -f origin/master", ""), 1752958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Cmd("git fetch", ""), 1753b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch Cmd("git branch", " branch1\n* branch2\n"), 1754958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Cmd("git new-branch %s" % TEST_CONFIG["BRANCHNAME"], ""), 1755014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git fetch origin +refs/tags/*:refs/tags/*", ""), 1756014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git rev-list --max-age=395200 --tags", 1757014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "bad_tag\nhash_234\nhash_123\nhash_345\nhash_456\n"), 1758014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git describe --tags bad_tag", "3.23.42-1-deadbeef"), 1759014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git describe --tags hash_234", "3.3.1.1"), 1760014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git describe --tags hash_123", "3.21.2"), 1761014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git describe --tags hash_345", "3.22.3"), 1762014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git describe --tags hash_456", "4.2.71"), 1763958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Cmd("git diff --name-only hash_234 hash_234^", VERSION_FILE), 1764958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Cmd("git checkout -f hash_234 -- %s" % VERSION_FILE, "", 1765014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch cb=ResetVersion(3, 3, 1, 1)), 1766014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git branch -r --contains hash_234", " branch-heads/3.3\n"), 1767958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Cmd("git log -1 --format=%B hash_234", c_hash_234_commit_log), 1768958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Cmd("git log -1 --format=%s hash_234", ""), 1769958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Cmd("git log -1 --format=%B hash_234", c_hash_234_commit_log), 1770958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Cmd("git log -1 --format=%ci hash_234", "18:15"), 1771b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch Cmd("git checkout -f HEAD -- %s" % VERSION_FILE, "", 1772014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch cb=ResetVersion(3, 22, 5)), 1773958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Cmd("git diff --name-only hash_123 hash_123^", VERSION_FILE), 1774958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Cmd("git checkout -f hash_123 -- %s" % VERSION_FILE, "", 1775014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch cb=ResetVersion(3, 21, 2)), 1776014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git branch -r --contains hash_123", " branch-heads/3.21\n"), 1777958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Cmd("git log -1 --format=%B hash_123", c_hash_123_commit_log), 1778958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Cmd("git log -1 --format=%s hash_123", ""), 1779958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Cmd("git log -1 --format=%B hash_123", c_hash_123_commit_log), 1780958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Cmd("git log -1 --format=%ci hash_123", "03:15"), 1781b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch Cmd("git checkout -f HEAD -- %s" % VERSION_FILE, "", 1782014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch cb=ResetVersion(3, 22, 5)), 1783958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Cmd("git diff --name-only hash_345 hash_345^", VERSION_FILE), 1784958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Cmd("git checkout -f hash_345 -- %s" % VERSION_FILE, "", 1785014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch cb=ResetVersion(3, 22, 3)), 1786014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git branch -r --contains hash_345", " origin/candidates\n"), 1787958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Cmd("git log -1 --format=%B hash_345", c_hash_345_commit_log), 1788958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Cmd("git log -1 --format=%s hash_345", ""), 1789958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Cmd("git log -1 --format=%B hash_345", c_hash_345_commit_log), 1790958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Cmd("git log -1 --format=%ci hash_345", ""), 1791b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch Cmd("git checkout -f HEAD -- %s" % VERSION_FILE, "", 1792014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch cb=ResetVersion(3, 22, 5)), 1793014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git diff --name-only hash_456 hash_456^", VERSION_FILE), 1794014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git checkout -f hash_456 -- %s" % VERSION_FILE, "", 1795014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch cb=ResetVersion(4, 2, 71)), 1796014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git branch -r --contains hash_456", " origin/4.2.71\n"), 1797014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git log -1 --format=%B hash_456", c_hash_456_commit_log), 1798014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git log -1 --format=%H 4.2.71", "hash_456"), 1799014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git log -1 --format=%s hash_456", "Version 4.2.71"), 1800014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git log -1 --format=%H hash_456^", "master_456"), 1801014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git log -1 --format=%B master_456", 1802014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "Cr-Commit-Position: refs/heads/master@{#456}"), 1803014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git log -1 --format=%B hash_456", c_hash_456_commit_log), 1804014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git log -1 --format=%ci hash_456", "02:15"), 1805014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git checkout -f HEAD -- %s" % VERSION_FILE, "", 1806014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch cb=ResetVersion(3, 22, 5)), 1807014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git fetch origin +refs/heads/*:refs/remotes/origin/* " 1808014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "+refs/branch-heads/*:refs/remotes/branch-heads/*", "", 1809958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier cwd=chrome_dir), 1810b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch Cmd("git fetch origin", "", cwd=chrome_v8_dir), 1811014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git log --format=%H --grep=\"V8\" origin/master -- DEPS", 1812014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "c_hash1\nc_hash2\nc_hash3\n", 1813b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch cwd=chrome_dir), 1814014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git show c_hash1:DEPS", c_deps % "hash_456", cwd=chrome_dir), 1815014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git log -1 --format=%B c_hash1", c_hash1_commit_log, 1816b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch cwd=chrome_dir), 1817014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git show c_hash2:DEPS", c_deps % "hash_345", cwd=chrome_dir), 1818b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch Cmd("git log -1 --format=%B c_hash2", c_hash2_commit_log, 1819b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch cwd=chrome_dir), 1820014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git show c_hash3:DEPS", c_deps % "deadbeef", cwd=chrome_dir), 1821b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch Cmd("git log -1 --format=%B c_hash3", c_hash3_commit_log, 1822b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch cwd=chrome_dir), 1823b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch Cmd("git branch -r", " weird/123\n branch-heads/7\n", cwd=chrome_dir), 1824014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git show refs/branch-heads/7:DEPS", c_deps % "hash_345", 1825b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch cwd=chrome_dir), 1826014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch URL("http://omahaproxy.appspot.com/all.json", """[{ 1827014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "os": "win", 1828014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "versions": [{ 1829014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "version": "2.2.2.2", 1830014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "v8_version": "22.2.2.2", 1831014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "current_reldate": "04/09/15", 1832014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "os": "win", 1833014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "channel": "canary", 1834014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "previous_version": "1.1.1.0" 1835014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch }] 1836014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch }]"""), 1837014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch URL("http://omahaproxy.appspot.com/v8.json?version=1.1.1.0", """{ 1838014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "chromium_version": "1.1.1.0", 1839014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "v8_version": "11.1.1.0" 1840014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch }"""), 1841014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git rev-list -1 11.1.1", "v8_previous_version_hash"), 1842014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git rev-list -1 22.2.2.2", "v8_version_hash"), 1843014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git checkout -f origin/master", ""), 1844014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Cmd("git branch -D %s" % TEST_CONFIG["BRANCHNAME"], "") 1845b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch ]) 1846b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 1847b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch args = ["-c", TEST_CONFIG["CHROMIUM"], 1848b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "--json", json_output, 1849b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "--csv", csv_output, 1850b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "--max-releases", "1"] 1851b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch Releases(TEST_CONFIG, self).Run(args) 1852b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 1853b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch # Check expected output. 1854014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch csv = ("4.2.71,4.2.71,1,5678,\r\n" 1855014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "3.22.3,candidates,345,4567:5677,\r\n" 1856b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "3.21.2,3.21,123,,\r\n" 1857958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier "3.3.1.1,3.3,234,,abc12\r\n") 1858b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.assertEquals(csv, FileToText(csv_output)) 1859b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 1860014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch expected_json = {"chrome_releases":{ 1861014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "canaries": [ 1862014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch { 1863014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "chrome_version": "2.2.2.2", 1864014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "os": "win", 1865014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "release_date": "04/09/15", 1866014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "v8_version": "22.2.2.2", 1867014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "v8_version_hash": "v8_version_hash", 1868014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "v8_previous_version": "11.1.1.0", 1869014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "v8_previous_version_hash": "v8_previous_version_hash" 1870014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch }]}, 1871014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "releases":[ 1872014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch { 1873014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "revision": "1", 1874014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "revision_git": "hash_456", 1875014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "master_position": "456", 1876014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "master_hash": "master_456", 1877014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "patches_merged": "", 1878014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "version": "4.2.71", 1879014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "chromium_revision": "5678", 1880014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "branch": "4.2.71", 1881014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "review_link": "", 1882014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "date": "02:15", 1883014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "chromium_branch": "", 1884014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch # FIXME(machenbach): Fix revisions link for git. 1885014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "revision_link": "https://code.google.com/p/v8/source/detail?r=1", 1886014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch }, 1887958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier { 1888958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier "revision": "345", 1889958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier "revision_git": "hash_345", 1890014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "master_position": "", 1891014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "master_hash": "", 1892958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier "patches_merged": "", 1893958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier "version": "3.22.3", 1894014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "chromium_revision": "4567:5677", 1895958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier "branch": "candidates", 1896958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier "review_link": "", 1897958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier "date": "", 1898958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier "chromium_branch": "7", 1899958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier "revision_link": "https://code.google.com/p/v8/source/detail?r=345", 1900958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier }, 1901958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier { 1902958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier "revision": "123", 1903958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier "revision_git": "hash_123", 1904958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier "patches_merged": "", 1905014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "master_position": "", 1906014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "master_hash": "", 1907958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier "version": "3.21.2", 1908958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier "chromium_revision": "", 1909958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier "branch": "3.21", 1910958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier "review_link": "", 1911958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier "date": "03:15", 1912958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier "chromium_branch": "", 1913958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier "revision_link": "https://code.google.com/p/v8/source/detail?r=123", 1914958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier }, 1915958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier { 1916958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier "revision": "234", 1917958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier "revision_git": "hash_234", 1918958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier "patches_merged": "abc12", 1919014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "master_position": "", 1920014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch "master_hash": "", 1921958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier "version": "3.3.1.1", 1922958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier "chromium_revision": "", 1923958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier "branch": "3.3", 1924958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier "review_link": "fake.com", 1925958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier "date": "18:15", 1926958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier "chromium_branch": "", 1927958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier "revision_link": "https://code.google.com/p/v8/source/detail?r=234", 1928014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch },], 1929014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch } 1930b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.assertEquals(expected_json, json.loads(FileToText(json_output))) 1931b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 1932b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 1933f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 1934f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 1935b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochclass SystemTest(unittest.TestCase): 1936b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch def testReload(self): 1937958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier options = ScriptsBase( 1938958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier TEST_CONFIG, DEFAULT_SIDE_EFFECT_HANDLER, {}).MakeOptions([]) 1939b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch step = MakeStep(step_class=PrepareChangeLog, number=0, state={}, config={}, 1940958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier options=options, 1941b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch side_effect_handler=DEFAULT_SIDE_EFFECT_HANDLER) 1942b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch body = step.Reload( 1943b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch"""------------------------------------------------------------------------ 1944b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochr17997 | machenbach@chromium.org | 2013-11-22 11:04:04 +0100 (...) | 6 lines 1945b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 1946b8a8cc1952d61a2f3a2568848933943a543b5d3eBen MurdochPrepare push to trunk. Now working on version 3.23.11. 1947b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 1948b8a8cc1952d61a2f3a2568848933943a543b5d3eBen MurdochR=danno@chromium.org 1949b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 1950b8a8cc1952d61a2f3a2568848933943a543b5d3eBen MurdochReview URL: https://codereview.chromium.org/83173002 1951b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 1952b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch------------------------------------------------------------------------""") 1953b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch self.assertEquals( 1954b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch"""Prepare push to trunk. Now working on version 3.23.11. 1955b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 1956b8a8cc1952d61a2f3a2568848933943a543b5d3eBen MurdochR=danno@chromium.org 1957b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 1958b8a8cc1952d61a2f3a2568848933943a543b5d3eBen MurdochCommitted: https://code.google.com/p/v8/source/detail?r=17997""", body) 1959