50 lines
1.6 KiB
Python
50 lines
1.6 KiB
Python
from pathlib import Path
|
|
|
|
import pytest
|
|
|
|
from app.config import Settings
|
|
from app.engines.base import UpscaleEngineUnavailable
|
|
from app.upscaler import build_upscaler
|
|
|
|
|
|
def test_invalid_engine_returns_degraded_health(tmp_path: Path) -> None:
|
|
upscaler = build_upscaler(
|
|
Settings(
|
|
engine="broken-engine",
|
|
token="secret-token",
|
|
tmp_dir=str(tmp_path / "tmp"),
|
|
output_dir=str(tmp_path / "output"),
|
|
)
|
|
)
|
|
|
|
health = upscaler.health()
|
|
|
|
assert health.status == "degraded"
|
|
assert health.models_loaded is False
|
|
|
|
|
|
def test_missing_model_raises_safe_error_when_fallback_disabled(tmp_path: Path) -> None:
|
|
binary = tmp_path / "bin" / "realesrgan-ncnn-vulkan"
|
|
binary.parent.mkdir(parents=True)
|
|
binary.write_text("#!/bin/sh\nexit 0\n", encoding="utf-8")
|
|
binary.chmod(0o755)
|
|
|
|
model_dir = tmp_path / "models"
|
|
model_dir.mkdir(parents=True)
|
|
(model_dir / "realesrgan-x4plus.param").write_text("param", encoding="utf-8")
|
|
(model_dir / "realesrgan-x4plus.bin").write_text("bin", encoding="utf-8")
|
|
|
|
engine = build_upscaler(
|
|
Settings(
|
|
engine="realesrgan-ncnn",
|
|
token="secret-token",
|
|
tmp_dir=str(tmp_path / "tmp"),
|
|
output_dir=str(tmp_path / "output"),
|
|
realesrgan_bin=str(binary),
|
|
realesrgan_model_dir=str(model_dir),
|
|
realesrgan_allow_model_fallback=False,
|
|
)
|
|
)
|
|
|
|
with pytest.raises(UpscaleEngineUnavailable, match="Upscale engine is not available"):
|
|
engine.resolve_model("illustration") |