From 9087d5f86519cd95036ccb68f3b61bf5219cebdb Mon Sep 17 00:00:00 2001 From: "machenbach@chromium.org" Date: Tue, 3 Dec 2013 12:38:25 +0000 Subject: [PATCH] Mock out date call in push-to-trunk script for testability. TEST=python -m unittest test_scripts.ScriptTest.testPrepareChangeLog R=ulan@chromium.org Review URL: https://codereview.chromium.org/98173003 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18232 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- tools/push-to-trunk/common_includes.py | 9 ++++++++- tools/push-to-trunk/push_to_trunk.py | 3 +-- tools/push-to-trunk/test_scripts.py | 33 +++++++++++++++++---------------- 3 files changed, 26 insertions(+), 19 deletions(-) diff --git a/tools/push-to-trunk/common_includes.py b/tools/push-to-trunk/common_includes.py index a2f0748..ba23314 100644 --- a/tools/push-to-trunk/common_includes.py +++ b/tools/push-to-trunk/common_includes.py @@ -26,6 +26,7 @@ # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +import datetime import os import re import subprocess @@ -202,9 +203,12 @@ class SideEffectHandler(object): finally: url_fh.close() - def Sleep(seconds): + def Sleep(self, seconds): time.sleep(seconds) + def GetDate(self): + return datetime.date.today().strftime("%Y-%m-%d") + DEFAULT_SIDE_EFFECT_HANDLER = SideEffectHandler() @@ -286,6 +290,9 @@ class Step(object): cmd = lambda: self._side_effect_handler.ReadURL(url) return self.Retry(cmd, retry_on, wait_plan) + def GetDate(self): + return self._side_effect_handler.GetDate() + def Die(self, msg=""): if msg != "": print "Error: %s" % msg diff --git a/tools/push-to-trunk/push_to_trunk.py b/tools/push-to-trunk/push_to_trunk.py index cee871f..9c9c75f 100755 --- a/tools/push-to-trunk/push_to_trunk.py +++ b/tools/push-to-trunk/push_to_trunk.py @@ -26,7 +26,6 @@ # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -import datetime import optparse import sys import tempfile @@ -115,7 +114,7 @@ class PrepareChangeLog(Step): # These version numbers are used again later for the trunk commit. self.ReadAndPersistVersion() - date = datetime.date.today().strftime("%Y-%m-%d") + date = self.GetDate() self.Persist("date", date) output = "%s: Version %s.%s.%s\n\n" % (date, self._state["major"], diff --git a/tools/push-to-trunk/test_scripts.py b/tools/push-to-trunk/test_scripts.py index 1fd204d..0262fc0 100644 --- a/tools/push-to-trunk/test_scripts.py +++ b/tools/push-to-trunk/test_scripts.py @@ -288,6 +288,9 @@ class ScriptTest(unittest.TestCase): def Sleep(self, seconds): pass + def GetDate(self): + return "1999-07-31" + def ExpectGit(self, *args): """Convenience wrapper.""" self._git_mock.Expect(*args) @@ -444,35 +447,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 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\\) +# (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\\) +# 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")) -- 2.7.4