Add more test coverage to push-to-trunk script.
Ensure that fetching commits works with huge change logs. The verbosity option will help debugging when dcommit hangs. BUG= R=jkummerow@chromium.org Review URL: https://codereview.chromium.org/70143003 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17645 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
parent
0f5a524bcf
commit
f27eca66b3
@ -67,6 +67,14 @@ def MSub(rexp, replacement, text):
|
||||
return re.sub(rexp, replacement, text, flags=re.MULTILINE)
|
||||
|
||||
|
||||
def GetLastChangeLogEntries(change_log_file):
|
||||
result = []
|
||||
for line in LinesInFile(change_log_file):
|
||||
if re.search(r"^\d{4}-\d{2}-\d{2}:", line) and result: break
|
||||
result.append(line)
|
||||
return "".join(result)
|
||||
|
||||
|
||||
# Some commands don't like the pipe, e.g. calling vi from within the script or
|
||||
# from subscripts like git cl upload.
|
||||
def Command(cmd, args="", prefix="", pipe=True):
|
||||
|
@ -221,18 +221,10 @@ class CommitRepository(Step):
|
||||
self.WaitForLGTM()
|
||||
# Re-read the ChangeLog entry (to pick up possible changes).
|
||||
# FIXME(machenbach): This was hanging once with a broken pipe.
|
||||
TextToFile(Command("cat %s | awk --posix '{\
|
||||
if ($0 ~ /^[0-9]{4}-[0-9]{2}-[0-9]{2}:/) {\
|
||||
if (in_firstblock == 1) {\
|
||||
exit 0;\
|
||||
} else {\
|
||||
in_firstblock = 1;\
|
||||
}\
|
||||
};\
|
||||
print $0;\
|
||||
}'" % self.Config(CHANGELOG_FILE)), self.Config(CHANGELOG_ENTRY_FILE))
|
||||
TextToFile(GetLastChangeLogEntries(self.Config(CHANGELOG_FILE)),
|
||||
self.Config(CHANGELOG_ENTRY_FILE))
|
||||
|
||||
if self.Git("cl dcommit", "PRESUBMIT_TREE_CHECK=\"skip\"") is None:
|
||||
if self.Git("cl dcommit -v", "PRESUBMIT_TREE_CHECK=\"skip\"") is None:
|
||||
self.Die("'git cl dcommit' failed, please try again.")
|
||||
|
||||
|
||||
|
@ -287,6 +287,22 @@ class ScriptTest(unittest.TestCase):
|
||||
self.assertEquals("6", self.MakeStep().Restore("new_build"))
|
||||
self.assertEquals("0", self.MakeStep().Restore("new_patch"))
|
||||
|
||||
def testLastChangeLogEntries(self):
|
||||
TEST_CONFIG[CHANGELOG_FILE] = self.MakeEmptyTempFile()
|
||||
l = """
|
||||
Fixed something.
|
||||
(issue 1234)\n"""
|
||||
for _ in xrange(10): l = l + l
|
||||
|
||||
cl_chunk = """2013-11-12: Version 3.23.2\n%s
|
||||
Performance and stability improvements on all platforms.\n\n\n""" % l
|
||||
|
||||
cl_chunk_full = cl_chunk + cl_chunk + cl_chunk
|
||||
TextToFile(cl_chunk_full, TEST_CONFIG[CHANGELOG_FILE])
|
||||
|
||||
cl = GetLastChangeLogEntries(TEST_CONFIG[CHANGELOG_FILE])
|
||||
self.assertEquals(cl_chunk, cl)
|
||||
|
||||
def testSquashCommits(self):
|
||||
TEST_CONFIG[CHANGELOG_ENTRY_FILE] = self.MakeEmptyTempFile()
|
||||
with open(TEST_CONFIG[CHANGELOG_ENTRY_FILE], "w") as f:
|
||||
@ -368,7 +384,7 @@ class ScriptTest(unittest.TestCase):
|
||||
" 2 files changed\n",
|
||||
CheckPreparePush],
|
||||
["cl upload -r \"reviewer@chromium.org\" --send-mail", "done\n"],
|
||||
["cl dcommit", "Closing issue\n"],
|
||||
["cl dcommit -v", "Closing issue\n"],
|
||||
["svn fetch", "fetch result\n"],
|
||||
["checkout svn/bleeding_edge", ""],
|
||||
[("log -1 --format=%H --grep=\"Prepare push to trunk. "
|
||||
|
Loading…
Reference in New Issue
Block a user