"""La fabrique rend une implémentation conforme au contrat Systeme.""" import os import tempfile import pytest from systeme import choisir_systeme def test_la_fabrique_rend_une_implementation_complete(): s = choisir_systeme() for methode in ("jouer_son", "modificateurs_enfonces", "raccourci_defaut", "chemin_log", "dossier_donnees", "acquerir_verrou_instance"): assert callable(getattr(s, methode)), f"{methode} manque" def test_une_plateforme_inconnue_est_refusee_clairement(): with pytest.raises(NotImplementedError) as e: choisir_systeme(plateforme="haiku-os") assert "haiku-os" in str(e.value) def test_le_raccourci_macos_est_celui_d_aujourd_hui(): assert choisir_systeme(plateforme="darwin").raccourci_defaut() == "++d" def test_le_verrou_refuse_une_seconde_prise(): s = choisir_systeme() chemin = os.path.join(tempfile.mkdtemp(), "sous-dossier", "z.lock") # Référence gardée : sinon CPython ramasse l'objet fichier dès la fin de # l'assert (refcount à 0), ce qui referme le fichier et relâche le verrou # AVANT la seconde prise — le test passerait pour la mauvaise raison. verrou = s.acquerir_verrou_instance(chemin) assert verrou is not None assert s.acquerir_verrou_instance(chemin) is None def test_aucun_modificateur_enfonce_pendant_les_tests(): assert choisir_systeme().modificateurs_enfonces() is False