Files
voicebox/backend/tests
a3fa9a2784 fix(backend): return 404 instead of 500 for audio of failed generations (#893)
* fix(backend): return 404 instead of 500 for audio of failed generations

A failed generation stores an empty audio_path. resolve_storage_path("")
resolved to the data directory itself, which exists, so the route's 404
guard passed and FileResponse raised RuntimeError ("File at path .../data
is not a file"), surfacing as a 500.

- resolve_storage_path now returns None for empty paths
- audio routes check is_file() instead of exists() so directories never
  reach FileResponse
- GET /audio/{generation_id} reports "Generation failed; no audio
  available" when the generation status is failed

Co-Authored-By: Claude Fable 5 <[email protected]>

* fix(backend): reject empty Path objects in resolve_storage_path

Path("") is truthy, so the previous `if not path` guard only caught
None and empty strings. Callers such as database/migrations.py pass
Path objects, so an empty Path could still resolve to the data dir.
Check None separately and reject paths with no parts.

Also add regression tests asserting the version and sample audio
endpoints 404 when a stored path resolves to an existing directory
(guards the is_file() checks against regressing to exists()).

Addresses CodeRabbit review on PR #893.

Co-Authored-By: Claude Fable 5 <[email protected]>

* style(tests): drop parentheses on pytest.fixture decorator (ruff PT001)

Co-Authored-By: Claude Fable 5 <[email protected]>

* style(tests): satisfy Ruff naming rule

---------

Co-authored-by: Claude Fable 5 <[email protected]>
Co-authored-by: Jamie Pine <[email protected]>
2026-07-20 22:35:40 -07:00
..
2026-04-18 16:19:12 -07:00
2026-01-30 16:48:14 -08:00
2026-03-16 01:46:19 -07:00

Backend Tests

Manual test scripts for debugging and validating backend functionality.

Test Files

test_generation_progress.py

Tests TTS generation with SSE progress monitoring to identify UX issues where users see download progress even when the model is already cached.

Usage:

cd backend
python tests/test_generation_progress.py

Prerequisites:

  • Server must be running (python main.py)
  • At least one voice profile must exist

test_real_download.py

Tests real model download with SSE progress monitoring.

Usage:

cd backend
# Delete cache first to force fresh download
rm -rf ~/.cache/huggingface/hub/models--openai--whisper-base
python tests/test_real_download.py

Prerequisites:

  • Server must be running (python main.py)

test_progress.py

Unit tests for ProgressManager and HFProgressTracker functionality.

Usage:

cd backend
python tests/test_progress.py

test_check_progress_state.py

Debugging script to inspect the internal state of ProgressManager and TaskManager.

Usage:

cd backend
python tests/test_check_progress_state.py

Notes

These are manual test scripts, not automated unit tests. They're designed for:

  • Debugging progress tracking issues
  • Validating SSE event streams
  • Monitoring real-time download behavior
  • Inspecting internal state during development