Naprawa CI: testy awarii magazynu nie mogą zależeć od praw pliku #73
Reference in New Issue
Block a user
Delete Branch "fix/testy-magazynu-jako-root"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Dwa testy z #71 przechodziły lokalnie i padały w CI. Przyczyna nie miała nic wspólnego z badaną rzeczą.
Wymuszały awarię przez
chmod 000ichmod 555, a CI działa jako root — root omija bity uprawnień w Linuksie. Odczyt i zapis się udawały, więc asercje leciały na komunikat, którego nie było. Widać to zresztą w samym logu:/tmp/pytest-of-root/…, a drugi test dostałZałożono konto „ala”zamiast odmowy.Lokalnie działałem jako zwykły użytkownik (
uid 501), więc prawa obowiązywały.Dlaczego to poważniejsze niż literówka
Test zależny od tego, kto go uruchamia, jest gorszy niż jego brak: daje fałszywe poczucie pokrycia i zapala się w miejscu niezwiązanym z tym, co sprawdza.
Co teraz
Awarię wymuszamy podmianą dokładnie tego punktu, w którym system plików mówi „nie":
mkstempprzy zapisie — celowo właśnie ono, bo przy katalogu tylko do odczytu wywala się pierwsze, jeszcze zanim dojdzie do zapisu i podmiany. Tego dotyczyła naprawiana poprawka.Podmiana jest przy okazji celniejsza: sprawdza wprost ten punkt, zamiast liczyć, że da się do niego zmusić system plików.
Sprawdzian na prawdziwych prawach zostaje, z
skipifprzy uruchomieniu z roota — jako kontrola, że podmiana odpowiada rzeczywistości, a nie tylko sama sobie. W CI się nie wykona i to jest w porządku: znaczyłby tam tyle co nic.Sprawdziłem też, czy nie mam tej samej miny gdzie indziej —
chmod/geteuidnie występują w żadnym innym teście.Weryfikacja
Prezentacja 303, dane 32, logika 342, render 41 — zielone.
🤖 Generated with Claude Code