Update tests/test_utils_run_later.py
Run CI Tests / test (push) Has been cancelled

This commit is contained in:
2025-08-05 02:08:00 +02:00
parent 8851efddc0
commit d677450dc2
+25 -54
View File
@@ -1,50 +1,23 @@
import pytest
from datetime import datetime, timedelta
from slic.utils.run_later import run_at, run_in, run_later, today, tomorrow, yesterday
from freezegun import freeze_time
# Dummy progress bar replacement
class DummyBar:
def __enter__(self): return self
def __exit__(self, *a): pass
def set(self, val): pass
# Fake datetime module wrapper
class FakeDateTimeModule:
def __init__(self, now):
self._now = now
def now(self):
return self._now
def advance(self, seconds):
self._now += timedelta(seconds=seconds)
def __getattr__(self, attr):
from datetime import datetime as real_datetime
return getattr(real_datetime, attr)
@pytest.fixture
def clock(monkeypatch):
# Initial fake datetime
fake_dt = FakeDateTimeModule(datetime(2025, 1, 1, 6, 0, 0))
# Patch the target module's datetime, sleep, tqdm, today/tomorrow/yesterday
monkeypatch.setattr("slic.utils.run_later.datetime", fake_dt)
@pytest.fixture(autouse=True)
def patch_sleep(monkeypatch):
monkeypatch.setattr("slic.utils.run_later.sleep", lambda x: None)
monkeypatch.setattr("slic.utils.run_later.tqdm_mod", lambda *a, **k: DummyBar())
monkeypatch.setattr("slic.utils.run_later.today", lambda *args, **kwargs:
datetime(fake_dt.now().year, fake_dt.now().month, fake_dt.now().day, *args, **kwargs))
monkeypatch.setattr("slic.utils.run_later.tomorrow", lambda *args, **kwargs:
datetime(fake_dt.now().year, fake_dt.now().month, fake_dt.now().day, *args, **kwargs) + timedelta(days=1))
monkeypatch.setattr("slic.utils.run_later.yesterday", lambda *args, **kwargs:
datetime(fake_dt.now().year, fake_dt.now().month, fake_dt.now().day, *args, **kwargs) - timedelta(days=1))
return fake_dt
def test_run_at(clock):
@freeze_time("2025-01-01 06:00:00")
def test_run_at():
triggered = []
def fexample(label): triggered.append(label)
@@ -52,9 +25,9 @@ def test_run_at(clock):
run_at(today(6, 30), fexample, "not yet")
assert "not yet" not in triggered
# Moment déclenché
clock.advance(31 * 60)
run_at(today(6, 30), fexample, "now OK")
# Avancer le temps
with freeze_time("2025-01-01 06:31:00"):
run_at(today(6, 30), fexample, "now OK")
assert "now OK" in triggered
# Trop tard
@@ -62,40 +35,38 @@ def test_run_at(clock):
assert "too late" not in triggered
def test_run_in(clock):
@freeze_time("2025-01-01 12:00:00")
def test_run_in():
triggered = []
def fexample(label): triggered.append(label)
clock._now = datetime(2025, 1, 1, 12, 0, 0)
# Trop tôt
run_in(timedelta(seconds=60), fexample, "not yet")
assert "not yet" not in triggered
# Moment déclenché
clock.advance(61)
run_in(timedelta(seconds=60), fexample, "now OK")
# Avancer le temps
with freeze_time("2025-01-01 12:01:01"):
run_in(timedelta(seconds=60), fexample, "now OK")
assert "now OK" in triggered
# Trop tard
clock.advance(-100)
run_in(timedelta(seconds=-1), fexample, "too late")
with freeze_time("2025-01-01 11:59:00"):
run_in(timedelta(seconds=-1), fexample, "too late")
assert "too late" not in triggered
def test_run_later(clock):
@freeze_time("2025-01-01 14:00:00")
def test_run_later():
triggered = []
def fexample(label): triggered.append(label)
clock._now = datetime(2025, 1, 1, 14, 0, 0)
# Trop tôt (float seconds)
run_later(45, fexample, "not yet")
assert "not yet" not in triggered
# Moment déclenché
clock.advance(60)
run_later(45, fexample, "now OK")
# Avancer le temps
with freeze_time("2025-01-01 14:01:00"):
run_later(45, fexample, "now OK")
assert "now OK" in triggered
# Trop tard
@@ -103,10 +74,10 @@ def test_run_later(clock):
assert "too late" not in triggered
# Format datetime
clock._now = datetime(2025, 1, 1, 15, 0, 0)
run_later(today(15, 5), fexample, "not yet dt")
with freeze_time("2025-01-01 15:00:00"):
run_later(today(15, 5), fexample, "not yet dt")
assert "not yet dt" not in triggered
clock.advance(6 * 60)
run_later(today(15, 5), fexample, "now OK dt")
with freeze_time("2025-01-01 15:06:00"):
run_later(today(15, 5), fexample, "now OK dt")
assert "now OK dt" in triggered