diff --git a/src/rippy/drives/test_treiberwahl.py b/src/rippy/drives/test_treiberwahl.py index 5b41e21..c8d23ef 100644 --- a/src/rippy/drives/test_treiberwahl.py +++ b/src/rippy/drives/test_treiberwahl.py @@ -103,12 +103,23 @@ def test_linux_treiber_reicht_die_detection_funktionen_durch(name, monkeypatch): """ import types + import rippy.drives from rippy.drives import linux attrappe = types.ModuleType("rippy.drives.detection") for wie_es_heisst in AUS_DETECTION: setattr(attrappe, wie_es_heisst, lambda *a, _n=wie_es_heisst, **k: _n) + + # BEIDES ersetzen, nicht nur sys.modules. `from rippy.drives import + # detection` sieht zuerst im PAKET nach (`_handle_fromlist` prueft + # `hasattr`) und greift erst dann auf sys.modules zurueck. Auf Linux ist + # das echte Modul dort laengst gesetzt, weil es importierbar ist — die + # Attrappe blieb wirkungslos und der Test lief in die echten Funktionen + # (Ampel-Lauf 186: `TypeError: drive_status() missing 1 required + # positional argument`). Unter Windows fiel das nicht auf: Dort gibt es + # das Attribut mangels `fcntl` gar nicht. + monkeypatch.setattr(rippy.drives, "detection", attrappe, raising=False) monkeypatch.setitem(sys.modules, "rippy.drives.detection", attrappe) durchgereicht = getattr(linux, name, None)