diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2023-01-05 10:38:34 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2023-01-05 10:38:34 +0000 |
commit | e3bdad36cc3a1a00c1e6772ca1c1898085ab73e0 (patch) | |
tree | 34512072a667ae716fd262e7b37e733e60fe4d89 /tests/testing/test_time_travel.py | |
parent | Adding upstream version 2.1.2. (diff) | |
download | pendulum-e3bdad36cc3a1a00c1e6772ca1c1898085ab73e0.tar.xz pendulum-e3bdad36cc3a1a00c1e6772ca1c1898085ab73e0.zip |
Adding upstream version 3.0.0~a1.upstream/3.0.0_a1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'tests/testing/test_time_travel.py')
-rw-r--r-- | tests/testing/test_time_travel.py | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/tests/testing/test_time_travel.py b/tests/testing/test_time_travel.py new file mode 100644 index 0000000..dd496e3 --- /dev/null +++ b/tests/testing/test_time_travel.py @@ -0,0 +1,85 @@ +from __future__ import annotations + +from time import sleep +from typing import TYPE_CHECKING + +import pytest + +import pendulum + +from pendulum.utils._compat import PYPY + +if TYPE_CHECKING: + from typing import Generator + + +@pytest.fixture(autouse=True) +def setup() -> Generator[None, None, None]: + pendulum.travel_back() + + yield + + pendulum.travel_back() + + +@pytest.mark.skipif(PYPY, reason="Time travelling not available on PyPy") +def test_travel() -> None: + now = pendulum.now() + + pendulum.travel(minutes=5) + + assert pendulum.now().diff_for_humans(now) == "5 minutes after" + + +@pytest.mark.skipif(PYPY, reason="Time travelling not available on PyPy") +def test_travel_with_frozen_time() -> None: + pendulum.travel(minutes=5, freeze=True) + + now = pendulum.now() + + sleep(0.01) + + assert now == pendulum.now() + + +@pytest.mark.skipif(PYPY, reason="Time travelling not available on PyPy") +def test_travel_to() -> None: + dt = pendulum.datetime(2022, 1, 19, tz="local") + + pendulum.travel_to(dt) + + assert pendulum.now().date() == dt.date() + + +@pytest.mark.skipif(PYPY, reason="Time travelling not available on PyPy") +def test_freeze() -> None: + pendulum.freeze() + + pendulum.travel(minutes=5) + + assert pendulum.now() == pendulum.now() + + pendulum.travel_back() + + pendulum.travel(minutes=5) + + now = pendulum.now() + + sleep(0.01) + + assert now != pendulum.now() + + pendulum.freeze() + + assert pendulum.now() == pendulum.now() + + pendulum.travel_back() + + with pendulum.freeze(): + assert pendulum.now() == pendulum.now() + + now = pendulum.now() + + sleep(0.01) + + assert now != pendulum.now() |