Extrait les appels macOS derriere le contrat Systeme
- systeme/macos.py : SystemeMacOS (sons afplay, modificateurs Quartz, chemins, verrou d'instance fcntl) implementant le contrat Systeme. - systeme/__init__.py : choisir_systeme() fabrique selon sys.platform, refuse clairement une plateforme inconnue. - core.py : verrou d'instance (fcntl, LOCK_PATH, acquire_single_instance_lock) retire ; import os retire aussi, verifie inutilise ailleurs dans le fichier. - app.py : passe par choisir_systeme().acquerir_verrou_instance(dossier_donnees() + instance.lock) au lieu de core.acquire_single_instance_lock. Seul changement dans ce fichier, nom de fichier inchange. - tests/test_single_instance.py : reoriente vers choisir_systeme(), memes assertions et meme nombre de tests. - tests/test_systeme.py (nouveau) : verrou du test_le_verrou_refuse_une_seconde_prise garde desormais la reference au premier verrou — sans variable, CPython le garbage-collectait entre les deux assert (refcount 0 -> fermeture -> verrou relache), le test passait pour la mauvaise raison. 89 tests verts (84 + 5).
This commit is contained in:
@@ -0,0 +1,15 @@
|
||||
"""Choisit la couche système selon la plateforme."""
|
||||
import sys
|
||||
|
||||
|
||||
def choisir_systeme(plateforme=None):
|
||||
"""Rend l'implémentation du contrat Systeme pour cette machine.
|
||||
|
||||
`plateforme` est injectable pour tester les branches absentes de la machine
|
||||
de développement.
|
||||
"""
|
||||
plateforme = plateforme or sys.platform
|
||||
if plateforme.startswith("darwin"):
|
||||
from systeme.macos import SystemeMacOS
|
||||
return SystemeMacOS()
|
||||
raise NotImplementedError(f"Plateforme non prise en charge : {plateforme}")
|
||||
Reference in New Issue
Block a user