1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
|
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()
|