diff --git a/libfaketime/__init__.py b/libfaketime/__init__.py index e256b2a..422b406 100644 --- a/libfaketime/__init__.py +++ b/libfaketime/__init__.py @@ -237,7 +237,7 @@ def __exit__(self, *exc): del os.environ["FAKETIME"] if self._prev_fmt is not None: - os.environ["FAKETIME_FMT"] = self._prev_spec + os.environ["FAKETIME_FMT"] = self._prev_fmt else: del os.environ["FAKETIME_FMT"] diff --git a/test/test_faketime.py b/test/test_faketime.py index afde4e7..a2f2599 100644 --- a/test/test_faketime.py +++ b/test/test_faketime.py @@ -83,6 +83,18 @@ def test_nested_fake_time(self): self._assert_time_not_faked() + def test_nested_fake_time_restores_format(self): + """Leaving a nested context restores FAKETIME_FMT, and not FAKETIME.""" + with fake_time("2000-01-01 10:00:05"): + outer_fmt = os.environ["FAKETIME_FMT"] + + with fake_time("2001-01-01 10:00:05"): + pass + + assert os.environ["FAKETIME_FMT"] == outer_fmt + + assert "FAKETIME_FMT" not in os.environ + def test_freeze_time_alias(self): with freeze_time("2000-01-01 10:00:05"): assert datetime.datetime(2000, 1, 1, 10, 0, 5) == datetime.datetime.now()