fix(test): die detection-Attrappe muss auch das PAKET-Attribut ersetzen
Ampel / ampel (push) Successful in 54s
Ampel / ampel (push) Successful in 54s
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 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
bfc0cada62
commit
ca212ff835
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user