From 16df61ea3a67c7dcbb6d3b9d4869eed8858cb0ed Mon Sep 17 00:00:00 2001 From: Hitonabi Date: Fri, 28 Aug 2026 14:53:26 +0200 Subject: [PATCH] =?UTF-8?q?fix:=20pruefe=5Fschreibrecht=20nahm=20os.path?= =?UTF-8?q?=20statt=20pfade=20=E2=80=94=20zum=20vierten=20Mal=20dieselbe?= =?UTF-8?q?=20Falle?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ampel-Lauf zu 3d5f82b rot: assert 'nicht vorhanden' in 'Q:\Rippy (Pfad nicht gefunden)' `os.path.splitdrive` kennt auf Linux kein "Q:" und gab einen leeren String zurueck, also fiel die Pruefung in den allgemeinen Zweig. Genau dafuer gibt es seit einer Stunde `rippy/pfade.py` -- und ich habe es hier nicht benutzt. Das ist das vierte Vorkommen desselben Musters an einem Tag (katalog, verknuepfungen, betrieb, jetzt einrichtung). Die Regel steht im Kopf von pfade.py und gilt ohne Ausnahme: **Der Pfad entscheidet, nicht der Rechner.** Gegengeprueft, dass es keine fuenfte Stelle gibt: kein os.path.splitdrive und kein direkter ntpath-Aufruf mehr ausserhalb von pfade.py. Co-Authored-By: Claude Opus 5 --- src/rippy/einrichtung.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/rippy/einrichtung.py b/src/rippy/einrichtung.py index c386d53..4000c6d 100644 --- a/src/rippy/einrichtung.py +++ b/src/rippy/einrichtung.py @@ -45,6 +45,8 @@ import shutil import socket import sys +from rippy import pfade + OK = "ok" WARNUNG = "warnung" FEHLER = "fehler" @@ -103,8 +105,6 @@ def pruefe_webview(version=None) -> dict: def pruefe_platz(ziel: str, frei_mb=None) -> dict: """Genug Platz am Zielort? Gemessen am nächsten vorhandenen Ordner.""" - from rippy import pfade - if frei_mb is None: pfad = pfade.naechster_vorhandener(ziel) if not pfad: @@ -219,7 +219,10 @@ def pruefe_schreibrecht(ziel: str, probe=None, erhoeht=None) -> dict: if geklappt: return _eintrag("Schreibrecht", OK, ziel) - laufwerk = os.path.splitdrive(ziel or "")[0] + # ueber `pfade`, nicht ueber `os.path`: Auf dem Linux-Runner der Ampel + # kennt `splitdrive` kein "Q:" und gab einen leeren String zurueck -- + # dieselbe Falle, fuer die es `rippy/pfade.py` gibt. Zum vierten Mal. + laufwerk = pfade.laufwerk_von(ziel or "") if laufwerk and len(laufwerk) == 2 and not os.path.isdir(laufwerk + "\\"): # Ein Laufwerksbuchstabe, den es in DIESEM Prozess nicht gibt. zusatz = (" Als Administrator gestartete Programme sehen die "