test: install the EXAMPLE service through a fixture, not the live config

Two tests failed when the local unshackle.yaml left out the in-repo services folder.
This commit is contained in:
imSp4rky
2026-11-09 20:04:28 -07:00
parent 6f9ab94536
commit b4418fa731
3 changed files with 13 additions and 0 deletions
+11
View File
@@ -69,6 +69,17 @@ def no_speed_limit(monkeypatch: pytest.MonkeyPatch) -> None:
monkeypatch.setattr(requests_downloader, "speed_limit_locked", False)
@pytest.fixture
def example_service(monkeypatch: pytest.MonkeyPatch) -> None:
"""Make the in-repo EXAMPLE the only installed service, whatever the local unshackle.yaml lists."""
from unshackle.core import services
path = config.directories.namespace_dir / "services" / "EXAMPLE" / "__init__.py"
monkeypatch.setattr(services, "SERVICES", [path])
monkeypatch.setattr(services, "MODULES", {})
monkeypatch.setattr(services, "LOAD_ERRORS", [])
@pytest.fixture
def mux_args(monkeypatch: pytest.MonkeyPatch) -> Callable[..., list[str]]:
"""Run Tracks.mux up to mkvmerge and return its arguments; ``ids`` is what the track ID probe reports."""
@@ -48,6 +48,7 @@ def test_region_mismatch_raises(monkeypatch):
assert exc_info.value.details == {"service": "EXAMPLE"}
@pytest.mark.usefixtures("example_service")
def test_geoblocked_client_region_raises(monkeypatch):
patch_server_region(monkeypatch, "CA")
service_class = handlers.Services.load("EXAMPLE")
+1
View File
@@ -232,6 +232,7 @@ async def test_heartbeat_late_error_counts_as_rejected(aiohttp_client, monkeypat
assert stats.errors == {"-": {"SERVICE_ERROR": 1}}
@pytest.mark.usefixtures("example_service")
@pytest.mark.parametrize(("service", "counted_as"), [("EXAMPLE", "EXAMPLE"), ("NOT_INSTALLED", "-")])
async def test_error_is_counted_by_service_and_logged_with_its_ref(
aiohttp_client, monkeypatch: pytest.MonkeyPatch, caplog: pytest.LogCaptureFixture, service: str, counted_as: str