"""À chaque moteur son modèle. `app.py` passait `CONFIG["model"]` — un dépôt MLX — quel que soit le moteur détecté. Sur une machine sans Apple Silicon, `faster-whisper` aurait reçu un dépôt qu'il ne sait pas charger. Le défaut était invisible ici, puisque la détection rend toujours `mlx` sur ce Mac. """ import pytest from core import MODELES_PAR_MOTEUR, modele_pour_moteur def test_chaque_moteur_connu_a_son_modele(): for nom in ("mlx", "faster-cpu", "faster-gpu"): assert modele_pour_moteur(nom) def test_mlx_garde_le_modele_d_aujourd_hui(): assert modele_pour_moteur("mlx") == "mlx-community/whisper-medium" def test_les_moteurs_faster_ne_recoivent_jamais_un_depot_mlx(): for nom in ("faster-cpu", "faster-gpu"): assert "mlx" not in modele_pour_moteur(nom).lower() def test_le_gpu_vise_la_precision_le_cpu_la_latence(): # mesuré le 2026-08-23 : medium = 13/13 termes mais 4,4 s sur CPU ; small = 11/13 en 1,4 s assert "medium" in modele_pour_moteur("faster-gpu") assert "small" in modele_pour_moteur("faster-cpu") def test_un_moteur_inconnu_est_refuse_clairement(): with pytest.raises(KeyError) as e: modele_pour_moteur("vosk") assert "vosk" in str(e.value) def test_la_table_ne_contient_que_les_moteurs_reconnus(): assert set(MODELES_PAR_MOTEUR) == {"mlx", "faster-cpu", "faster-gpu"} def test_le_reglage_manuel_prime_sur_la_table(): from core import modele_retenu assert modele_retenu("faster-cpu", forcage=None) == modele_pour_moteur("faster-cpu") assert modele_retenu("faster-cpu", forcage="Systran/faster-whisper-medium") \ == "Systran/faster-whisper-medium" def test_un_forcage_vide_est_ignore(): from core import modele_retenu assert modele_retenu("mlx", forcage="") == modele_pour_moteur("mlx")