Skip to content

test: end-to-end proof that FLAC repair is lossless and safe#34

Merged
Guillain-RDCDE merged 1 commit into
mainfrom
test/repair-lossless-e2e
Jun 3, 2026
Merged

test: end-to-end proof that FLAC repair is lossless and safe#34
Guillain-RDCDE merged 1 commit into
mainfrom
test/repair-lossless-e2e

Conversation

@Guillain-RDCDE
Copy link
Copy Markdown
Owner

Test bout-en-bout : prouver que la réparation est lossless

Les tests de réparation existants (tests/unit/test_repair_functions.py) mockent le binaire flac : ils valident l'orchestration, mais pas la propriété qui compte pour un public hi-fi — est-ce que la réparation rend le même son ?

Ce PR ajoute un test end-to-end réel (utilise le vrai flac ; le module se skip proprement si flac n'est pas sur le PATH, comme le gate ffmpeg) :

  • test_repair_roundtrip_is_bit_identical — decode → re-encode redonne un PCM np.array_equal à l'original, échantillon par échantillon (lossless prouvé, aucun DSP).
  • test_repair_preserves_metadata — les tags survivent au round-trip.
  • test_repair_replace_source_keeps_backupreplace_source=True écrit toujours un .corrupted.bak byte-identique à l'original avant de remplacer, et le fichier remplacé contient le même audio.

C'est la preuve exécutable derrière la section docs « Repair: lossless reconstruction » : on ne retouche pas le son, on reconstruit sans perte, avec sauvegarde.

Note : sur les runners CI sans le binaire flac, le module se skip (il ne casse pas la CI). Si tu veux que cette preuve tourne aussi en CI, il suffit d'ajouter flac aux dépendances système du job de test — je peux le faire dans un PR séparé.

🤖 Generated with Claude Code

The existing repair tests (tests/unit/test_repair_functions.py) mock the `flac`
CLI and cover the orchestration. They don't prove the property a hi-fi user
actually cares about: that repair returns the *same audio*. This adds a real
end-to-end test using the `flac` binary (module-skipped if it's not on PATH):

- test_repair_roundtrip_is_bit_identical — decode→re-encode yields PCM that is
  np.array_equal to the original, sample for sample (lossless; no DSP).
- test_repair_preserves_metadata — tags survive the round-trip.
- test_repair_replace_source_keeps_backup — replace_source=True always writes a
  byte-identical .corrupted.bak first, and the replaced file is the same audio.

Backs the "Repair: lossless reconstruction" docs section with executable proof.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@Guillain-RDCDE Guillain-RDCDE merged commit c5296e9 into main Jun 3, 2026
15 checks passed
@Guillain-RDCDE Guillain-RDCDE deleted the test/repair-lossless-e2e branch June 3, 2026 11:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant