Backend runtime upgraded.
Some checks failed
Tests / Build and Push CICD Base Image (pull_request) Successful in 35m37s
Tests / Build and Push CICD Complete Image (pull_request) Failing after 23s
Tests / Trailing Whitespace Check (pull_request) Has been skipped
Tests / End of File Check (pull_request) Has been skipped
Tests / YAML Syntax Check (pull_request) Has been skipped
Tests / TOML Syntax Check (pull_request) Has been skipped
Tests / Mixed Line Ending Check (pull_request) Has been skipped
Tests / TOML Formatting Check (pull_request) Has been skipped
Tests / Ruff Linting (pull_request) Has been skipped
Tests / Ruff Format Check (pull_request) Has been skipped
Tests / Pyright Type Check (pull_request) Has been skipped
Tests / Darglint Docstring Check (pull_request) Has been skipped
Tests / No Docstring Types Check (pull_request) Has been skipped
Tests / ESLint Check (pull_request) Has been skipped
Tests / Prettier Format Check (pull_request) Has been skipped
Tests / TypeScript Type Check (pull_request) Has been skipped
Tests / TSDoc Lint Check (pull_request) Has been skipped
Tests / Backend Tests (pull_request) Has been skipped
Tests / Frontend Tests (pull_request) Has been skipped
Tests / Backend Doctests (pull_request) Has been skipped
Tests / Integration Tests (pull_request) Has been skipped
Tests / End-to-End Tests (pull_request) Has been skipped

Signed-off-by: Cliff Hill <xlorep@darkhelm.org>
This commit is contained in:
2026-05-15 19:24:59 -04:00
parent 5d74dd8d8f
commit 275363aa18
15 changed files with 185 additions and 156 deletions

View File

@@ -23,3 +23,34 @@ class TestAPIIntegration:
response = client.get("/")
assert response.status_code == 200
assert response.json() == {"message": "Plex Playlist Backend API"}
def test_startup_rejects_invalid_runtime_policy(
self, monkeypatch: pytest.MonkeyPatch
) -> None:
"""Startup should fail fast when compatibility policy is invalid."""
monkeypatch.setenv("BACKEND_REQUIRED_PYTHON", "99.0")
with pytest.raises(RuntimeError), TestClient(app):
pass
monkeypatch.delenv("BACKEND_REQUIRED_PYTHON", raising=False)
def test_compatibility_endpoint_reports_policy_status(
self, monkeypatch: pytest.MonkeyPatch
) -> None:
"""Compatibility endpoint should expose runtime and pinning policy status."""
monkeypatch.setenv("BACKEND_REQUIRED_PYTHON", "3.14")
with TestClient(app) as local_client:
response = local_client.get("/compatibility")
assert response.status_code == 200
payload = response.json()
assert payload["ok"] is True
assert payload["required_python"] == "3.14"
assert "current_python" in payload
assert "required_packages" in payload
assert payload["required_packages"]["fastapi"] == "0.120.2"
assert payload["required_packages"]["uvicorn"] == "0.38.0"
monkeypatch.delenv("BACKEND_REQUIRED_PYTHON", raising=False)