mirror of
https://github.com/Fade78/Fileshed.git
synced 2026-04-28 11:30:20 +00:00
- Update version in Fileshed.py - Update README badges (version + tests count 1195) - Update Exec_tests.md version Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
60 KiB
60 KiB
Fileshed Test Execution Report
Version: 1.0.4 Tests executed: 1195/1195 Result: ✅ ALL PASSED Duration: 42.63s
| # | Status | Description |
|---|---|---|
| TEST-001 | ✅ | Liste simple du répertoire racine Storage |
| TEST-002 | ✅ | Liste détaillée avec -la |
| TEST-003 | ✅ | Liste d'un sous-dossier |
| TEST-004 | ✅ | Liste avec tri par taille |
| TEST-005 | ✅ | Liste avec tri par date |
| TEST-006 | ✅ | Liste récursive |
| TEST-007 | ✅ | Liste avec taille human-readable |
| TEST-008 | ✅ | Liste zone uploads |
| TEST-009 | ✅ | Liste zone documents |
| TEST-010 | ✅ | Liste zone group |
| TEST-011 | ✅ | Liste fichiers cachés uniquement |
| TEST-012 | ✅ | Liste avec inode |
| TEST-013 | ✅ | Liste un fichier spécifique |
| TEST-014 | ✅ | Liste avec glob pattern |
| TEST-015 | ✅ | Liste fichier inexistant |
| TEST-016 | ✅ | Liste avec -1 (un par ligne) |
| TEST-017 | ✅ | Liste avec -A (sans . et ..) |
| TEST-018 | ✅ | Liste zone invalide |
| TEST-019 | ✅ | Liste group sans paramètre group |
| TEST-020 | ✅ | Liste avec chemin absolu (bloqué) |
| TEST-021 | ✅ | Lecture fichier simple |
| TEST-022 | ✅ | Lecture avec numéros de ligne |
| TEST-023 | ✅ | Lecture fichier inexistant |
| TEST-024 | ✅ | Lecture multiple fichiers |
| TEST-025 | ✅ | Lecture zone uploads |
| TEST-026 | ✅ | Lecture zone documents |
| TEST-027 | ✅ | Lecture avec -b (numéros lignes non vides) |
| TEST-028 | ✅ | Lecture avec -s (squeeze blank) |
| TEST-029 | ✅ | Lecture avec -E ($ en fin de ligne) |
| TEST-030 | ✅ | Lecture fichier binaire (affichage tronqué) |
| TEST-031 | ✅ | Lecture fichier vide |
| TEST-032 | ✅ | Lecture fichier volumineux |
| TEST-033 | ✅ | Lecture avec path traversal (bloqué) |
| TEST-034 | ✅ | Lecture fichier dans sous-dossier |
| TEST-035 | ✅ | Lecture avec tac (reverse) |
| TEST-036 | ✅ | Head par défaut (10 lignes) |
| TEST-037 | ✅ | Head avec -n spécifique |
| TEST-038 | ✅ | Head avec -c (bytes) |
| TEST-039 | ✅ | Tail par défaut (10 lignes) |
| TEST-040 | ✅ | Tail avec -n spécifique |
| TEST-041 | ✅ | Tail avec +n (depuis ligne n) |
| TEST-042 | ✅ | Tail avec -c (bytes) |
| TEST-043 | ✅ | Head fichier vide |
| TEST-044 | ✅ | Tail fichier vide |
| TEST-045 | ✅ | Head multiple fichiers |
| TEST-046 | ✅ | Tail zone uploads |
| TEST-047 | ✅ | Head zone documents |
| TEST-048 | ✅ | Extraction lignes milieu avec sed |
| TEST-049 | ✅ | Head avec -q (quiet, pas de header) |
| TEST-050 | ✅ | Tail fichier inexistant |
| TEST-051 | ✅ | Grep pattern simple |
| TEST-052 | ✅ | Grep case insensitive |
| TEST-053 | ✅ | Grep avec numéros de ligne |
| TEST-054 | ✅ | Grep récursif |
| TEST-055 | ✅ | Grep avec contexte (-C) |
| TEST-056 | ✅ | Grep inverse (-v) |
| TEST-057 | ✅ | Grep count only (-c) |
| TEST-058 | ✅ | Grep files only (-l) |
| TEST-059 | ✅ | Grep regex étendu |
| TEST-060 | ✅ | Grep whole word (-w) |
| TEST-061 | ✅ | Egrep (alias grep -E) |
| TEST-062 | ✅ | Fgrep (fixed strings) |
| TEST-063 | ✅ | Grep avec --include |
| TEST-064 | ✅ | Grep avec --exclude |
| TEST-065 | ✅ | Grep aucun match |
| TEST-066 | ✅ | Find fichiers par pattern |
| TEST-067 | ✅ | Find fichiers par nom |
| TEST-068 | ✅ | Find par type (fichiers) |
| TEST-069 | ✅ | Find par type (dossiers) |
| TEST-070 | ✅ | Find avec -maxdepth |
| TEST-071 | ✅ | Awk print colonne |
| TEST-072 | ✅ | Awk avec délimiteur |
| TEST-073 | ✅ | Awk calcul |
| TEST-074 | ✅ | Awk filtrage regex |
| TEST-075 | ✅ | Awk NR (numéro ligne) |
| TEST-076 | ✅ | Sed substitution simple |
| TEST-077 | ✅ | Sed substitution globale |
| TEST-078 | ✅ | Sed delete ligne |
| TEST-079 | ✅ | Sed range de lignes |
| TEST-080 | ✅ | Sed avec regex |
| TEST-081 | ✅ | Sed insert ligne |
| TEST-082 | ✅ | Sed append ligne |
| TEST-083 | ✅ | Awk multiple colonnes |
| TEST-084 | ✅ | Sed multiple commandes |
| TEST-085 | ✅ | Awk BEGIN/END |
| TEST-086 | ✅ | Word count (wc) |
| TEST-087 | ✅ | Word count lignes seulement |
| TEST-088 | ✅ | Sort alphabétique |
| TEST-089 | ✅ | Sort numérique |
| TEST-090 | ✅ | Sort reverse |
| TEST-091 | ✅ | Uniq (supprimer doublons consécutifs) |
| TEST-092 | ✅ | Uniq avec count |
| TEST-093 | ✅ | Cut colonnes |
| TEST-094 | ✅ | Tr translate |
| TEST-095 | ✅ | Rev (reverse lines) |
| TEST-096 | ✅ | Nl (number lines) |
| TEST-097 | ✅ | Format text paragraphs |
| TEST-098 | ✅ | Fold (wrap lines) |
| TEST-099 | ✅ | Fmt (format paragraphes) |
| TEST-100 | ✅ | Paste (merge files) |
| TEST-101 | ✅ | Créer dossier simple |
| TEST-102 | ✅ | Créer arborescence (-p) |
| TEST-103 | ✅ | mkdir dossier existant (erreur) |
| TEST-104 | ✅ | mkdir -p dossier existant (ok) |
| TEST-105 | ✅ | mkdir zone documents |
| TEST-106 | ✅ | mkdir zone uploads (interdit) |
| TEST-107 | ✅ | touch créer fichier |
| TEST-108 | ✅ | touch fichier existant (update time) |
| TEST-109 | ✅ | touch multiple fichiers |
| TEST-110 | ✅ | touch dans sous-dossier |
| TEST-111 | ✅ | touch zone documents |
| TEST-112 | ✅ | touch zone group |
| TEST-113 | ✅ | mkdir avec verbose (-v) |
| TEST-114 | ✅ | touch avec timestamp spécifique |
| TEST-115 | ✅ | mkdir chemin avec espaces |
| TEST-116 | ✅ | Copie fichier simple |
| TEST-117 | ✅ | Copie dans dossier |
| TEST-118 | ✅ | Copie récursive |
| TEST-119 | ✅ | Copie avec préservation (-p) |
| TEST-120 | ✅ | Copie multiple fichiers |
| TEST-121 | ✅ | Move fichier |
| TEST-122 | ✅ | Move dans dossier |
| TEST-123 | ✅ | Move dossier |
| TEST-124 | ✅ | Remove fichier |
| TEST-125 | ✅ | Remove multiple fichiers |
| TEST-126 | ✅ | Remove dossier vide |
| TEST-127 | ✅ | Remove récursif |
| TEST-128 | ✅ | Remove avec force (-f) |
| TEST-129 | ✅ | Remove fichier inexistant (erreur) |
| TEST-130 | ✅ | cp zone documents |
| TEST-131 | ✅ | mv zone documents |
| TEST-132 | ✅ | rm zone documents |
| TEST-133 | ✅ | cp zone group |
| TEST-134 | ✅ | mv avec verbose (-v) |
| TEST-135 | ✅ | cp avec interactive (-i) - non interactif |
| TEST-136 | ✅ | rm dossier non vide sans -r (erreur) |
| TEST-137 | ✅ | cp avec backup (-b) |
| TEST-138 | ✅ | mv fichier vers lui-même |
| TEST-139 | ✅ | cp lien symbolique |
| TEST-140 | ✅ | rm avec glob pattern |
| TEST-141 | ✅ | Gzip compression |
| TEST-142 | ✅ | Gunzip décompression |
| TEST-143 | ✅ | Gzip keep original (-k) |
| TEST-144 | ✅ | Bzip2 compression |
| TEST-145 | ✅ | Bunzip2 décompression |
| TEST-146 | ✅ | Xz compression |
| TEST-147 | ✅ | Unxz décompression |
| TEST-148 | ✅ | Tar création archive |
| TEST-149 | ✅ | Tar extraction |
| TEST-150 | ✅ | Tar avec gzip (.tar.gz) |
| TEST-151 | ✅ | Tar extraction .tar.gz |
| TEST-152 | ✅ | Tar list contents |
| TEST-153 | ✅ | Zcat lecture compressé |
| TEST-154 | ✅ | Compression zone documents |
| TEST-155 | ✅ | Zstd compression - unavailable command |
| TEST-156 | ✅ | Git status |
| TEST-157 | ✅ | Git log |
| TEST-158 | ✅ | Git diff |
| TEST-159 | ✅ | Git diff HEAD~1 |
| TEST-160 | ✅ | Git show |
| TEST-161 | ✅ | Git branch list |
| TEST-162 | ✅ | Git rev-parse HEAD |
| TEST-163 | ✅ | Git log graph |
| TEST-164 | ✅ | Git blame |
| TEST-165 | ✅ | Git log fichier spécifique |
| TEST-166 | ✅ | Git zone group |
| TEST-167 | ✅ | Git shortlog |
| TEST-168 | ✅ | Git ls-files |
| TEST-169 | ✅ | Git zone storage (pas de repo auto) |
| TEST-170 | ✅ | Git stash (si supported) |
| TEST-171 | ✅ | Redirection simple |
| TEST-172 | ✅ | jq avec redirection |
| TEST-173 | ✅ | grep avec redirection |
| TEST-174 | ✅ | sort avec redirection |
| TEST-175 | ✅ | awk avec redirection |
| TEST-176 | ✅ | cat avec redirection (copie) |
| TEST-177 | ✅ | Redirection zone documents |
| TEST-178 | ✅ | Redirection écrase fichier existant |
| TEST-179 | ✅ | Redirection dans sous-dossier |
| TEST-180 | ✅ | stderr_file redirection |
| TEST-181 | ✅ | Créer fichier texte simple |
| TEST-182 | ✅ | Créer fichier dans sous-dossier |
| TEST-183 | ✅ | Créer fichier multiligne |
| TEST-184 | ✅ | Créer fichier vide |
| TEST-185 | ✅ | Créer fichier zone documents |
| TEST-186 | ✅ | Créer fichier zone documents avec message |
| TEST-187 | ✅ | Create file in group zone |
| TEST-188 | ✅ | Créer fichier avec caractères spéciaux |
| TEST-189 | ✅ | Créer fichier avec emoji |
| TEST-190 | ✅ | Créer fichier JSON |
| TEST-191 | ✅ | Créer fichier YAML |
| TEST-192 | ✅ | Créer fichier avec tabs |
| TEST-193 | ✅ | Créer fichier zone uploads (interdit) |
| TEST-194 | ✅ | Créer avec path traversal (bloqué) |
| TEST-195 | ✅ | Créer fichier volumineux |
| TEST-196 | ✅ | Créer fichier nom avec espaces |
| TEST-197 | ✅ | Créer fichier nom avec caractères spéciaux |
| TEST-198 | ✅ | Écraser fichier existant |
| TEST-199 | ✅ | Append to existing file with overwrite=False |
| TEST-200 | ✅ | Créer fichier groupe sans paramètre group |
| TEST-201 | ✅ | Append à la fin |
| TEST-202 | ✅ | Prepend au début |
| TEST-203 | ✅ | Append multiple fois |
| TEST-204 | ✅ | Insert avant ligne spécifique |
| TEST-205 | ✅ | Insert après ligne spécifique |
| TEST-206 | ✅ | Insert ligne 1 |
| TEST-207 | ✅ | Insert ligne invalide (0) |
| TEST-208 | ✅ | Insert ligne > nombre de lignes |
| TEST-209 | ✅ | Append zone documents |
| TEST-210 | ✅ | Append zone group |
| TEST-211 | ✅ | Insert avec message git |
| TEST-212 | ✅ | Append fichier inexistant |
| TEST-213 | ✅ | Prepend fichier vide |
| TEST-214 | ✅ | Append avec newline final |
| TEST-215 | ✅ | Insert multiligne |
| TEST-216 | ✅ | Append caractères binaires (peut échouer) |
| TEST-217 | ✅ | Insert très long contenu |
| TEST-218 | ✅ | Create new file in group where user is member |
| TEST-219 | ✅ | Create file named locked.txt (no actual lock) |
| TEST-220 | ✅ | Position invalide |
| TEST-221 | ✅ | Replace pattern simple |
| TEST-222 | ✅ | Replace pattern regex |
| TEST-223 | ✅ | Replace pattern non trouvé |
| TEST-224 | ✅ | Replace all occurrences with match_all=True |
| TEST-225 | ✅ | Replace first occurrence only (no match_all) |
| TEST-226 | ✅ | Replace with capture groups |
| TEST-227 | ✅ | Replace multiline pattern (line1 followed by line2) |
| TEST-228 | ✅ | Replace zone documents |
| TEST-229 | ✅ | Replace zone group |
| TEST-230 | ✅ | Replace avec message git |
| TEST-231 | ✅ | Replace pattern vide (invalide) |
| TEST-232 | ✅ | Replace avec caractères spéciaux regex |
| TEST-233 | ✅ | Replace case sensitive |
| TEST-234 | ✅ | Replace sur fichier binaire (échec) |
| TEST-235 | ✅ | Replace pattern avec newlines |
| TEST-236 | ✅ | Replace URL dans fichier |
| TEST-237 | ✅ | Replace avec quotes |
| TEST-238 | ✅ | Replace pattern regex complexe |
| TEST-239 | ✅ | Replace fichier entier via pattern .* |
| TEST-240 | ✅ | Replace par chaîne vide (suppression) |
| TEST-241 | ✅ | Path commençant par zone (erreur) |
| TEST-242 | ✅ | Path avec double slash |
| TEST-243 | ✅ | Path avec ./ |
| TEST-244 | ✅ | Fichier très long nom |
| TEST-245 | ✅ | Content None |
| TEST-246 | ✅ | Zone vide |
| TEST-247 | ✅ | Path vide |
| TEST-248 | ✅ | Création dans dossier inexistant (auto-création du parent) |
| TEST-249 | ✅ | Écrire sur un dossier |
| TEST-250 | ✅ | Group inexistant |
| TEST-251 | ✅ | Fichier trop grand (limite 50MB dépassée) |
| TEST-252 | ✅ | Fichier symlink |
| TEST-253 | ✅ | Replace sans pattern |
| TEST-254 | ✅ | Line sans position insert (paramètre ignoré) |
| TEST-255 | ✅ | Position before sans line |
| TEST-256 | ✅ | Écriture concurrent (autre session) |
| TEST-257 | ✅ | Caractères de contrôle dans contenu |
| TEST-258 | ✅ | BOM UTF-8 dans contenu |
| TEST-259 | ✅ | Très grande ligne (pas de newlines) |
| TEST-260 | ✅ | Replace_all sans occurrences (match_all=True) |
| TEST-261 | ✅ | Écrire bytes simples (base64) |
| TEST-262 | ✅ | Écrire image binaire (1x1 PNG) |
| TEST-263 | ✅ | Append bytes |
| TEST-264 | ✅ | Prepend bytes |
| TEST-265 | ✅ | Écrire bytes zone documents |
| TEST-266 | ✅ | Écrire bytes zone group |
| TEST-267 | ✅ | Hex invalide (caractères non-hex) |
| TEST-268 | ✅ | Écrire fichier exécutable (base64) |
| TEST-269 | ✅ | Bytes vides |
| TEST-270 | ✅ | Insert bytes à offset invalide (au-delà de la taille fichier |
| TEST-271 | ✅ | Bytes zone uploads (interdit) |
| TEST-272 | ✅ | Fichier binaire avec hex répété |
| TEST-273 | ✅ | Overwrite partiel d'un binaire |
| TEST-274 | ✅ | Append à fichier texte |
| TEST-275 | ✅ | Path traversal bytes |
| TEST-276 | ✅ | Bytes avec message git |
| TEST-277 | ✅ | Content None bytes |
| TEST-278 | ✅ | Offset négatif |
| TEST-279 | ✅ | Offset au-delà de la taille |
| TEST-280 | ✅ | Écrire PDF (en-tête valide, base64) |
| TEST-281 | ✅ | Écrire fichier ZIP (en-tête, base64) |
| TEST-282 | ✅ | Caractères non-ASCII dans hex (invalide) |
| TEST-283 | ✅ | Base64 avec whitespace |
| TEST-284 | ✅ | Créer fichier binaire nouveau |
| TEST-285 | ✅ | Créer fichier binaire dans groupe |
| TEST-286 | ✅ | Position invalide bytes |
| TEST-287 | ✅ | Bytes dans sous-dossier |
| TEST-288 | ✅ | Écrire NULL bytes |
| TEST-289 | ✅ | Base64 padding incorrect |
| TEST-290 | ✅ | Bytes group sans group param |
| TEST-291 | ✅ | Supprimer fichier simple |
| TEST-292 | ✅ | Supprimer dossier vide |
| TEST-293 | ✅ | Supprimer dossier (récursif) |
| TEST-294 | ✅ | Supprimer fichier zone documents |
| TEST-295 | ✅ | Supprimer fichier zone group |
| TEST-296 | ✅ | Supprimer fichier inexistant |
| TEST-297 | ✅ | Supprimer zone uploads |
| TEST-298 | ✅ | Supprimer avec path traversal |
| TEST-299 | ✅ | Supprimer racine zone (bloqué) |
| TEST-300 | ✅ | Supprimer fichier verrouillé |
| TEST-301 | ✅ | Supprimer fichier groupe mode owner_ro |
| TEST-302 | ✅ | Supprimer fichier avec espaces |
| TEST-303 | ✅ | Supprimer lien symbolique |
| TEST-304 | ✅ | Supprimer fichier binaire |
| TEST-305 | ✅ | Supprimer arborescence profonde |
| TEST-306 | ✅ | Supprimer fichier caché |
| TEST-307 | ✅ | Supprimer .git (devrait être bloqué) |
| TEST-308 | ✅ | Supprimer sans path |
| TEST-309 | ✅ | Supprimer groupe sans group param |
| TEST-310 | ✅ | Supprimer zone invalide |
| TEST-311 | ✅ | Supprimer avec message git |
| TEST-312 | ✅ | Supprimer fichier groupe autre membre |
| TEST-313 | ✅ | Supprimer dossier .git interne |
| TEST-314 | ✅ | Supprimer tous les fichiers (pattern) |
| TEST-315 | ✅ | Supprimer fichier volumineux |
| TEST-316 | ✅ | Supprimer fichier pendant lecture |
| TEST-317 | ✅ | Supprimer path avec caractères spéciaux |
| TEST-318 | ✅ | Supprimer fichier UTF-8 dans nom |
| TEST-319 | ✅ | Supprimer dossier contenant .gitkeep |
| TEST-320 | ✅ | Supprimer groupe non membre |
| TEST-321 | ✅ | Renommer fichier simple |
| TEST-322 | ✅ | Déplacer fichier dans dossier |
| TEST-323 | ✅ | Renommer dossier |
| TEST-324 | ✅ | Renommer zone documents |
| TEST-325 | ✅ | Renommer zone group |
| TEST-326 | ✅ | Renommer fichier inexistant |
| TEST-327 | ✅ | Renommer vers destination existante |
| TEST-328 | ✅ | Renommer zone uploads (interdit) |
| TEST-329 | ✅ | Renommer avec path traversal |
| TEST-330 | ✅ | Renommer fichier verrouillé |
| TEST-331 | ✅ | Renommer vers dossier inexistant (création auto) |
| TEST-332 | ✅ | Renommer fichier sur lui-même |
| TEST-333 | ✅ | Renommer avec changement d'extension |
| TEST-334 | ✅ | Renommer fichier binaire |
| TEST-335 | ✅ | Renommer arborescence |
| TEST-336 | ✅ | Renommer vers nom avec espaces |
| TEST-337 | ✅ | Renommer fichier caché |
| TEST-338 | ✅ | Renommer sans old_path |
| TEST-339 | ✅ | Renommer sans new_path |
| TEST-340 | ✅ | Renommer groupe sans group param |
| TEST-341 | ✅ | Renommer avec message git |
| TEST-342 | ✅ | Renommer dossier vers sous-dossier de lui-même |
| TEST-343 | ✅ | Renommer fichier UTF-8 |
| TEST-344 | ✅ | Renommer lien symbolique |
| TEST-345 | ✅ | Renommer fichier groupe mode owner |
| TEST-346 | ✅ | Renommer zone invalide |
| TEST-347 | ✅ | Renommer avec new_path commençant par zone |
| TEST-348 | ✅ | Renommer cross-zone (interdit) |
| TEST-349 | ✅ | Renommer fichier très gros |
| TEST-350 | ✅ | Renommer vers nom très long |
| TEST-351 | ✅ | Tree zone storage |
| TEST-352 | ✅ | Tree avec profondeur limitée |
| TEST-353 | ✅ | Tree d'un sous-dossier |
| TEST-354 | ✅ | Tree zone documents |
| TEST-355 | ✅ | Tree zone uploads |
| TEST-356 | ✅ | Tree zone group |
| TEST-357 | ✅ | Tree profondeur 0 |
| TEST-358 | ✅ | Tree profondeur très grande |
| TEST-359 | ✅ | Tree dossier vide |
| TEST-360 | ✅ | Tree dossier inexistant |
| TEST-361 | ✅ | Tree zone invalide |
| TEST-362 | ✅ | Tree group sans group param |
| TEST-363 | ✅ | Tree avec path traversal |
| TEST-364 | ✅ | Tree sur fichier (pas dossier) |
| TEST-365 | ✅ | Tree profondeur 1 |
| TEST-366 | ✅ | Tree arborescence profonde |
| TEST-367 | ✅ | Tree avec fichiers cachés |
| TEST-368 | ✅ | Tree groupe autre membre |
| TEST-369 | ✅ | Tree avec profondeur négative |
| TEST-370 | ✅ | Tree path avec espaces |
| TEST-371 | ✅ | Ouvrir fichier pour édition |
| TEST-372 | ✅ | Ouvrir fichier zone documents |
| TEST-373 | ✅ | Ouvrir fichier zone group |
| TEST-374 | ✅ | Ouvrir fichier inexistant |
| TEST-375 | ✅ | Ouvrir fichier déjà verrouillé (autre conversation) |
| TEST-376 | ✅ | Ouvrir fichier verrouillé par autre |
| TEST-377 | ✅ | Ouvrir zone uploads (interdit) |
| TEST-378 | ✅ | Ouvrir avec path traversal |
| TEST-379 | ✅ | Ouvrir dossier (interdit) |
| TEST-380 | ✅ | Ouvrir fichier binaire |
| TEST-381 | ✅ | Ouvrir zone invalide |
| TEST-382 | ✅ | Ouvrir group sans group param |
| TEST-383 | ✅ | Ouvrir fichier groupe mode owner_ro |
| TEST-384 | ✅ | Ouvrir fichier volumineux |
| TEST-385 | ✅ | Ouvrir sans path |
| TEST-386 | ✅ | Ouvrir fichier caché |
| TEST-387 | ✅ | Ouvrir fichier dans sous-dossier |
| TEST-388 | ✅ | Ouvrir groupe non membre |
| TEST-389 | ✅ | Ouvrir fichier symlink |
| TEST-390 | ✅ | Ouvrir plusieurs fichiers simultanément |
| TEST-391 | ✅ | Exec cat sur fichier verrouillé |
| TEST-392 | ✅ | Exec sed sur fichier verrouillé |
| TEST-393 | ✅ | Exec grep sur fichier verrouillé |
| TEST-394 | ✅ | Exec sur fichier non verrouillé |
| TEST-395 | ✅ | Exec commande rm (sans argument fichier) |
| TEST-396 | ✅ | Exec avec arguments dangereux |
| TEST-397 | ✅ | Exec head sur fichier verrouillé |
| TEST-398 | ✅ | Exec wc sur fichier verrouillé |
| TEST-399 | ✅ | Exec zone documents |
| TEST-400 | ✅ | Exec zone group |
| TEST-401 | ✅ | Exec awk sur fichier verrouillé |
| TEST-402 | ✅ | Exec sort sur fichier verrouillé |
| TEST-403 | ✅ | Exec sans cmd |
| TEST-404 | ✅ | Exec xxd (hexdump) sur binaire |
| TEST-405 | ✅ | Exec avec timeout dépassé |
| TEST-406 | ✅ | Overwrite fichier verrouillé |
| TEST-407 | ✅ | Append fichier verrouillé |
| TEST-408 | ✅ | Overwrite fichier non verrouillé |
| TEST-409 | ✅ | Overwrite zone documents |
| TEST-410 | ✅ | Overwrite zone group |
| TEST-411 | ✅ | Overwrite contenu vide |
| TEST-412 | ✅ | Append contenu multiligne |
| TEST-413 | ✅ | Overwrite contenu très long |
| TEST-414 | ✅ | Overwrite avec caractères spéciaux |
| TEST-415 | ✅ | Overwrite sans content |
| TEST-416 | ✅ | Append plusieurs fois |
| TEST-417 | ✅ | Overwrite fichier binaire avec texte |
| TEST-418 | ✅ | Overwrite group sans group param |
| TEST-419 | ✅ | Overwrite avec emojis |
| TEST-420 | ✅ | Append=False par défaut |
| TEST-421 | ✅ | Save fichier modifié |
| TEST-422 | ✅ | Save zone documents |
| TEST-423 | ✅ | Save fichier déjà sauvé (NOT_IN_EDIT_MODE) |
| TEST-424 | ✅ | Save zone group |
| TEST-425 | ✅ | Save fichier non verrouillé |
| TEST-426 | ✅ | Save fichier verrouillé par autre |
| TEST-427 | ✅ | Save sans modifications |
| TEST-428 | ✅ | Double save (déjà sauvé) |
| TEST-429 | ✅ | Save zone invalide |
| TEST-430 | ✅ | Save group sans group param |
| TEST-431 | ✅ | Save sans path |
| TEST-432 | ✅ | Save fichier non ouvert retourne NOT_IN_EDIT_MODE |
| TEST-433 | ✅ | Save fichier non ouvert retourne NOT_IN_EDIT_MODE |
| TEST-434 | ✅ | Save groupe déjà sauvé retourne NOT_IN_EDIT_MODE |
| TEST-435 | ✅ | Save puis réouvrir |
| TEST-436 | ✅ | Cancel édition |
| TEST-437 | ✅ | Cancel zone documents (workflow complet) |
| TEST-438 | ✅ | Cancel zone group (workflow complet) |
| TEST-439 | ✅ | Cancel fichier non verrouillé |
| TEST-440 | ✅ | Cancel fichier verrouillé par autre |
| TEST-441 | ✅ | Cancel après modifications |
| TEST-442 | ✅ | Cancel zone invalide |
| TEST-443 | ✅ | Cancel group sans group param |
| TEST-444 | ✅ | Cancel sans path |
| TEST-445 | ✅ | Double cancel |
| TEST-446 | ✅ | Cancel puis réouvrir |
| TEST-447 | ✅ | Cancel fichier binaire |
| TEST-448 | ✅ | Cancel groupe non membre |
| TEST-449 | ✅ | Cancel avec path traversal |
| TEST-450 | ✅ | Cancel fichier volumineux |
| TEST-451 | ✅ | Déplacer fichier uploads vers storage |
| TEST-452 | ✅ | Déplacer vers sous-dossier storage |
| TEST-453 | ✅ | Déplacer fichier inexistant |
| TEST-454 | ✅ | Déplacer vers destination existante |
| TEST-455 | ✅ | Déplacer fichier binaire |
| TEST-456 | ✅ | Déplacer fichier volumineux |
| TEST-457 | ✅ | Déplacer avec path traversal src |
| TEST-458 | ✅ | Déplacer avec path traversal dest |
| TEST-459 | ✅ | Déplacer sans src |
| TEST-460 | ✅ | Déplacer sans dest |
| TEST-461 | ✅ | Déplacer dossier entier |
| TEST-462 | ✅ | Déplacer avec renommage |
| TEST-463 | ✅ | Déplacer fichier caché |
| TEST-464 | ✅ | Déplacer vers dossier inexistant (création auto) |
| TEST-465 | ✅ | Déplacer fichier avec espaces |
| TEST-466 | ✅ | Déplacer fichier UTF-8 |
| TEST-467 | ✅ | Déplacer symlink |
| TEST-468 | ✅ | Vérifier suppression de la source |
| TEST-469 | ✅ | Déplacer gros fichier (move ne change pas le quota) |
| TEST-470 | ✅ | Déplacer dest commençant par Storage |
| TEST-471 | ✅ | Déplacer uploads vers documents |
| TEST-472 | ✅ | Déplacer avec message git |
| TEST-473 | ✅ | Déplacer fichier inexistant |
| TEST-474 | ✅ | Déplacer vers destination existante |
| TEST-475 | ✅ | Déplacer fichier binaire |
| TEST-476 | ✅ | Déplacer avec path traversal |
| TEST-477 | ✅ | Déplacer sans src |
| TEST-478 | ✅ | Déplacer fichier volumineux |
| TEST-479 | ✅ | Vérifier commit créé |
| TEST-480 | ✅ | Déplacer fichier UTF-8 |
| TEST-481 | ✅ | Déplacer vers sous-dossier profond |
| TEST-482 | ✅ | Déplacer avec espaces dans nom |
| TEST-483 | ✅ | Déplacer dest commençant par Documents |
| TEST-484 | ✅ | Déplacer gros fichier (move ne change pas le quota) |
| TEST-485 | ✅ | Message git par défaut |
| TEST-486 | ✅ | Copier storage vers documents |
| TEST-487 | ✅ | Copier avec message git |
| TEST-488 | ✅ | Copier fichier inexistant |
| TEST-489 | ✅ | Copier vers destination existante |
| TEST-490 | ✅ | Vérifier source non supprimée |
| TEST-491 | ✅ | Copier dossier |
| TEST-492 | ✅ | Copier fichier binaire |
| TEST-493 | ✅ | Copier avec path traversal |
| TEST-494 | ✅ | Copier fichier volumineux |
| TEST-495 | ✅ | Copier sans src |
| TEST-496 | ✅ | Copier vers sous-dossier |
| TEST-497 | ✅ | Copier fichier caché |
| TEST-498 | ✅ | Copier dest commençant par Documents |
| TEST-499 | ✅ | Copier gros fichier (quota non dépassé) |
| TEST-500 | ✅ | Copier fichier UTF-8 |
| TEST-501 | ✅ | Déplacer documents vers storage |
| TEST-502 | ✅ | Déplacer avec message git |
| TEST-503 | ✅ | Déplacer fichier inexistant |
| TEST-504 | ✅ | Déplacer vers destination existante |
| TEST-505 | ✅ | Vérifier source supprimée |
| TEST-506 | ✅ | Déplacer fichier binaire |
| TEST-507 | ✅ | Déplacer avec path traversal |
| TEST-508 | ✅ | Déplacer sans src |
| TEST-509 | ✅ | Déplacer fichier volumineux |
| TEST-510 | ✅ | Déplacer dossier |
| TEST-511 | ✅ | Déplacer dest commençant par Storage |
| TEST-512 | ✅ | Vérifier commit de suppression |
| TEST-513 | ✅ | Déplacer fichier avec espaces |
| TEST-514 | ✅ | Déplacer vers sous-dossier |
| TEST-515 | ✅ | Message git par défaut |
| TEST-516 | ✅ | Copier storage vers group |
| TEST-517 | ✅ | Copier documents vers group |
| TEST-518 | ✅ | Copier avec message git |
| TEST-519 | ✅ | Copier avec mode owner |
| TEST-520 | ✅ | Copier avec mode group |
| TEST-521 | ✅ | Copier avec mode owner_ro |
| TEST-522 | ✅ | Copier fichier inexistant |
| TEST-523 | ✅ | Copier vers destination existante |
| TEST-524 | ✅ | Copier vers groupe non membre |
| TEST-525 | ✅ | Copier sans group |
| TEST-526 | ✅ | Copier depuis uploads vers group |
| TEST-527 | ✅ | Copier avec path traversal |
| TEST-528 | ✅ | Copier mode invalide (fallback to group) |
| TEST-529 | ✅ | Copier fichier binaire vers group |
| TEST-530 | ✅ | Copier src_zone invalide |
| TEST-531 | ✅ | Créer ZIP d'un fichier |
| TEST-532 | ✅ | Créer ZIP d'un dossier |
| TEST-533 | ✅ | ZIP avec sous-dossiers |
| TEST-534 | ✅ | ZIP avec empty dirs |
| TEST-535 | ✅ | ZIP sans empty dirs |
| TEST-536 | ✅ | ZIP zone documents |
| TEST-537 | ✅ | ZIP zone group non supportée |
| TEST-538 | ✅ | ZIP source inexistante |
| TEST-539 | ✅ | ZIP destination existante |
| TEST-540 | ✅ | ZIP avec path traversal src |
| TEST-541 | ✅ | ZIP avec path traversal dest |
| TEST-542 | ✅ | ZIP fichier binaire |
| TEST-543 | ✅ | ZIP fichiers multiples (dossier) |
| TEST-544 | ✅ | ZIP zone uploads (lecture seule OK) |
| TEST-545 | ✅ | ZIP zone invalide |
| TEST-546 | ✅ | ZIP group non supporté |
| TEST-547 | ✅ | ZIP sans dest (auto-nommé) |
| TEST-548 | ✅ | ZIP fichier volumineux |
| TEST-549 | ✅ | ZIP fichier caché |
| TEST-550 | ✅ | ZIP avec espaces dans nom |
| TEST-551 | ✅ | ZIP fichier UTF-8 |
| TEST-552 | ✅ | ZIP dossier volumineux |
| TEST-553 | ✅ | ZIP dossier vide |
| TEST-554 | ✅ | ZIP dest dans sous-dossier |
| TEST-555 | ✅ | ZIP sans src |
| TEST-556 | ✅ | Extraire ZIP simple |
| TEST-557 | ✅ | Extraire ZIP dans racine |
| TEST-558 | ✅ | Extraire ZIP cross-zone (uploads vers storage) |
| TEST-559 | ✅ | Extraire ZIP zone documents |
| TEST-560 | ✅ | Extraire ZIP zone group non supportée |
| TEST-561 | ✅ | Extraire ZIP inexistant |
| TEST-562 | ✅ | Extraire fichier corrompu |
| TEST-563 | ✅ | Extraire ZIP vers destination existante |
| TEST-564 | ✅ | Extraire ZIP avec path traversal src |
| TEST-565 | ✅ | Extraire ZIP avec path traversal dest |
| TEST-566 | ✅ | Extraire ZIP avec structure profonde |
| TEST-567 | ✅ | Extraire ZIP zone invalide |
| TEST-568 | ✅ | Extraire ZIP zone group non supportée |
| TEST-569 | ✅ | Extraire ZIP binaire |
| TEST-570 | ✅ | Extraire ZIP avec mot de passe (non supporté) |
| TEST-571 | ✅ | Extraire ZIP volumineux |
| TEST-572 | ✅ | Extraire ZIP plus grand |
| TEST-573 | ✅ | Extraire ZIP fichiers UTF-8 |
| TEST-574 | ✅ | Extraire ZIP sans src |
| TEST-575 | ✅ | src_zone invalide |
| TEST-576 | ✅ | Info ZIP simple |
| TEST-577 | ✅ | Info ZIP avec tailles |
| TEST-578 | ✅ | Info ZIP zone documents |
| TEST-579 | ✅ | Info ZIP zone group sans paramètre group |
| TEST-580 | ✅ | Info ZIP inexistant |
| TEST-581 | ✅ | Info fichier corrompu |
| TEST-582 | ✅ | Info ZIP avec path traversal |
| TEST-583 | ✅ | Info ZIP zone invalide |
| TEST-584 | ✅ | Info ZIP zone group sans paramètre group |
| TEST-585 | ✅ | Info ZIP corrompu |
| TEST-586 | ✅ | Info ZIP vide |
| TEST-587 | ✅ | Info ZIP volumineux |
| TEST-588 | ✅ | Info ZIP sans path |
| TEST-589 | ✅ | Info ZIP fichiers UTF-8 |
| TEST-590 | ✅ | Info ZIP zone uploads |
| TEST-591 | ✅ | Import CSV simple |
| TEST-592 | ✅ | Import CSV avec headers |
| TEST-593 | ✅ | Import CSV sans headers |
| TEST-594 | ✅ | Import CSV délimiteur point-virgule |
| TEST-595 | ✅ | Import CSV délimiteur tab |
| TEST-596 | ✅ | Import CSV table existante (erreur) |
| TEST-597 | ✅ | Import CSV table existante if_exists=replace |
| TEST-598 | ✅ | Import CSV table existante if_exists=append |
| TEST-599 | ✅ | Import CSV fichier inexistant |
| TEST-600 | ✅ | Import CSV malformé |
| TEST-601 | ✅ | Import CSV vide |
| TEST-602 | ✅ | Import CSV zone documents |
| TEST-603 | ✅ | Import CSV zone group |
| TEST-604 | ✅ | Import CSV avec quotes |
| TEST-605 | ✅ | Import CSV UTF-8 |
| TEST-606 | ✅ | Import CSV volumineux |
| TEST-607 | ✅ | Import CSV avec path traversal |
| TEST-608 | ✅ | Import CSV nouvelle base |
| TEST-609 | ✅ | Import CSV sans table |
| TEST-610 | ✅ | Import CSV zone invalide |
| TEST-611 | ✅ | Import CSV group sans group |
| TEST-612 | ✅ | Import CSV colonnes nombreuses |
| TEST-613 | ✅ | Import CSV lignes nombreuses |
| TEST-614 | ✅ | Import CSV types mixtes |
| TEST-615 | ✅ | Import CSV zone uploads |
| TEST-616 | ✅ | Import CSV if_exists invalide |
| TEST-617 | ✅ | Import CSV délimiteur invalide |
| TEST-618 | ✅ | Import CSV depuis autre zone |
| TEST-619 | ✅ | Import CSV nom table avec tirets (invalide) |
| TEST-620 | ✅ | Import CSV overwrite base |
| TEST-621 | ✅ | SELECT simple |
| TEST-622 | ✅ | SELECT avec WHERE |
| TEST-623 | ✅ | SELECT avec ORDER BY |
| TEST-624 | ✅ | SELECT avec LIMIT |
| TEST-625 | ✅ | SELECT avec JOIN (table inexistante) |
| TEST-626 | ✅ | SELECT avec GROUP BY |
| TEST-627 | ✅ | SELECT avec HAVING |
| TEST-628 | ✅ | SELECT fonctions agrégation |
| TEST-629 | ✅ | SELECT COUNT |
| TEST-630 | ✅ | SELECT DISTINCT |
| TEST-631 | ✅ | CREATE TABLE |
| TEST-632 | ✅ | INSERT INTO |
| TEST-633 | ✅ | UPDATE |
| TEST-634 | ✅ | DELETE |
| TEST-635 | ✅ | ALTER TABLE |
| TEST-636 | ✅ | DROP TABLE |
| TEST-637 | ✅ | Requête sur table inexistante |
| TEST-638 | ✅ | Requête syntaxe invalide |
| TEST-639 | ✅ | Requête base inexistante |
| TEST-640 | ✅ | Requête zone documents |
| TEST-641 | ✅ | Requête zone group |
| TEST-642 | ✅ | Requête avec paramètres |
| TEST-643 | ✅ | Multiple statements (bloqué) |
| TEST-644 | ✅ | SELECT avec sous-requête |
| TEST-645 | ✅ | Requête UNION |
| TEST-646 | ✅ | Requête CASE |
| TEST-647 | ✅ | Requête zone invalide |
| TEST-648 | ✅ | Requête group sans group |
| TEST-649 | ✅ | Requête vide |
| TEST-650 | ✅ | Requête résultat volumineux |
| TEST-651 | ✅ | SELECT avec LIKE |
| TEST-652 | ✅ | SELECT avec NULL |
| TEST-653 | ✅ | Requête readonly activé |
| TEST-654 | ✅ | PRAGMA (si autorisé) |
| TEST-655 | ✅ | CREATE INDEX |
| TEST-656 | ✅ | Requête avec alias |
| TEST-657 | ✅ | Requête COALESCE |
| TEST-658 | ✅ | Requête date |
| TEST-659 | ✅ | Requête avec path traversal |
| TEST-660 | ✅ | Requête fichier non-SQLite |
| TEST-661 | ✅ | Export résultat vers CSV |
| TEST-662 | ✅ | Export avec filtre |
| TEST-663 | ✅ | Export résultat vide |
| TEST-664 | ✅ | Export zone documents |
| TEST-665 | ✅ | Export zone group |
| TEST-666 | ✅ | Export vers fichier existant |
| TEST-667 | ✅ | Export volumineux |
| TEST-668 | ✅ | Export avec path traversal |
| TEST-669 | ✅ | Export dans sous-dossier |
| TEST-670 | ✅ | Export données UTF-8 |
| TEST-671 | ✅ | Export avec NULL |
| TEST-672 | ✅ | Export agrégation |
| TEST-673 | ✅ | Export JOIN |
| TEST-674 | ✅ | Export quota dépassé |
| TEST-675 | ✅ | Export nom CSV avec espaces |
| TEST-676 | ✅ | Export sans query (import + export direct) |
| TEST-677 | ✅ | Export avec colonnes calculées |
| TEST-678 | ✅ | Export UNION |
| TEST-679 | ✅ | Export zone invalide |
| TEST-680 | ✅ | Export output_csv commençant par zone |
| TEST-681 | ✅ | Base corrompue |
| TEST-682 | ✅ | Base verrouillée |
| TEST-683 | ✅ | Timeout sur requête longue |
| TEST-684 | ✅ | Mémoire insuffisante |
| TEST-685 | ✅ | Import et query simultanés |
| TEST-686 | ✅ | Nom table SQL injection |
| TEST-687 | ✅ | Path base avec espaces |
| TEST-688 | ✅ | Base dans sous-dossier |
| TEST-689 | ✅ | VACUUM (si autorisé) |
| TEST-690 | ✅ | ATTACH DATABASE (bloqué sécurité) |
| TEST-691 | ✅ | Type fichier texte |
| TEST-692 | ✅ | Type fichier JSON |
| TEST-693 | ✅ | Type fichier PNG |
| TEST-694 | ✅ | Type fichier PDF |
| TEST-695 | ✅ | Type fichier ZIP |
| TEST-696 | ✅ | Type fichier inexistant |
| TEST-697 | ✅ | Type dossier |
| TEST-698 | ✅ | Type zone documents |
| TEST-699 | ✅ | Type zone group sans paramètre group |
| TEST-700 | ✅ | Type zone uploads |
| TEST-701 | ✅ | Type zone invalide |
| TEST-702 | ✅ | Type path traversal |
| TEST-703 | ✅ | Type fichier binaire inconnu |
| TEST-704 | ✅ | Type group sans group param |
| TEST-705 | ✅ | Type sans path |
| TEST-706 | ✅ | Convertir vers Unix (LF) |
| TEST-707 | ✅ | Convertir vers Windows (CRLF) |
| TEST-708 | ✅ | Convertir fichier déjà Unix |
| TEST-709 | ✅ | Convertir zone documents |
| TEST-710 | ✅ | Convertir fichier inexistant |
| TEST-711 | ✅ | Convertir binaire (erreur) |
| TEST-712 | ✅ | Convertir to invalide |
| TEST-713 | ✅ | Convertir zone uploads (interdit) |
| TEST-714 | ✅ | Convertir avec path traversal |
| TEST-715 | ✅ | Convertir fichier volumineux |
| TEST-716 | ✅ | Hexdump par défaut |
| TEST-717 | ✅ | Hexdump avec offset |
| TEST-718 | ✅ | Hexdump avec length |
| TEST-719 | ✅ | Hexdump offset + length |
| TEST-720 | ✅ | Hexdump fichier texte |
| TEST-721 | ✅ | Hexdump fichier inexistant |
| TEST-722 | ✅ | Hexdump zone documents |
| TEST-723 | ✅ | Hexdump offset négatif |
| TEST-724 | ✅ | Hexdump offset > taille |
| TEST-725 | ✅ | Hexdump path traversal |
| TEST-726 | ✅ | Force unlock fichier verrouillé |
| TEST-727 | ✅ | Force unlock fichier non verrouillé |
| TEST-728 | ✅ | Force unlock fichier inexistant |
| TEST-729 | ✅ | Force unlock zone documents |
| TEST-730 | ✅ | Force unlock zone group |
| TEST-731 | ✅ | Créer lien download |
| TEST-732 | ✅ | Créer lien zone documents (API non dispo) |
| TEST-733 | ✅ | Créer lien zone group (API non dispo) |
| TEST-734 | ✅ | Créer lien fichier inexistant |
| TEST-735 | ✅ | Créer lien dossier (interdit) |
| TEST-736 | ✅ | Créer lien zone uploads |
| TEST-737 | ✅ | Créer lien path traversal |
| TEST-738 | ✅ | Créer lien zone invalide |
| TEST-739 | ✅ | Créer lien group sans group |
| TEST-740 | ✅ | Créer lien sans path |
| TEST-741 | ✅ | Créer lien fichier binaire (API non dispo) |
| TEST-742 | ✅ | Créer lien fichier texte (fichier manquant) |
| TEST-743 | ✅ | Créer lien fichier ZIP (API non dispo) |
| TEST-744 | ✅ | Créer lien fichier avec espaces (fichier manquant) |
| TEST-745 | ✅ | Créer lien fichier UTF-8 (fichier manquant) |
| TEST-746 | ✅ | Créer plusieurs liens même fichier (fichier manquant) |
| TEST-747 | ✅ | Créer lien fichier volumineux (API non dispo) |
| TEST-748 | ✅ | Vérifier format clickable_link (fichier manquant) |
| TEST-749 | ✅ | Créer lien dans sous-dossier (fichier manquant) |
| TEST-750 | ✅ | Créer lien fichier caché (API non dispo) |
| TEST-751 | ✅ | Lister liens (skip - API non dispo) |
| TEST-752 | ✅ | Lister liens vide (skip - API non dispo) |
| TEST-753 | ✅ | Lister après création (skip - API non dispo) |
| TEST-754 | ✅ | Lister après suppression (skip - API non dispo) |
| TEST-755 | ✅ | Vérifier infos dans liste (skip - API non dispo) |
| TEST-756 | ✅ | Lister plusieurs liens (skip - API non dispo) |
| TEST-757 | ✅ | Lister liens différentes zones (skip - API non dispo) |
| TEST-758 | ✅ | Lister ne voit pas liens autres users (skip - API non dispo) |
| TEST-759 | ✅ | Lister liens groupe (skip - API non dispo) |
| TEST-760 | ✅ | Lister avec pagination (skip - API non dispo) |
| TEST-761 | ✅ | Supprimer lien (skip - API non dispo) |
| TEST-762 | ✅ | Supprimer lien inexistant (skip - API non dispo) |
| TEST-763 | ✅ | Supprimer sans file_id (skip - API non dispo) |
| TEST-764 | ✅ | Supprimer lien autre user (skip - API non dispo) |
| TEST-765 | ✅ | Supprimer puis vérifier liste (skip - API non dispo) |
| TEST-766 | ✅ | Double suppression (skip - API non dispo) |
| TEST-767 | ✅ | Supprimer ne supprime pas fichier (skip - API non dispo) |
| TEST-768 | ✅ | Supprimer lien zone documents (skip - API non dispo) |
| TEST-769 | ✅ | Supprimer lien zone group (skip - API non dispo) |
| TEST-770 | ✅ | file_id invalide format (skip - API non dispo) |
| TEST-771 | ✅ | Lister groupes (API non dispo) |
| TEST-772 | ✅ | Lister groupes vide (API non dispo) |
| TEST-773 | ✅ | Vérifier infos groupe (API non dispo) |
| TEST-774 | ✅ | Lister plusieurs groupes (API non dispo) |
| TEST-775 | ✅ | Groupe owner vs member (API non dispo) |
| TEST-776 | ✅ | Groupes ne voit pas groupes autres users (API non dispo) |
| TEST-777 | ✅ | Liste inclut groupes invité (API non dispo) |
| TEST-778 | ✅ | Ordre de liste (API non dispo) |
| TEST-779 | ✅ | Groupe avec nom spécial (API non dispo) |
| TEST-780 | ✅ | API groupes indisponible |
| TEST-781 | ✅ | Info groupe existant |
| TEST-782 | ✅ | Info groupe inexistant |
| TEST-783 | ✅ | Info groupe non membre |
| TEST-784 | ✅ | Info sans group |
| TEST-785 | ✅ | Vérifier membres dans info |
| TEST-786 | ✅ | Vérifier quota dans info |
| TEST-787 | ✅ | Info groupe avec beaucoup de membres |
| TEST-788 | ✅ | Vérifier owner dans info |
| TEST-789 | ✅ | Info groupe ID vs nom |
| TEST-790 | ✅ | Vérifier created_at dans info |
| TEST-791 | ✅ | Info groupe avec fichiers |
| TEST-792 | ✅ | Groupe ID caractères spéciaux |
| TEST-793 | ✅ | Info groupe inexistant |
| TEST-794 | ✅ | Info groupe description |
| TEST-795 | ✅ | Info groupe timeout |
| TEST-796 | ✅ | Changer mode vers owner |
| TEST-797 | ✅ | Changer mode vers group |
| TEST-798 | ✅ | Changer mode vers owner_ro |
| TEST-799 | ✅ | Changer mode fichier inexistant |
| TEST-800 | ✅ | Changer mode non owner |
| TEST-801 | ✅ | Changer mode invalide |
| TEST-802 | ✅ | Changer mode sans group |
| TEST-803 | ✅ | Changer mode sans path |
| TEST-804 | ✅ | Changer mode sans mode |
| TEST-805 | ✅ | Changer mode groupe non membre |
| TEST-806 | ✅ | Changer mode path traversal |
| TEST-807 | ✅ | Changer mode dossier |
| TEST-808 | ✅ | Vérifier mode après changement |
| TEST-809 | ✅ | Changer mode plusieurs fois |
| TEST-810 | ✅ | Groupe inexistant |
| TEST-811 | ✅ | Transférer ownership à non-membre |
| TEST-812 | ✅ | Transférer à non-membre invalide |
| TEST-813 | ✅ | Transférer fichier inexistant |
| TEST-814 | ✅ | Transférer non owner |
| TEST-815 | ✅ | Transférer sans group |
| TEST-816 | ✅ | Transférer sans path |
| TEST-817 | ✅ | Transférer sans new_owner |
| TEST-818 | ✅ | Transférer groupe non membre |
| TEST-819 | ✅ | Transférer path traversal |
| TEST-820 | ✅ | Transférer à soi-même |
| TEST-821 | ✅ | Vérifier owner après transfer |
| TEST-822 | ✅ | Transférer fichier mode owner_ro à soi-même |
| TEST-823 | ✅ | new_owner ID invalide format |
| TEST-824 | ✅ | Transférer dossier |
| TEST-825 | ✅ | Groupe inexistant |
| TEST-826 | ✅ | Double transfer échoue (non-membre) |
| TEST-827 | ✅ | Transférer fichier binaire à soi-même |
| TEST-828 | ✅ | Transférer fichier inexistant |
| TEST-829 | ✅ | new_owner par nom invalide |
| TEST-830 | ✅ | Transférer dans sous-dossier inexistant |
| TEST-831 | ✅ | Import fichier spécifique (pas de fichiers) |
| TEST-832 | ✅ | Import tous les fichiers (pas de fichiers) |
| TEST-833 | ✅ | Import fichier inexistant (pas de fichiers) |
| TEST-834 | ✅ | Import sans paramètres (pas de fichiers) |
| TEST-835 | ✅ | Import aucun fichier uploadé |
| TEST-836 | ✅ | Import fichier déjà importé (pas de fichiers) |
| TEST-837 | ✅ | Import fichier volumineux (pas de fichiers) |
| TEST-838 | ✅ | Vérifier fichiers dans uploads après import (pas de fichiers |
| TEST-839 | ✅ | Import multiple fichiers (pas de fichiers) |
| TEST-840 | ✅ | Import avec path traversal (pas de fichiers) |
| TEST-841 | ✅ | Import fichier avec espaces (pas de fichiers) |
| TEST-842 | ✅ | Import fichier UTF-8 (pas de fichiers) |
| TEST-843 | ✅ | Import retourne liste (pas de fichiers) |
| TEST-844 | ✅ | Import filename vide (pas de fichiers) |
| TEST-845 | ✅ | Import filename et import_all (pas de fichiers) |
| TEST-846 | ✅ | Aide générale |
| TEST-847 | ✅ | Aide howto paths |
| TEST-848 | ✅ | Aide howto zones (invalide) |
| TEST-849 | ✅ | Aide howto commands |
| TEST-850 | ✅ | Aide howto csv_to_sqlite |
| TEST-851 | ✅ | Aide howto download |
| TEST-852 | ✅ | Aide howto edit |
| TEST-853 | ✅ | Aide howto share |
| TEST-854 | ✅ | Aide howto invalide |
| TEST-855 | ✅ | Aide howto vide |
| TEST-856 | ✅ | Aide contient liste fonctions |
| TEST-857 | ✅ | Aide format markdown |
| TEST-858 | ✅ | Aide howto upload |
| TEST-859 | ✅ | Aide howto network |
| TEST-860 | ✅ | Aide howto case insensitive |
| TEST-861 | ✅ | Stats utilisateur |
| TEST-862 | ✅ | Stats contient usage |
| TEST-863 | ✅ | Stats contient zones |
| TEST-864 | ✅ | Stats file count |
| TEST-865 | ✅ | Stats groupes |
| TEST-866 | ✅ | Parameters |
| TEST-867 | ✅ | Parameters contient quotas |
| TEST-868 | ✅ | Parameters contient timeouts |
| TEST-869 | ✅ | Parameters contient network_mode |
| TEST-870 | ✅ | Parameters contient limites |
| TEST-871 | ✅ | Allowed commands |
| TEST-872 | ✅ | Allowed commands par zone |
| TEST-873 | ✅ | Allowed commands contient basiques |
| TEST-874 | ✅ | Allowed commands network |
| TEST-875 | ✅ | Maintenance |
| TEST-876 | ✅ | Maintenance nettoie locks expirés |
| TEST-877 | ✅ | Maintenance sans locks expirés |
| TEST-878 | ✅ | Stats après opérations |
| TEST-879 | ✅ | Parameters version |
| TEST-880 | ✅ | Allowed commands git |
| TEST-881 | ✅ | Path traversal simple |
| TEST-882 | ✅ | Path traversal encodé (non décodé) |
| TEST-883 | ✅ | Path traversal double encodé (non décodé) |
| TEST-884 | ✅ | Path avec ../ interne |
| TEST-885 | ✅ | Symlink escape (symlink non existant) |
| TEST-886 | ✅ | Path absolu |
| TEST-887 | ✅ | Path avec null byte |
| TEST-888 | ✅ | Path avec backslash (Linux: pas un séparateur) |
| TEST-889 | ✅ | Traversal via stdout_file |
| TEST-890 | ✅ | Traversal via stderr_file |
| TEST-891 | ✅ | Traversal shed_patch_text |
| TEST-892 | ✅ | Traversal shed_delete |
| TEST-893 | ✅ | Traversal shed_rename dest |
| TEST-894 | ✅ | Traversal shed_zip dest |
| TEST-895 | ✅ | Traversal shed_sqlite path |
| TEST-896 | ✅ | Injection point-virgule |
| TEST-897 | ✅ | Injection pipe |
| TEST-898 | ✅ | Injection && |
| TEST-899 | ✅ | Injection backticks |
| TEST-900 | ✅ | Injection $() |
| TEST-901 | ✅ | Injection > |
| TEST-902 | ✅ | Injection >> |
| TEST-903 | ✅ | Commande non whitelist |
| TEST-904 | ✅ | Commande rm -rf / |
| TEST-905 | ✅ | Commande curl sans -o (network disabled) |
| TEST-906 | ✅ | Commande wget (network disabled) |
| TEST-907 | ✅ | Network disabled |
| TEST-908 | ✅ | Find -exec bloqué |
| TEST-909 | ✅ | Awk system() bloqué |
| TEST-910 | ✅ | Xargs bloqué |
| TEST-911 | ✅ | Injection newline |
| TEST-912 | ✅ | SQL injection shed_sqlite |
| TEST-913 | ✅ | Table name injection |
| TEST-914 | ✅ | Commande vide |
| TEST-915 | ✅ | Commande avec espaces |
| TEST-916 | ✅ | Fichier trop grand storage |
| TEST-917 | ✅ | Fichier trop grand documents |
| TEST-918 | ✅ | Fichier trop grand group |
| TEST-919 | ✅ | shed_patch_bytes simple |
| TEST-920 | ✅ | Zone uploads readonly (write) |
| TEST-921 | ✅ | Zone uploads readonly (mkdir) |
| TEST-922 | ✅ | Group access denied |
| TEST-923 | ✅ | Group file mode owner (fichier inexistant) |
| TEST-924 | ✅ | Group file mode owner_ro (fichier inexistant) |
| TEST-925 | ✅ | Group file delete mode owner (fichier créé par TEST-923) |
| TEST-926 | ✅ | Timeout commande longue |
| TEST-927 | ✅ | Mémoire limite subprocess (contient <) |
| TEST-928 | ✅ | CPU limite subprocess |
| TEST-929 | ✅ | Output truncation |
| TEST-930 | ✅ | Lock expiration |
| TEST-931 | ✅ | User ID test via stats |
| TEST-932 | ✅ | Conversation ID test via stats |
| TEST-933 | ✅ | Zone group vide |
| TEST-934 | ✅ | Group ID caractères interdits |
| TEST-935 | ✅ | Path commençant par zone |
| TEST-936 | ✅ | Output fichier inexistant |
| TEST-937 | ✅ | Locked edit sans verrouillage |
| TEST-938 | ✅ | Download link delete (API non dispo) |
| TEST-939 | ✅ | Unzip fichier inexistant |
| TEST-940 | ✅ | Network disabled (curl) |
| TEST-941 | ✅ | Workflow upload -> storage -> zip -> link |
| TEST-942 | ✅ | Workflow CSV -> SQLite -> analyse |
| TEST-943 | ✅ | Workflow multiple CSV -> SQLite -> JOIN |
| TEST-944 | ✅ | Workflow document versioning |
| TEST-945 | ✅ | Workflow locked edit complet |
| TEST-946 | ✅ | Workflow group collaboration |
| TEST-947 | ✅ | Workflow media processing |
| TEST-948 | ✅ | Workflow pandoc conversion |
| TEST-949 | ✅ | Workflow archive multi-fichiers |
| TEST-950 | ✅ | Workflow backup complet |
| TEST-951 | ✅ | Workflow cross-zone |
| TEST-952 | ✅ | Workflow analyse texte |
| TEST-953 | ✅ | Workflow JSON processing |
| TEST-954 | ✅ | Workflow documents Git history |
| TEST-955 | ✅ | Workflow cleanup |
| TEST-956 | ✅ | Workflow batch file creation |
| TEST-957 | ✅ | Workflow SQLite multi-operations |
| TEST-958 | ✅ | Workflow downloads bulk |
| TEST-959 | ✅ | Workflow error recovery |
| TEST-960 | ✅ | Workflow permissions group |
| TEST-961 | ✅ | Fichier nom très long |
| TEST-962 | ✅ | Arborescence très profonde |
| TEST-963 | ✅ | Beaucoup de fichiers dans dossier |
| TEST-964 | ✅ | Fichier avec tous caractères UTF-8 |
| TEST-965 | ✅ | Fichier avec emojis dans contenu |
| TEST-966 | ✅ | Fichier avec emojis dans nom |
| TEST-967 | ✅ | Opérations simultanées même fichier |
| TEST-968 | ✅ | Requête SQL résultat géant |
| TEST-969 | ✅ | ZIP récursif (zip de zip) |
| TEST-970 | ✅ | Unzip dans lui-même |
| TEST-971 | ✅ | SQLite database locked |
| TEST-972 | ✅ | Git repo status |
| TEST-973 | ✅ | Fichier sparse |
| TEST-974 | ✅ | Timeout très court custom |
| TEST-975 | ✅ | Output exactement à la limite |
| TEST-976 | ✅ | Binary dans text function |
| TEST-977 | ✅ | Text dans binary function |
| TEST-978 | ✅ | Circular symlinks |
| TEST-979 | ✅ | Fichier sans permission lecture |
| TEST-980 | ✅ | Zone avec caractères spéciaux |
| TEST-981 | ✅ | Commande avec timeout=0 |
| TEST-982 | ✅ | Très grand nombre de locks |
| TEST-983 | ✅ | Pattern regex catastrophique |
| TEST-984 | ✅ | Import fichier 0 bytes |
| TEST-985 | ✅ | SQLite table avec 0 colonnes |
| TEST-986 | ✅ | Nom fichier uniquement extension |
| TEST-987 | ✅ | Nom fichier uniquement point |
| TEST-988 | ✅ | Nom fichier deux points |
| TEST-989 | ✅ | Commande avec arguments très longs |
| TEST-990 | ✅ | Beaucoup de groupes |
| TEST-991 | ✅ | Download link fichier supprimé |
| TEST-992 | ✅ | Concurrent SQLite write |
| TEST-993 | ✅ | Fichier avec newlines dans nom |
| TEST-994 | ✅ | Base SQLite avec schéma complexe |
| TEST-995 | ✅ | Workflow complet données pays |
| TEST-996 | ✅ | Recovery après crash |
| TEST-997 | ✅ | Stress test sequential |
| TEST-998 | ✅ | Toutes les zones en une session |
| TEST-999 | ✅ | Toutes les fonctions help |
| TEST-1000 | ✅ | Test final - workflow complet end-to-end |
| TEST-1001 | ✅ | shed_help howto download |
| TEST-1002 | ✅ | shed_help howto csv_to_sqlite |
| TEST-1003 | ✅ | shed_help howto upload |
| TEST-1004 | ✅ | shed_help howto share |
| TEST-1005 | ✅ | shed_help howto edit |
| TEST-1006 | ✅ | shed_help howto commands |
| TEST-1007 | ✅ | shed_help howto network |
| TEST-1008 | ✅ | shed_help howto paths |
| TEST-1009 | ✅ | shed_help howto large_files |
| TEST-1010 | ✅ | shed_help howto zones (non existant) |
| TEST-1011 | ✅ | shed_help howto groups (non existant) |
| TEST-1012 | ✅ | shed_help howto sqlite (non existant) |
| TEST-1013 | ✅ | shed_help howto full |
| TEST-1014 | ✅ | shed_help howto invalide |
| TEST-1015 | ✅ | shed_exec avec stdout_file |
| TEST-1016 | ✅ | shed_exec jq avec stdout_file |
| TEST-1017 | ✅ | shed_exec avec stderr_file |
| TEST-1018 | ✅ | shed_exec avec stdout_file et stderr_file |
| TEST-1019 | ✅ | shed_exec stdout_file dans sous-dossier |
| TEST-1020 | ✅ | shed_exec stdout_file path escape |
| TEST-1021 | ✅ | shed_exec cat vers stdout_file |
| TEST-1022 | ✅ | shed_exec grep vers stdout_file |
| TEST-1023 | ✅ | shed_unzip avec src_zone uploads |
| TEST-1024 | ✅ | shed_unzip src_zone même zone |
| TEST-1025 | ✅ | shed_unzip src_zone documents |
| TEST-1026 | ✅ | shed_unzip src_zone invalide |
| TEST-1027 | ✅ | shed_unzip src_zone groupe (non supporté) |
| TEST-1028 | ✅ | shed_unzip src_zone vide (défaut) |
| TEST-1029 | ✅ | shed_zip avec include_empty_dirs=True |
| TEST-1030 | ✅ | shed_zip avec include_empty_dirs=False |
| TEST-1031 | ✅ | shed_zip défaut (sans include_empty_dirs) |
| TEST-1032 | ✅ | shed_zip fichier unique avec include_empty_dirs |
| TEST-1033 | ✅ | shed_zip dossier non-existant |
| TEST-1034 | ✅ | CSV import avec délimiteur point-virgule |
| TEST-1035 | ✅ | CSV import avec délimiteur tabulation |
| TEST-1036 | ✅ | CSV import avec encoding latin-1 |
| TEST-1037 | ✅ | CSV import avec encoding utf-8 explicite |
| TEST-1038 | ✅ | CSV import avec décimal virgule |
| TEST-1039 | ✅ | CSV import avec date_columns |
| TEST-1040 | ✅ | CSV import avec date_format dayfirst |
| TEST-1041 | ✅ | CSV import complet européen |
| TEST-1042 | ✅ | CSV import avec if_exists replace |
| TEST-1043 | ✅ | CSV import avec if_exists append |
| TEST-1044 | ✅ | CSV import avec if_exists fail (table existe) |
| TEST-1045 | ✅ | CSV import encoding invalide |
| TEST-1046 | ✅ | ZIP bomb potentiel (fichier n'existe pas) |
| TEST-1047 | ✅ | shed_allowed_commands vérifie liste |
| TEST-1048 | ✅ | shed_exec commande non dans whitelist |
| TEST-1049 | ✅ | shed_patch_text overwrite sans overwrite=True sur fichier ex |
| TEST-1050 | ✅ | shed_sqlite readonly mode |
| TEST-1051 | ✅ | Argument avec backtick |
| TEST-1052 | ✅ | Argument avec $() |
| TEST-1053 | ✅ | Argument avec ${ |
| TEST-1054 | ✅ | find avec -exec bloqué |
| TEST-1055 | ✅ | awk avec system() bloqué |
| TEST-1056 | ✅ | shed_exec timeout personnalisé valide |
| TEST-1057 | ✅ | shed_exec timeout maximum |
| TEST-1058 | ✅ | shed_exec timeout dépassant max |
| TEST-1059 | ✅ | shed_patch_text avec message dans documents |
| TEST-1060 | ✅ | shed_rename avec message dans documents |
| TEST-1061 | ✅ | shed_exec avec max_output="" - doit nommer le paramètre faut |
| TEST-1062 | ✅ | shed_patch_text avec line="" - doit indiquer le type attendu |
| TEST-1063 | ✅ | shed_patch_text avec end_line="" - doit indiquer le type att |
| TEST-1064 | ✅ | shed_patch_bytes avec offset="" - doit nommer le paramètre |
| TEST-1065 | ✅ | shed_patch_bytes avec length="" - doit nommer le paramètre |
| TEST-1066 | ✅ | shed_lockedit_exec avec timeout="" - doit nommer le paramètr |
| TEST-1067 | ✅ | shed_hexdump avec offset=None - conversion silencieuse en 0 |
| TEST-1068 | ✅ | shed_hexdump avec length=None - conversion silencieuse en 25 |
| TEST-1069 | ✅ | shed_patch_text avec regex_flags=0 - doit indiquer type stri |
| TEST-1070 | ✅ | shed_convert_eol avec to=None - doit lister les valeurs vali |
| TEST-1071 | ✅ | shed_convert_eol avec to=0 - doit lister les valeurs valides |
| TEST-1072 | ✅ | shed_sqlite avec skip_rows=None - conversion silencieuse en |
| TEST-1073 | ✅ | shed_sqlite avec import_csv ET query - doit expliquer l'excl |
| TEST-1074 | ✅ | shed_sqlite avec query="" et import_csv fourni - query="" ig |
| TEST-1075 | ✅ | shed_exec avec max_output=0 - utilise max absolu (comporteme |
| TEST-1076 | ✅ | shed_sqlite avec limit=0 - pas de limite (comportement docum |
| TEST-1077 | ✅ | shed_tree avec depth=0 - converti en 1 (minimum) |
| TEST-1078 | ✅ | shed_patch_bytes avec offset=0 - début du fichier (valide) |
| TEST-1079 | ✅ | shed_patch_text overwrite=True avec end_line=0 - ignoré sile |
| TEST-1080 | ✅ | shed_patch_text overwrite=True avec pattern="" - ignoré sile |
| TEST-1081 | ✅ | shed_patch_text overwrite=True avec line=0 - ignoré silencie |
| TEST-1082 | ✅ | shed_patch_text overwrite=True avec regex_flags=0 - ignoré s |
| TEST-1083 | ✅ | shed_exec avec args=0 - converti silencieusement en [] |
| TEST-1084 | ✅ | shed_lockedit_exec avec args=[] explicite puis argument - va |
| TEST-1085 | ✅ | shed_patch_text avec position="overwrite" ET overwrite=True |
| TEST-1086 | ✅ | shed_patch_text avec position="overwrite" SANS overwrite=Tru |
| TEST-1087 | ✅ | attach database minuscules (bloqué sécurité) |
| TEST-1088 | ✅ | DETACH majuscules (bloqué sécurité) |
| TEST-1089 | ✅ | detach minuscules (bloqué sécurité) |
| TEST-1090 | ✅ | load_extension minuscules (bloqué sécurité) |
| TEST-1091 | ✅ | Attach DATABASE casse mixte (bloqué sécurité) |
| TEST-1092 | ✅ | shed_move_uploads_to_storage sans overwrite sur fichier exis |
| TEST-1093 | ✅ | shed_move_uploads_to_storage avec overwrite=True sur fichier |
| TEST-1094 | ✅ | shed_copy_storage_to_documents sans overwrite sur fichier ex |
| TEST-1095 | ✅ | shed_copy_storage_to_documents avec overwrite=True sur fichi |
| TEST-1096 | ✅ | shed_move_documents_to_storage sans overwrite sur fichier ex |
| TEST-1097 | ✅ | shed_move_documents_to_storage avec overwrite=True sur fichi |
| TEST-1098 | ✅ | shed_move_uploads_to_documents sans overwrite sur fichier ex |
| TEST-1099 | ✅ | shed_move_uploads_to_documents avec overwrite=True sur fichi |
| TEST-1100 | ✅ | shed_copy_to_group sans overwrite sur fichier existant |
| TEST-1101 | ✅ | shed_copy_to_group avec overwrite=True sur fichier existant |
| TEST-1102 | ✅ | Création fichier texte simple storage |
| TEST-1103 | ✅ | Création fichier texte documents avec message |
| TEST-1104 | ✅ | Création fichier texte group |
| TEST-1105 | ✅ | Création fichier UTF-8 |
| TEST-1106 | ✅ | Création fichier vide |
| TEST-1107 | ✅ | Création fichier multilignes |
| TEST-1108 | ✅ | Création dans sous-dossier existant |
| TEST-1109 | ✅ | Création dans sous-dossier inexistant (auto-création) |
| TEST-1110 | ✅ | Écrasement fichier existant (comportement par défaut) |
| TEST-1111 | ✅ | Création avec nom contenant espaces |
| TEST-1112 | ✅ | Création zone uploads (interdit) |
| TEST-1113 | ✅ | Création zone invalide |
| TEST-1114 | ✅ | Création group sans group |
| TEST-1115 | ✅ | Création avec path traversal |
| TEST-1116 | ✅ | Création binaire hex format |
| TEST-1117 | ✅ | Création binaire base64 format |
| TEST-1118 | ✅ | Création binaire raw format |
| TEST-1119 | ✅ | Création binaire documents |
| TEST-1120 | ✅ | Création binaire group |
| TEST-1121 | ✅ | Création binaire vide (hex) |
| TEST-1122 | ✅ | Création binaire hex invalide (longueur impaire) |
| TEST-1123 | ✅ | Création binaire hex invalide (caractères) |
| TEST-1124 | ✅ | Création binaire base64 invalide |
| TEST-1125 | ✅ | file_type invalide |
| TEST-1126 | ✅ | content_format invalide |
| TEST-1127 | ✅ | Création binaire écrase fichier existant |
| TEST-1128 | ✅ | Création binaire dans sous-dossier |
| TEST-1129 | ✅ | Création binaire avec path traversal |
| TEST-1130 | ✅ | Création binaire zone uploads (interdit) |
| TEST-1131 | ✅ | Création group avec mode owner |
| TEST-1132 | ✅ | Création group avec mode owner_ro |
| TEST-1133 | ✅ | Création group avec mode invalide (converti silencieusement |
| TEST-1134 | ✅ | Création documents avec message vide |
| TEST-1135 | ✅ | Création avec content vide (valide) |
| TEST-1136 | ✅ | Création sans path (paramètre requis) |
| TEST-1137 | ✅ | Création path commençant par zone (bloqué) |
| TEST-1138 | ✅ | Création path commençant par zone avec allow_zone_in_path |
| TEST-1139 | ✅ | Création fichier JSON valide |
| TEST-1140 | ✅ | Création fichier avec contenu très long |
| TEST-1141 | ✅ | Modification .git/config (NON protégé actuellement) |
| TEST-1142 | ✅ | Suppression .git/HEAD (bloqué) |
| TEST-1143 | ✅ | Renommage .git (NON protégé actuellement) |
| TEST-1144 | ✅ | shed_exec rm sur .git (NON protégé actuellement) |
| TEST-1145 | ✅ | Création fichier dans .git (NON protégé actuellement) |
| TEST-1146 | ✅ | curl sans -o (réseau désactivé) |
| TEST-1147 | ✅ | wget sans -O (réseau désactivé) |
| TEST-1148 | ✅ | git clone sans destination (réseau désactivé) |
| TEST-1149 | ✅ | curl avec -o valide (réseau désactivé) |
| TEST-1150 | ✅ | wget avec -O valide (réseau désactivé) |
| TEST-1151 | ✅ | Import CSV complètement vide |
| TEST-1152 | ✅ | Import CSV avec headers seulement (pas de données) |
| TEST-1153 | ✅ | Import CSV avec lignes vides uniquement |
| TEST-1154 | ✅ | Opération sur zone root (chemin vide) |
| TEST-1155 | ✅ | Opération sur zone root (chemin .) |
| TEST-1156 | ✅ | Renommage de la racine (path="." échoue) |
| TEST-1157 | ✅ | shed_tree sur chemin null |
| TEST-1158 | ✅ | shed_hexdump sur répertoire |
| TEST-1159 | ✅ | Suppression lien (API indisponible en test) |
| TEST-1160 | ✅ | Liste liens (API indisponible en test) |
| TEST-1161 | ✅ | Création lien sur fichier inexistant |
| TEST-1162 | ✅ | CSV avec trop de colonnes (5001+) |
| TEST-1163 | ✅ | shed_lockedit_save sans open préalable |
| TEST-1164 | ✅ | shed_force_unlock sur fichier non verrouillé |
| TEST-1165 | ✅ | shed_sqlite sur fichier non-SQLite (SQLite l'ouvre quand mêm |
| TEST-1166 | ✅ | shed_unzip sur fichier non-ZIP |
| TEST-1167 | ✅ | shed_zipinfo sur fichier non-ZIP |
| TEST-1168 | ✅ | shed_convert_eol format invalide |
| TEST-1169 | ✅ | shed_group_chown vers utilisateur invalide |
| TEST-1170 | ✅ | shed_sqlite query vide |
| TEST-1171 | ✅ | shed_link_delete avec file_id None |
| TEST-1172 | ✅ | shed_link_delete avec file_id vide |
| TEST-1173 | ✅ | Import CSV vide avec has_header=False |
| TEST-1174 | ✅ | Import CSV avec uniquement whitespace (traité comme données |
| TEST-1175 | ✅ | Import CSV headers-only réussit (0 lignes importées) |
| TEST-1176 | ✅ | Import CSV binaire est traité comme texte corrompu (réussit |
| TEST-1177 | ✅ | Import CSV avec encoding invalide (réussit avec données corr |
| TEST-1178 | ✅ | Import CSV avec colonnes inconsistantes (padding automatique |
| TEST-1179 | ✅ | ZIP avec 100 fichiers (sous le seuil de 10000) |
| TEST-1180 | ✅ | ZIP avec ratio de compression > 100:1 déclenche ZIP_BOMB |
| TEST-1181 | ✅ | ZIP avec 100MB de données répétées déclenche ZIP_BOMB (ratio |
| TEST-1182 | ✅ | Écriture fichier dépassant quota utilisateur |
| TEST-1183 | ✅ | Patch dépassant quota |
| TEST-1184 | ✅ | Copie vers groupe dépassant quota groupe |
| TEST-1185 | ✅ | curl sans -o ni stdout_file |
| TEST-1186 | ✅ | curl avec -L mais sans -o |
| TEST-1187 | ✅ | wget sans -O |
| TEST-1188 | ✅ | curl avec -o fonctionne (contrôle positif) |
| TEST-1189 | ✅ | User ID non-UUID (texte simple) |
| TEST-1190 | ✅ | User ID vide |
| TEST-1191 | ✅ | User ID None |
| TEST-1192 | ✅ | User ID avec espaces seulement |
| TEST-1193 | ✅ | shed_link_create sans user id (validation échoue d'abord) |
| TEST-1194 | ✅ | shed_link_list sans user id |
| TEST-1195 | ✅ | shed_link_delete sans user id |
Section Summary
| Section | Name | Tests | Status |
|---|---|---|---|
| 1 | shed_exec - Navigation et Lect | 100/100 | ✅ |
| 2 | shed_exec - Écriture et Modifi | 80/80 | ✅ |
| 3 | shed_patch_text | 80/80 | ✅ |
| 4 | shed_patch_bytes | 30/30 | ✅ |
| 5 | shed_delete et shed_rename | 60/60 | ✅ |
| 6 | shed_tree | 20/20 | ✅ |
| 7 | shed_lockedit workflow | 80/80 | ✅ |
| 8 | Zone bridges | 80/80 | ✅ |
| 9 | Archives ZIP | 60/60 | ✅ |
| 10 | shed_sqlite | 100/100 | ✅ |
| 11 | Utilitaires fichiers | 40/40 | ✅ |
| 12 | Download links | 40/40 | ✅ |
| 13 | Groups | 60/60 | ✅ |
| 14 | Utilitaires info | 50/50 | ✅ |
| 15 | Sécurité | 60/60 | ✅ |
| 16 | Workflows complexes | 60/60 | ✅ |
| 17 | Couverture additionnelle | 60/60 | ✅ |
| 18 | LLM Guardrails | 26/26 | ✅ |
| 19 | Sécurité SQL - Case Insensitiv | 5/5 | ✅ |
| 20 | Bridge Functions - Overwrite | 10/10 | ✅ |
| 21 | shed_create_file | 39/39 | ✅ |
| 22 | Codes erreur manquants | 30/30 | ✅ |
| 23 | Codes erreur avancés | 25/25 | ✅ |