"""Garde d'instance unique. Contexte (bug du 2026-08-21) : deux bundles Zonza portant le MÊME identifiant (`/Applications/Zonza.app` et un fantôme resté dans la Corbeille, encore enregistré auprès de LaunchServices) pouvaient tourner simultanément. Chaque instance chargeait son propre modèle MLX-Whisper `medium` et captait la même hotkey globale : un seul appui déclenchait deux transcriptions, la machine saturait. Purger le fantôme corrige l'incident du jour ; cette garde corrige la CLASSE de bug — quel que soit le nombre de bundles présents, la 2e instance renonce. """ import os import tempfile from systeme import choisir_systeme def _tmp_lock(): return os.path.join(tempfile.mkdtemp(), "sous-dossier", "zonza.lock") def test_premiere_instance_obtient_le_verrou(): handle = choisir_systeme().acquerir_verrou_instance(_tmp_lock()) assert handle is not None def test_deuxieme_instance_est_refusee(): path = _tmp_lock() premier = choisir_systeme().acquerir_verrou_instance(path) assert premier is not None assert choisir_systeme().acquerir_verrou_instance(path) is None def test_verrou_repris_apres_liberation(): path = _tmp_lock() premier = choisir_systeme().acquerir_verrou_instance(path) premier.close() assert choisir_systeme().acquerir_verrou_instance(path) is not None def test_cree_le_dossier_parent_manquant(): path = _tmp_lock() assert not os.path.isdir(os.path.dirname(path)) choisir_systeme().acquerir_verrou_instance(path) assert os.path.isdir(os.path.dirname(path)) def test_deux_chemins_differents_ne_se_genent_pas(): assert choisir_systeme().acquerir_verrou_instance(_tmp_lock()) is not None assert choisir_systeme().acquerir_verrou_instance(_tmp_lock()) is not None