From e126e111cc64d6da957167bf4ec316266613c687 Mon Sep 17 00:00:00 2001 From: vicfergar Date: Thu, 21 Mar 2024 14:56:00 +0100 Subject: [PATCH 1/2] Add tick method to TickingDateTimeFactory --- AUTHORS.rst | 1 + freezegun/api.py | 7 +++++++ tests/test_ticking.py | 16 ++++++++++++++++ 3 files changed, 24 insertions(+) diff --git a/AUTHORS.rst b/AUTHORS.rst index 28cd64e..36afa42 100644 --- a/AUTHORS.rst +++ b/AUTHORS.rst @@ -22,3 +22,4 @@ Patches and Suggestions - `staticdev `_ - `Marcin Sulikowski `_ - `Ashish Patil `_ +- `Victor Ferrer `_ diff --git a/freezegun/api.py b/freezegun/api.py index 43b117e..366d2cb 100644 --- a/freezegun/api.py +++ b/freezegun/api.py @@ -496,6 +496,13 @@ def __init__(self, time_to_freeze, start): def __call__(self): return self.time_to_freeze + (real_datetime.now() - self.start) + def tick(self, delta=datetime.timedelta(seconds=1)): + if isinstance(delta, numbers.Real): + # noinspection PyTypeChecker + self.move_to(self.time_to_freeze + datetime.timedelta(seconds=delta)) + else: + self.move_to(self.time_to_freeze + delta) + def move_to(self, target_datetime): """Moves frozen date to the given ``target_datetime``""" self.start = real_datetime.now() diff --git a/tests/test_ticking.py b/tests/test_ticking.py index 434a6e7..22e0b94 100644 --- a/tests/test_ticking.py +++ b/tests/test_ticking.py @@ -63,6 +63,22 @@ def test_ticking_time(): assert time.time() > 1326585599.0 +@utils.cpython_only +def test_ticking_tick(): + with freeze_time("Jan 14th, 2012, 23:59:59", tick=True) as ft: + ft.tick(60) + time.sleep(0.001) # Deal with potential clock resolution problems + assert datetime.datetime.now().replace( + second=0, microsecond=0 + ) == datetime.datetime(2012, 1, 15, 0, 1, 0) + + ft.tick(delta=datetime.timedelta(minutes=2)) + time.sleep(0.001) # Deal with potential clock resolution problems + assert datetime.datetime.now().replace( + second=0, microsecond=0 + ) == datetime.datetime(2012, 1, 15, 0, 3, 0) + + @utils.cpython_only def test_ticking_move_to(): with freeze_time("Jan 14th, 2012, 23:59:59", tick=True) as ft: From c1b8653e562f6d64f7e9c07cde3f3307b512cc94 Mon Sep 17 00:00:00 2001 From: Bert Blommers Date: Sun, 14 Apr 2024 11:20:08 +0000 Subject: [PATCH 2/2] Fix test --- tests/test_ticking.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_ticking.py b/tests/test_ticking.py index 22e0b94..e33b5d2 100644 --- a/tests/test_ticking.py +++ b/tests/test_ticking.py @@ -66,7 +66,7 @@ def test_ticking_time(): @utils.cpython_only def test_ticking_tick(): with freeze_time("Jan 14th, 2012, 23:59:59", tick=True) as ft: - ft.tick(60) + ft.tick(61) time.sleep(0.001) # Deal with potential clock resolution problems assert datetime.datetime.now().replace( second=0, microsecond=0