From ca212ff8358ce105450c65b97eaf00366c26bb06 Mon Sep 17 00:00:00 2001 From: Hitonabi Date: Fri, 28 Aug 2026 12:44:05 +0200 Subject: [PATCH] fix(test): die detection-Attrappe muss auch das PAKET-Attribut ersetzen MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ampel-Lauf 186: Die 28 echten Linux-Fehler waren weg, uebrig blieben fuenf — alle in meinem neuen Test: TypeError: drive_status() missing 1 required positional argument `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. Unter Windows fiel das nicht auf: Dort gibt es das Attribut mangels fcntl gar nicht, also griff sys.modules. Derselbe Test, zwei Plattformen, zwei Ergebnisse — genau die Sorte Luecke, die dieser Test eigentlich schliessen soll. Jetzt werden beide ersetzt. Gegengeprueft: mit kaputter Durchreiche fuenf Fehlschlaege, danach wieder gruen. Co-Authored-By: Claude Opus 5 --- src/rippy/drives/test_treiberwahl.py | 11 +++++++++++ 1 file changed, 11 insertions(+) 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)