Add whisper remote backend and CLI

This commit is contained in:
2026-05-24 12:36:24 +02:00
parent ad10a62ae6
commit aa89590555
12 changed files with 445 additions and 0 deletions

View File

@@ -0,0 +1,63 @@
from pathlib import Path
from fastapi.testclient import TestClient
from whisper_remote_backend import server
client = TestClient(server.app)
def test_validate_output_format_rejects_unknown() -> None:
try:
server.validate_output_format("docx")
except Exception as exc: # pragma: no cover - structure assertion below
assert getattr(exc, "status_code", None) == 400
else: # pragma: no cover
raise AssertionError("Expected HTTPException")
def test_transcriptions_returns_generated_artifact(monkeypatch, tmp_path: Path) -> None:
def fake_run(command: list[str], check: bool, capture_output: bool, text: bool):
output_dir = Path(command[command.index("--output_dir") + 1])
(output_dir / "clip.txt").write_text("hello world", encoding="utf-8")
class Result:
returncode = 0
stdout = ""
stderr = ""
return Result()
monkeypatch.setattr(server.subprocess, "run", fake_run)
response = client.post(
"/transcriptions",
data={"model": "base", "language": "en", "output_format": "txt"},
files={"file": ("clip.wav", b"audio", "audio/wav")},
)
assert response.status_code == 200
assert response.text == "hello world"
assert response.headers["x-whisper-output-format"] == "txt"
def test_transcriptions_maps_subprocess_failure(monkeypatch) -> None:
def fake_run(command: list[str], check: bool, capture_output: bool, text: bool):
class Result:
returncode = 1
stdout = ""
stderr = "bad whisper day"
return Result()
monkeypatch.setattr(server.subprocess, "run", fake_run)
response = client.post(
"/transcriptions",
data={"model": "base", "output_format": "txt"},
files={"file": ("clip.wav", b"audio", "audio/wav")},
)
assert response.status_code == 502
assert response.json()["detail"] == "bad whisper day"