From 6cba8b6f46c101298f4e60be0a1e14873d6ccf58 Mon Sep 17 00:00:00 2001 From: KosWu Date: Thu, 27 Oct 2022 13:43:33 +0800 Subject: [PATCH] make sure fromtimestamp always return FakeDateTime --- freezegun/api.py | 9 +++++---- tests/test_datetimes.py | 9 +++++++++ 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/freezegun/api.py b/freezegun/api.py index 2a914529..43b117eb 100644 --- a/freezegun/api.py +++ b/freezegun/api.py @@ -374,10 +374,11 @@ def astimezone(self, tz=None): @classmethod def fromtimestamp(cls, t, tz=None): if tz is None: - return real_datetime.fromtimestamp( - t, tz=dateutil.tz.tzoffset("freezegun", cls._tz_offset()) - ).replace(tzinfo=None) - return datetime_to_fakedatetime(real_datetime.fromtimestamp(t, tz)) + tz = dateutil.tz.tzoffset("freezegun", cls._tz_offset()) + result = real_datetime.fromtimestamp(t, tz=tz).replace(tzinfo=None) + else: + result = real_datetime.fromtimestamp(t, tz) + return datetime_to_fakedatetime(result) def timestamp(self): if self.tzinfo is None: diff --git a/tests/test_datetimes.py b/tests/test_datetimes.py index 30fa3b02..0632f9ff 100644 --- a/tests/test_datetimes.py +++ b/tests/test_datetimes.py @@ -93,6 +93,15 @@ def test_tz_offset(): freezer.stop() +def test_timestamp_tz_offset(): + freezer = freeze_time(datetime.datetime.fromtimestamp(1), tz_offset=-1) + freezer.start() + t = datetime.datetime.now().timestamp() + + assert datetime.datetime.fromtimestamp(t).timestamp() == t + freezer.stop() + + def test_timedelta_tz_offset(): freezer = freeze_time("2012-01-14 03:21:34", tz_offset=-datetime.timedelta(hours=3, minutes=30))