From 288f6ac5465eeb95ba74e729ec7c580a8cdecd18 Mon Sep 17 00:00:00 2001 From: Alex Ehlke Date: Tue, 13 Oct 2015 14:43:19 -0400 Subject: [PATCH] Add manual increment via tick method --- AUTHORS.rst | 1 + freezegun/api.py | 8 ++++++-- tests/test_datetimes.py | 15 +++++++++++++++ 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/AUTHORS.rst b/AUTHORS.rst index 312da0aa..bb1d92a4 100644 --- a/AUTHORS.rst +++ b/AUTHORS.rst @@ -12,3 +12,4 @@ Patches and Suggestions - `Jesse London `_ - `Zach Smith `_ - `Adam Johnson `_ +- `Alex Ehlke `_ diff --git a/freezegun/api.py b/freezegun/api.py index 614c7c77..9ddeeed3 100644 --- a/freezegun/api.py +++ b/freezegun/api.py @@ -254,6 +254,9 @@ def __init__(self, time_to_freeze): def __call__(self): return self.time_to_freeze + def tick(self, delta=datetime.timedelta(seconds=1)): + self.time_to_freeze += delta + class _freeze_time(object): @@ -323,13 +326,12 @@ def tearDownClass(cls): return klass def __enter__(self): - self.start() + return self.start() def __exit__(self, *args): self.stop() def start(self): - if self.tick: time_to_freeze = TickingDateTimeFactory(self.time_to_freeze, real_datetime.now()) else: @@ -409,6 +411,8 @@ def start(self): datetime.date.dates_to_freeze.append(time_to_freeze) datetime.date.tz_offsets.append(self.tz_offset) + return time_to_freeze + def stop(self): datetime.datetime.times_to_freeze.pop() datetime.datetime.tz_offsets.pop() diff --git a/tests/test_datetimes.py b/tests/test_datetimes.py index 74130a26..3c67f4d3 100644 --- a/tests/test_datetimes.py +++ b/tests/test_datetimes.py @@ -122,6 +122,21 @@ def test_time_with_dst(): freezer.stop() +def test_manual_increment(): + initial_datetime = datetime.datetime(year=1, month=7, day=12, + hour=15, minute=6, second=3) + with freeze_time(initial_datetime) as frozen_datetime: + assert frozen_datetime() == initial_datetime + + frozen_datetime.tick() + initial_datetime += datetime.timedelta(seconds=1) + assert frozen_datetime() == initial_datetime + + frozen_datetime.tick(delta=datetime.timedelta(seconds=10)) + initial_datetime += datetime.timedelta(seconds=10) + assert frozen_datetime() == initial_datetime + + def test_bad_time_argument(): try: freeze_time("2012-13-14", tz_offset=-4)