b28c612bf7
Pierwszy run CI dał 59 passed / 20 skipped zamiast 78/1: auto-pobranie jądra przez Skyfield nie powiodło się na runnerze, więc testy referencyjne (walidacja względem astro.com) cicho znikały. - workflow: jawne pobranie de421.bsp curlem z ssd.jpl.nasa.gov (naif zwraca 404), z retry; EPHEMERIS_DIR wskazany explicite; pytest z -rs (widoczne powody skipów). - conftest: gdy CI=true, niedostępny silnik kończy się pytest.fail zamiast skip — żeby utrata pokrycia nigdy więcej nie przeszła niezauważona. Lokalnie (dev bez pobranego jądra) nadal łagodny skip. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
37 lines
1.2 KiB
Python
37 lines
1.2 KiB
Python
"""Wspólne fixture'y testów silnika.
|
|
|
|
Horoskop referencyjny = przykład z notatek projektu (notes3): 30.04.1984,
|
|
09:35 CEST = 07:35 UTC, Warszawa. Pozycje znane z astro.com/Swiss Ephemeris
|
|
służą jako wyrocznia (LOG-25).
|
|
"""
|
|
from __future__ import annotations
|
|
|
|
import datetime as dt
|
|
import os
|
|
|
|
import pytest
|
|
|
|
from app.engine.models import ChartMoment
|
|
|
|
REFERENCE_UTC = dt.datetime(1984, 4, 30, 7, 35, 0, tzinfo=dt.timezone.utc)
|
|
|
|
|
|
@pytest.fixture(scope="session")
|
|
def reference_moment() -> ChartMoment:
|
|
return ChartMoment(when_utc=REFERENCE_UTC, lat=52.2333, lon=21.0167)
|
|
|
|
|
|
@pytest.fixture(scope="session")
|
|
def own_engine():
|
|
pytest.importorskip("skyfield")
|
|
from app.engine.skyfield_engine import SkyfieldEngine
|
|
|
|
try:
|
|
return SkyfieldEngine()
|
|
except Exception as e: # brak efemeryd / brak sieci
|
|
# Lokalnie pomijamy (dev bez pobranego jądra), ale w CI to musi być błąd —
|
|
# inaczej testy referencyjne (walidacja względem astro.com) cicho znikają.
|
|
if os.getenv("CI"):
|
|
pytest.fail(f"CI: silnik efemeryd niedostępny — testy referencyjne muszą działać: {e}")
|
|
pytest.skip(f"Nie można wczytać efemeryd: {e}")
|