Nazwy plików i ścieżki - wartości testowe
Nazwy, które system plików odrzuca, zmienia albo czyta inaczej, niż chciał użytkownik. 12 wartości, każda z tym, co psuje, i z tym, co zamiast tego robi poprawna aplikacja.
Wpisuj je po jednej skrótem AltShiftN
w palecie albo weź wszystkie do skryptu poleceniem nkb emit filenames-paths.
Zarezerwowana nazwa urządzenia
filenames-paths/reserved-con
CON
CON
- 3 grafemy
- 3 punkty kodowe
- 3 bajty
- 3 jednostki UTF-16
- Co psuje
- Nazwa urządzenia zarezerwowana przez jeden z systemów operacyjnych. Pliku o tej nazwie nie da się utworzyć, a błąd często wychodzi jako ogólny komunikat.
- Co robi poprawna aplikacja
- Odrzucona przy wprowadzaniu z komunikatem, który nazywa zarezerwowane słowo, a nie dopiero przy zapisie.
Kropka na końcu
filenames-paths/trailing-dot
report.
report.
- 7 grafemów
- 7 punktów kodowych
- 7 bajtów
- 7 jednostek UTF-16
- Co psuje
- Niektóre systemy plików po cichu usuwają kropki na końcu, więc zapisana nazwa różni się od żądanej.
- Co robi poprawna aplikacja
- Odrzucona albo znormalizowana w widoczny sposób, żeby użytkownik zobaczył nazwę, która zostanie użyta.
Spacja na końcu nazwy pliku
filenames-paths/trailing-space-name
report
report\u0020
- kończy się spacją
- 7 grafemów
- 7 punktów kodowych
- 7 bajtów
- 7 jednostek UTF-16
- Co psuje
- Spacja na końcu nazwy pliku jest niewidoczna, raz usuwana, raz zachowywana - dwa pliki, które wyglądają identycznie.
- Co robi poprawna aplikacja
- Przycinana konsekwentnie, a wynikowa nazwa pokazana użytkownikowi.
Znaki zabronione w nazwach plików
filenames-paths/illegal-chars
a:b*c?d"e<f>g|h
a:b*c?d"e<f>g|h
- 15 grafemów
- 15 punktów kodowych
- 15 bajtów
- 15 jednostek UTF-16
- Co psuje
- Znaki dozwolone w jednym systemie i zabronione w innym. Pliku utworzonego na jednym komputerze nie da się skopiować na inny.
- Co robi poprawna aplikacja
- Odrzucone z nazwaniem zabronionych znaków, zanim plik powstanie.
Podwójne rozszerzenie
filenames-paths/double-extension
report.txt.exe
report.txt.exe
- 14 grafemów
- 14 punktów kodowych
- 14 bajtów
- 14 jednostek UTF-16
- Co psuje
- Interfejsy, które ukrywają znane rozszerzenia, pokazują to jako report.txt, więc użytkownik widzi dokument, a dostaje program.
- Co robi poprawna aplikacja
- Pełna nazwa pokazana wszędzie tam, gdzie użytkownik podejmuje decyzję o pliku.
Wymuszenie kierunku od prawej do lewej w nazwie pliku
filenames-paths/rtl-extension
reporttxt.exe
report\u202Etxt.exe
- 1 znak, który zmienia kierunek tekstu
- 14 grafemów
- 14 punktów kodowych
- 16 bajtów
- 14 jednostek UTF-16
- Co psuje
- Wymuszenie kierunku sprawia, że rozszerzenie czyta się od tyłu, więc program wygląda jak plik tekstowy.
- Co robi poprawna aplikacja
- Znaki sterujące kierunkiem usunięte albo zneutralizowane w każdym miejscu, które pokazuje nazwę pliku.
Pojedyncza kropka
filenames-paths/dot-only
.
.
- 1 grafem
- 1 punkt kodowy
- 1 bajt
- 1 jednostka UTF-16
- Co psuje
- Pojedyncza kropka znaczy „ten katalog”. Użyta jako nazwa pliku albo zawodzi, albo robi coś niezamierzonego.
- Co robi poprawna aplikacja
- Odrzucona przy wprowadzaniu.
Dwie kropki
filenames-paths/dotdot
..
..
- 2 grafemy
- 2 punkty kodowe
- 2 bajty
- 2 jednostki UTF-16
- Co psuje
- Dwie kropki to katalog nadrzędny - najkrótszy możliwy test wyjścia poza katalog (path traversal).
- Co robi poprawna aplikacja
- Odrzucone przy wprowadzaniu.
Kropka na początku
filenames-paths/leading-dot
.gitignore
.gitignore
- 10 grafemów
- 10 punktów kodowych
- 10 bajtów
- 10 jednostek UTF-16
- Co psuje
- Kropka na początku ukrywa plik w niektórych systemach, więc przesłany plik znika z list.
- Co robi poprawna aplikacja
- Przyjęta, a plik widoczny na listach niezależnie od kropki na początku.
Nazwa pliku spoza ASCII
filenames-paths/unicode-filename
ćwiczenieąę.txt
ćwiczenie ąę.txt
- 16 grafemów
- 16 punktów kodowych
- 19 bajtów
- 16 jednostek UTF-16
- Co psuje
- Nazwy spoza ASCII psują archiwa, przesyłanie i każdą warstwę, która zakłada wąskie kodowanie.
- Co robi poprawna aplikacja
- Zapisana, wylistowana, pobrana i zarchiwizowana z nienaruszoną nazwą.
260 znaków
filenames-paths/path-260
260 × a
- 260 grafemów
- 260 punktów kodowych
- 260 bajtów
- 260 jednostek UTF-16
- Co psuje
- Klasyczny limit długości ścieżki. Jego przekroczenie powoduje awarie daleko od miejsca, w którym wpisano nazwę.
- Co robi poprawna aplikacja
- Nazwa odrzucona z podanym limitem tam, gdzie się ją wpisuje.
Spacja w nazwie pliku
filenames-paths/space-in-name
myreport.txt
my report.txt
- 13 grafemów
- 13 punktów kodowych
- 13 bajtów
- 13 jednostek UTF-16
- Co psuje
- Nazwy ze spacjami psują budowanie poleceń i odnośniki, które nie są ujęte w cudzysłów albo zakodowane.
- Co robi poprawna aplikacja
- Obsłużona wszędzie, gdzie używana jest nazwa pliku, także w odnośnikach do pobrania.