@@ -108,45 +108,51 @@ def __init_subclass__(cls, **kwargs):
108108 pass
109109
110110
111- def _install_gi_stub () -> None :
111+ def _install_gi_stub (monkeypatch ) -> None :
112+ """Installe le faux `gi` le temps d'un test seulement.
113+
114+ `monkeypatch.setitem` restaure les vrais modules à la fin du test :
115+ écrire directement dans `sys.modules` laissait le faux `gi` en place
116+ pour tout le reste de la session, et cassait les tests GUI exécutés
117+ ensuite quand PyGObject est réellement installé
118+ (« cannot import name 'events' from 'gi' »).
119+ """
112120 gi_mock = types .ModuleType ("gi" )
113121 gi_mock .require_version = lambda * a , ** k : None
114122 repo_mock = types .ModuleType ("gi.repository" )
115123 for name in ("Gdk" , "Gio" , "GLib" , "Gtk" , "Pango" ):
116124 setattr (repo_mock , name , _StubClass )
117125 gi_mock .repository = repo_mock
118- sys .modules [ "gi" ] = gi_mock
119- sys .modules [ "gi.repository" ] = repo_mock
126+ monkeypatch . setitem ( sys .modules , "gi" , gi_mock )
127+ monkeypatch . setitem ( sys .modules , "gi.repository" , repo_mock )
120128
121129
122130@pytest .fixture ()
123131def gtk_module_en (monkeypatch ):
124132 """Importe `switch_capture_gtk` avec `gi` mocké et `en_US` forcé, indépendamment de l'environnement réel."""
125- _install_gi_stub ()
133+ _install_gi_stub (monkeypatch )
126134 real_translation = gettext .translation
127135
128136 def _patched (domain , localedir = None , languages = None , fallback = False ):
129137 return real_translation (domain , localedir = localedir , languages = ["en_US" ], fallback = fallback )
130138
131139 monkeypatch .setattr (gettext , "translation" , _patched )
132- sys .modules . pop ( "switch_capture_gtk" , None )
140+ monkeypatch . delitem ( sys .modules , "switch_capture_gtk" , raising = False )
133141 import switch_capture_gtk as module
134142
135143 yield module
136- sys .modules .pop ("switch_capture_gtk" , None )
137144
138145
139146@pytest .fixture ()
140147def gtk_module_default (monkeypatch ):
141148 """Importe `switch_capture_gtk` avec `gi` mocké, sans variable de langue forcée (repli français attendu)."""
142- _install_gi_stub ()
149+ _install_gi_stub (monkeypatch )
143150 for var in ("LANGUAGE" , "LC_ALL" , "LC_MESSAGES" , "LANG" ):
144151 monkeypatch .delenv (var , raising = False )
145- sys .modules . pop ( "switch_capture_gtk" , None )
152+ monkeypatch . delitem ( sys .modules , "switch_capture_gtk" , raising = False )
146153 import switch_capture_gtk as module
147154
148155 yield module
149- sys .modules .pop ("switch_capture_gtk" , None )
150156
151157
152158# --------------------------------------------------------------------- #
0 commit comments