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

Unified Diff: tools/push-to-trunk/test_scripts.py

Issue 112863002: Merge bleeding_edge 18021:18297 (Closed) Base URL: https://v8.googlecode.com/svn/branches/experimental/parser
Patch Set: Created 7 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « tools/push-to-trunk/push_to_trunk.py ('k') | tools/run-tests.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/push-to-trunk/test_scripts.py
diff --git a/tools/push-to-trunk/test_scripts.py b/tools/push-to-trunk/test_scripts.py
index 5e2340e9173a84016e50da20eaca40e3cd746808..ce90192dc19ac5fd572e6b826b9c0c4dae59f70e 100644
--- a/tools/push-to-trunk/test_scripts.py
+++ b/tools/push-to-trunk/test_scripts.py
@@ -53,6 +53,20 @@ TEST_CONFIG = {
}
+def MakeOptions(s=0, l=None, f=False, m=True, r=None, c=None):
+ """Convenience wrapper."""
+ class Options(object):
+ pass
+ options = Options()
+ options.s = s
+ options.l = l
+ options.f = f
+ options.m = m
+ options.r = r
+ options.c = c
+ return options
+
+
class ToplevelTest(unittest.TestCase):
def testMakeComment(self):
self.assertEquals("# Line 1\n# Line 2\n#",
@@ -71,14 +85,13 @@ class ToplevelTest(unittest.TestCase):
["Title text 1",
"Title text 1\n\nBUG=\n",
"author1@chromium.org"],
- ["Title text 2",
+ ["Title text 2.",
"Title text 2\n\nBUG=1234\n",
"author2@chromium.org"],
]
- self.assertEquals(" Title text 1\n"
+ self.assertEquals(" Title text 1.\n"
" (author1@chromium.org)\n\n"
- " Title text 2\n"
- " (Chromium issue 1234)\n"
+ " Title text 2 (Chromium issue 1234).\n"
" (author2@chromium.org)\n\n",
MakeChangeLogBody(commits))
@@ -87,7 +100,7 @@ class ToplevelTest(unittest.TestCase):
def testMakeChangeLogBodyAutoFormat(self):
commits = [
- ["Title text 1",
+ ["Title text 1!",
"Title text 1\nLOG=y\nBUG=\n",
"author1@chromium.org"],
["Title text 2",
@@ -100,11 +113,21 @@ class ToplevelTest(unittest.TestCase):
"Title text 4\n\nBUG=1234\nLOG=\n",
"author4@chromium.org"],
]
- self.assertEquals(" Title text 1\n\n"
- " Title text 3\n"
- " (Chromium issue 1234)\n\n",
+ self.assertEquals(" Title text 1.\n\n"
+ " Title text 3 (Chromium issue 1234).\n\n",
MakeChangeLogBody(commits, True))
+ def testRegressWrongLogEntryOnTrue(self):
+ body = """
+Check elimination: Learn from if(CompareMap(x)) on true branch.
+
+BUG=
+R=verwaest@chromium.org
+
+Committed: https://code.google.com/p/v8/source/detail?r=18210
+"""
+ self.assertEquals("", MakeChangeLogBody([["title", body, "author"]], True))
+
def testMakeChangeLogBugReferenceEmpty(self):
self.assertEquals("", MakeChangeLogBugReference(""))
self.assertEquals("", MakeChangeLogBugReference("LOG="))
@@ -112,13 +135,13 @@ class ToplevelTest(unittest.TestCase):
self.assertEquals("", MakeChangeLogBugReference("BUG=none\t"))
def testMakeChangeLogBugReferenceSimple(self):
- self.assertEquals(" (issue 987654)\n",
+ self.assertEquals("(issue 987654)",
MakeChangeLogBugReference("BUG = v8:987654"))
- self.assertEquals(" (Chromium issue 987654)\n",
+ self.assertEquals("(Chromium issue 987654)",
MakeChangeLogBugReference("BUG=987654 "))
def testMakeChangeLogBugReferenceFromBody(self):
- self.assertEquals(" (Chromium issue 1234567)\n",
+ self.assertEquals("(Chromium issue 1234567)",
MakeChangeLogBugReference("Title\n\nTBR=\nBUG=\n"
" BUG=\tchromium:1234567\t\n"
"R=somebody\n"))
@@ -126,54 +149,56 @@ class ToplevelTest(unittest.TestCase):
def testMakeChangeLogBugReferenceMultiple(self):
# All issues should be sorted and grouped. Multiple references to the same
# issue should be filtered.
- self.assertEquals(" (issues 123, 234, Chromium issue 345)\n",
+ self.assertEquals("(issues 123, 234, Chromium issue 345)",
MakeChangeLogBugReference("Title\n\n"
"BUG=v8:234\n"
" BUG\t= 345, \tv8:234,\n"
"BUG=v8:123\n"
"R=somebody\n"))
- self.assertEquals(" (Chromium issues 123, 234)\n",
+ self.assertEquals("(Chromium issues 123, 234)",
MakeChangeLogBugReference("Title\n\n"
"BUG=234,,chromium:123 \n"
"R=somebody\n"))
- self.assertEquals(" (Chromium issues 123, 234)\n",
+ self.assertEquals("(Chromium issues 123, 234)",
MakeChangeLogBugReference("Title\n\n"
"BUG=chromium:234, , 123\n"
"R=somebody\n"))
- self.assertEquals(" (issues 345, 456)\n",
+ self.assertEquals("(issues 345, 456)",
MakeChangeLogBugReference("Title\n\n"
"\t\tBUG=v8:345,v8:456\n"
"R=somebody\n"))
- self.assertEquals(" (issue 123, Chromium issues 345, 456)\n",
+ self.assertEquals("(issue 123, Chromium issues 345, 456)",
MakeChangeLogBugReference("Title\n\n"
"BUG=chromium:456\n"
"BUG = none\n"
"R=somebody\n"
"BUG=456,v8:123, 345"))
+ # TODO(machenbach): These test don't make much sense when the formatting is
+ # done later.
def testMakeChangeLogBugReferenceLong(self):
# -----------------00--------10--------20--------30--------
- self.assertEquals(" (issues 234, 1234567890, 1234567"
- "8901234567890, Chromium issues 12345678,\n"
- " 123456789)\n",
+ self.assertEquals("(issues 234, 1234567890, 1234567"
+ "8901234567890, Chromium issues 12345678,"
+ " 123456789)",
MakeChangeLogBugReference("BUG=v8:234\n"
"BUG=v8:1234567890\n"
"BUG=v8:12345678901234567890\n"
"BUG=123456789\n"
"BUG=12345678\n"))
# -----------------00--------10--------20--------30--------
- self.assertEquals(" (issues 234, 1234567890, 1234567"
- "8901234567890, Chromium issues\n"
- " 123456789, 1234567890)\n",
+ self.assertEquals("(issues 234, 1234567890, 1234567"
+ "8901234567890, Chromium issues"
+ " 123456789, 1234567890)",
MakeChangeLogBugReference("BUG=v8:234\n"
"BUG=v8:12345678901234567890\n"
"BUG=v8:1234567890\n"
"BUG=123456789\n"
"BUG=1234567890\n"))
# -----------------00--------10--------20--------30--------
- self.assertEquals(" (Chromium issues 234, 1234567890"
- ", 12345678901234567,\n"
- " 1234567890123456789)\n",
+ self.assertEquals("(Chromium issues 234, 1234567890"
+ ", 12345678901234567, "
+ "1234567890123456789)",
MakeChangeLogBugReference("BUG=234\n"
"BUG=12345678901234567\n"
"BUG=1234567890123456789\n"
@@ -194,7 +219,7 @@ class SimpleMock(object):
try:
expected_call = self._recipe[self._index]
except IndexError:
- raise Exception("Calling %s %s" % (name, " ".join(args)))
+ raise Exception("Calling %s %s" % (self._name, " ".join(args)))
# Pack expectations without arguments into a list.
if not isinstance(expected_call, list):
@@ -216,7 +241,12 @@ class SimpleMock(object):
# callback for checking the context at the time of the call.
if len(expected_call) == len(args) + 2:
expected_call[len(args) + 1]()
- return expected_call[len(args)]
+ return_value = expected_call[len(args)]
+
+ # If the return value is an exception, raise it instead of returning.
+ if isinstance(return_value, Exception):
+ raise return_value
+ return return_value
def AssertFinished(self):
if self._index < len(self._recipe) -1:
@@ -244,12 +274,15 @@ class ScriptTest(unittest.TestCase):
f.write("#define IS_CANDIDATE_VERSION 0\n")
return name
- def MakeStep(self, step_class=Step, state=None):
+ def MakeStep(self, step_class=Step, state=None, options=None):
"""Convenience wrapper."""
+ options = options or MakeOptions()
return MakeStep(step_class=step_class, number=0, state=state,
- config=TEST_CONFIG, options=None, side_effect_handler=self)
+ config=TEST_CONFIG, options=options,
+ side_effect_handler=self)
def GitMock(self, cmd, args="", pipe=True):
+ print "%s %s" % (cmd, args)
return self._git_mock.Call(args)
def LogMock(self, cmd, args=""):
@@ -269,6 +302,12 @@ class ScriptTest(unittest.TestCase):
def ReadURL(self, url):
return self._url_mock.Call(url)
+ def Sleep(self, seconds):
+ pass
+
+ def GetDate(self):
+ return "1999-07-31"
+
def ExpectGit(self, *args):
"""Convenience wrapper."""
self._git_mock.Expect(*args)
@@ -397,16 +436,27 @@ class ScriptTest(unittest.TestCase):
TEST_CONFIG[CHANGELOG_ENTRY_FILE] = self.MakeEmptyTempFile()
self.ExpectGit([
- ["log 1234..HEAD --format=%H", "rev1\nrev2\nrev3"],
+ ["log 1234..HEAD --format=%H", "rev1\nrev2\nrev3\nrev4"],
["log -1 rev1 --format=\"%s\"", "Title text 1"],
["log -1 rev1 --format=\"%B\"", "Title\n\nBUG=\nLOG=y\n"],
["log -1 rev1 --format=\"%an\"", "author1@chromium.org"],
- ["log -1 rev2 --format=\"%s\"", "Title text 2"],
+ ["log -1 rev2 --format=\"%s\"", "Title text 2."],
["log -1 rev2 --format=\"%B\"", "Title\n\nBUG=123\nLOG= \n"],
["log -1 rev2 --format=\"%an\"", "author2@chromium.org"],
["log -1 rev3 --format=\"%s\"", "Title text 3"],
["log -1 rev3 --format=\"%B\"", "Title\n\nBUG=321\nLOG=true\n"],
["log -1 rev3 --format=\"%an\"", "author3@chromium.org"],
+ ["log -1 rev4 --format=\"%s\"", "Title text 4"],
+ ["log -1 rev4 --format=\"%B\"",
+ ("Title\n\nBUG=456\nLOG=Y\n\n"
+ "Review URL: https://codereview.chromium.org/9876543210\n")],
+ ["log -1 rev4 --format=\"%an\"", "author4@chromium.org"],
+ ])
+
+ # The cl for rev4 on rietveld has an updated LOG flag.
+ self.ExpectReadURL([
+ ["https://codereview.chromium.org/9876543210/description",
+ "Title\n\nBUG=456\nLOG=N\n\n"],
])
self.MakeStep().Persist("last_push", "1234")
@@ -414,35 +464,33 @@ class ScriptTest(unittest.TestCase):
actual_cl = FileToText(TEST_CONFIG[CHANGELOG_ENTRY_FILE])
- # TODO(machenbach): Mock out call to date() in order to make a fixed
- # comparison here instead of a regexp match.
- expected_cl = """\\d+\\-\\d+\\-\\d+: Version 3\\.22\\.5
+ expected_cl = """1999-07-31: Version 3.22.5
- Title text 1
+ Title text 1.
- Title text 3
- \\(Chromium issue 321\\)
+ Title text 3 (Chromium issue 321).
- Performance and stability improvements on all platforms\\.
+ Performance and stability improvements on all platforms.
#
-# The change log above is auto-generated\\. Please review if all relevant
-# commit messages from the list below are included\\.
-# All lines starting with # will be stripped\\.
+# The change log above is auto-generated. Please review if all relevant
+# commit messages from the list below are included.
+# All lines starting with # will be stripped.
#
-# Title text 1
-# \\(author1@chromium\\.org\\)
+# Title text 1.
+# (author1@chromium.org)
#
-# Title text 2
-# \\(Chromium issue 123\\)
-# \\(author2@chromium\\.org\\)
+# Title text 2 (Chromium issue 123).
+# (author2@chromium.org)
#
-# Title text 3
-# \\(Chromium issue 321\\)
-# \\(author3@chromium\\.org\\)
+# Title text 3 (Chromium issue 321).
+# (author3@chromium.org)
+#
+# Title text 4 (Chromium issue 456).
+# (author4@chromium.org)
#
#"""
- self.assertTrue(re.match(expected_cl, actual_cl))
+ self.assertEquals(expected_cl, actual_cl)
self.assertEquals("3", self.MakeStep().Restore("major"))
self.assertEquals("22", self.MakeStep().Restore("minor"))
self.assertEquals("5", self.MakeStep().Restore("build"))
@@ -461,7 +509,7 @@ class ScriptTest(unittest.TestCase):
self.MakeStep(EditChangeLog).Run()
- self.assertEquals(" New\n Lines\n\n\n Original CL",
+ self.assertEquals("New\n Lines\n\n\n Original CL",
FileToText(TEST_CONFIG[CHANGELOG_FILE]))
def testIncrementVersion(self):
@@ -524,7 +572,7 @@ class ScriptTest(unittest.TestCase):
patch = FileToText(TEST_CONFIG[ PATCH_FILE])
self.assertTrue(re.search(r"patch content", patch))
- def _PushToTrunk(self, force=False):
+ def _PushToTrunk(self, force=False, manual=False):
TEST_CONFIG[DOT_GIT_LOCATION] = self.MakeEmptyTempFile()
TEST_CONFIG[VERSION_FILE] = self.MakeTempVersionFile()
TEST_CONFIG[CHANGELOG_ENTRY_FILE] = self.MakeEmptyTempFile()
@@ -539,8 +587,7 @@ class ScriptTest(unittest.TestCase):
def CheckPreparePush():
cl = FileToText(TEST_CONFIG[CHANGELOG_FILE])
self.assertTrue(re.search(r"Version 3.22.5", cl))
- self.assertTrue(re.search(r" Log text 1", cl))
- self.assertTrue(re.search(r" \(issue 321\)", cl))
+ self.assertTrue(re.search(r" Log text 1 \(issue 321\).", cl))
self.assertFalse(re.search(r" \(author1@chromium\.org\)", cl))
# Make sure all comments got stripped.
@@ -555,7 +602,7 @@ class ScriptTest(unittest.TestCase):
def CheckSVNCommit():
commit = FileToText(TEST_CONFIG[COMMITMSG_FILE])
self.assertTrue(re.search(r"Version 3.22.5", commit))
- self.assertTrue(re.search(r"Log text 1. \(issue 321\)", commit))
+ self.assertTrue(re.search(r"Log text 1 \(issue 321\).", commit))
version = FileToText(TEST_CONFIG[VERSION_FILE])
self.assertTrue(re.search(r"#define MINOR_VERSION\s+22", version))
self.assertTrue(re.search(r"#define BUILD_NUMBER\s+5", version))
@@ -563,7 +610,8 @@ class ScriptTest(unittest.TestCase):
self.assertTrue(re.search(r"#define PATCH_LEVEL\s+0", version))
self.assertTrue(re.search(r"#define IS_CANDIDATE_VERSION\s+0", version))
- force_flag = " -f" if force else ""
+ force_flag = " -f" if not manual else ""
+ review_suffix = "\n\nTBR=reviewer@chromium.org" if not manual else ""
self.ExpectGit([
["status -s -uno", ""],
["status -s -b -uno", "## some_branch\n"],
@@ -580,7 +628,7 @@ class ScriptTest(unittest.TestCase):
["log -1 rev1 --format=\"%B\"", "Text\nLOG=YES\nBUG=v8:321\nText\n"],
["log -1 rev1 --format=\"%an\"", "author1@chromium.org\n"],
[("commit -a -m \"Prepare push to trunk. "
- "Now working on version 3.22.6.\""),
+ "Now working on version 3.22.6.%s\"" % review_suffix),
" 2 files changed\n",
CheckPreparePush],
["cl upload -r \"reviewer@chromium.org\" --send-mail%s" % force_flag,
@@ -611,48 +659,51 @@ class ScriptTest(unittest.TestCase):
["branch -D %s" % TEST_CONFIG[BRANCHNAME], ""],
["branch -D %s" % TEST_CONFIG[TRUNKBRANCH], ""],
])
- self.ExpectReadline([
- "Y", # Confirm last push.
- "", # Open editor.
- "Y", # Increment build number.
- "reviewer@chromium.org", # V8 reviewer.
- "LGTX", # Enter LGTM for V8 CL (wrong).
- "LGTM", # Enter LGTM for V8 CL.
- "Y", # Sanity check.
- "reviewer@chromium.org", # Chromium reviewer.
- ])
- if force:
- # TODO(machenbach): The lgtm for the prepare push is just temporary.
- # There should be no user input in "force" mode.
+
+ # Expected keyboard input in manual mode:
+ if manual:
self.ExpectReadline([
+ "Y", # Confirm last push.
+ "", # Open editor.
+ "Y", # Increment build number.
+ "reviewer@chromium.org", # V8 reviewer.
+ "LGTX", # Enter LGTM for V8 CL (wrong).
"LGTM", # Enter LGTM for V8 CL.
+ "Y", # Sanity check.
+ "reviewer@chromium.org", # Chromium reviewer.
])
- class Options( object ):
- pass
+ # Expected keyboard input in semi-automatic mode:
+ if not manual and not force:
+ self.ExpectReadline([
+ "LGTM", # Enter LGTM for V8 CL.
+ ])
- options = Options()
- options.s = 0
- options.l = None
- options.f = force
- options.r = "reviewer@chromium.org" if force else None
- options.c = TEST_CONFIG[CHROMIUM]
+ # No keyboard input in forced mode:
+ if force:
+ self.ExpectReadline([])
+
+ options = MakeOptions(f=force, m=manual,
+ r="reviewer@chromium.org" if not manual else None,
+ c = TEST_CONFIG[CHROMIUM])
RunPushToTrunk(TEST_CONFIG, options, self)
deps = FileToText(TEST_CONFIG[DEPS_FILE])
self.assertTrue(re.search("\"v8_revision\": \"123456\"", deps))
cl = FileToText(TEST_CONFIG[CHANGELOG_FILE])
- self.assertTrue(re.search(r"\d\d\d\d\-\d+\-\d+: Version 3\.22\.5", cl))
- self.assertTrue(re.search(r" Log text 1", cl))
- self.assertTrue(re.search(r" \(issue 321\)", cl))
+ self.assertTrue(re.search(r"^\d\d\d\d\-\d+\-\d+: Version 3\.22\.5", cl))
+ self.assertTrue(re.search(r" Log text 1 \(issue 321\).", cl))
self.assertTrue(re.search(r"1999\-04\-05: Version 3\.22\.4", cl))
# Note: The version file is on build number 5 again in the end of this test
# since the git command that merges to the bleeding edge branch is mocked
# out.
- def testPushToTrunk(self):
+ def testPushToTrunkManual(self):
+ self._PushToTrunk(manual=True)
+
+ def testPushToTrunkSemiAutomatic(self):
self._PushToTrunk()
def testPushToTrunkForced(self):
@@ -661,10 +712,8 @@ class ScriptTest(unittest.TestCase):
def testAutoRoll(self):
TEST_CONFIG[DOT_GIT_LOCATION] = self.MakeEmptyTempFile()
- # TODO(machenbach): Get rid of the editor check in automatic mode.
- os.environ["EDITOR"] = "vi"
-
self.ExpectReadURL([
+ ["https://v8-status.appspot.com/lkgr", Exception("Network problem")],
["https://v8-status.appspot.com/lkgr", "100"],
])
@@ -675,14 +724,31 @@ class ScriptTest(unittest.TestCase):
["svn log -1 --oneline", "r101 | Text"],
])
- # TODO(machenbach): Make a convenience wrapper for this.
- class Options( object ):
- pass
-
- options = Options()
- options.s = 0
-
- auto_roll.RunAutoRoll(TEST_CONFIG, options, self)
+ auto_roll.RunAutoRoll(TEST_CONFIG, MakeOptions(m=False, f=True), self)
self.assertEquals("100", self.MakeStep().Restore("lkgr"))
self.assertEquals("101", self.MakeStep().Restore("latest"))
+
+
+class SystemTest(unittest.TestCase):
+ def testReload(self):
+ step = MakeStep(step_class=PrepareChangeLog, number=0, state={}, config={},
+ options=None,
+ side_effect_handler=DEFAULT_SIDE_EFFECT_HANDLER)
+ body = step.Reload(
+"""------------------------------------------------------------------------
+r17997 | machenbach@chromium.org | 2013-11-22 11:04:04 +0100 (...) | 6 lines
+
+Prepare push to trunk. Now working on version 3.23.11.
+
+R=danno@chromium.org
+
+Review URL: https://codereview.chromium.org/83173002
+
+------------------------------------------------------------------------""")
+ self.assertEquals(
+"""Prepare push to trunk. Now working on version 3.23.11.
+
+R=danno@chromium.org
+
+Committed: https://code.google.com/p/v8/source/detail?r=17997""", body)
« no previous file with comments | « tools/push-to-trunk/push_to_trunk.py ('k') | tools/run-tests.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698