Skip to content

fix(tests): exiger que le cleanup EFFACE le marqueur, pas qu'il le mentionne - #56

Merged
stephrobert merged 1 commit into
mainfrom
fix/marqueurs-effaces-v2
Aug 24, 2026
Merged

fix(tests): exiger que le cleanup EFFACE le marqueur, pas qu'il le mentionne#56
stephrobert merged 1 commit into
mainfrom
fix/marqueurs-effaces-v2

Conversation

@stephrobert

Copy link
Copy Markdown
Owner

Summary

Remplace #55, dont la branche était partie d'un main antérieur au merge de
#46 et ne se rebasait pas proprement. Même contenu, rejoué sur le main
actuel.

Le test devait garantir qu'un lab reste rejouable : ce qu'un creates: protège,
le cleanup.yaml doit le rendre. Sa vérification était assert marqueur in texte — le chemin apparaît quelque part dans le fichier. Un commentaire qui
le cite, ou la lecture . /root/xxx.env, satisfaisaient la condition sans rien
supprimer.

Le défaut, reproduit avant d'être corrigé

La mutation exacte que décrit l'issue, sur l2-filesystem-create-xfs :

-          rm -f /root/xfs-disk.env /root/.xfs-lab-ready
+          echo "cités mais jamais effacés : /root/xfs-disk.env /root/.xfs-lab-ready"
Résultat
avant le correctif 45 passed, 1 skippedle test ne voit rien
après le correctif 2 failed, 43 passed, 1 skipped

C'est le piège que la partie « comptes » du même module avait déjà corrigé
avec _est_supprime(), dont la docstring note : « ce test a commencé sa vie
ainsi, et il passait sur un cleanup dont on venait de retirer le userdel »
.
La leçon n'avait pas été reportée sur les marqueurs.

Cinq labs remontés, cinq corrigés, aucun exempté

La vérification stricte a fait remonter cinq labs — l'issue le prévoyait — et
tous pour la même raison : le cleanup lit le .env pour connaître le disque,
puis ne l'efface jamais.

Lab Ce qui manquait
l2-autofs-ondemand autofs-disk.env absent du rm
l2-disk-space-troubleshoot dsk-disk.env absent de la loop state: absent
l2-partition-gpt aucune suppression du tout
l2-storage-performance perf-disk.env absent du rm -rf
l3-fs-readonly-recover fsro-disk.env absent du rm -f — le lab de #48

La suppression est placée après la lecture dans chaque cas : l'effacer avant
priverait le cleanup de la variable dont il a besoin. Trois formes distinctes,
traitées une par une plutôt que par une substitution générale qui aurait placé le
rm au mauvais endroit dans au moins l'une d'elles.

Ce que _est_efface() accepte

Deux formes, et seulement elles :

  • shell : rm suivi du chemin, éventuellement parmi d'autres ;
  • Ansible : une tâche portant à la fois le chemin et state: absent.

Vérification, rejouée sur le main actuel

Critères de l'issue

Related issues

Closes #49
Refs #48 — le marqueur de l3-fs-readonly-recover est corrigé ici. Le point 1 de
cette issue (l'hôte qui devient injoignable en séquence) reste ouvert : il demande
une campagne de validation réelle.

🤖 Generated with Claude Code

…ntionne

Le test devait garantir qu'un lab reste rejouable : ce qu'un « creates: »
protège, le cleanup doit le rendre. Sa vérification était « assert marqueur in
texte » — le chemin apparaît quelque part dans le fichier. Un commentaire qui le
cite, ou la lecture « . /root/xxx.env », satisfaisaient la condition sans rien
supprimer.

Défaut reproduit avant d'être corrigé, avec la mutation exacte de l'issue : sur
l2-filesystem-create-xfs, remplacer le « rm -f » par un « echo » qui cite les
deux mêmes chemins laissait la suite à 45 passed. Plus aucun marqueur n'était
effacé, et le test ne voyait rien.

C'est le piège que la partie « comptes » du même module avait déjà corrigé avec
_est_supprime(), dont la docstring note : « ce test a commencé sa vie ainsi, et
il passait sur un cleanup dont on venait de retirer le userdel ». La leçon
n'avait pas été reportée sur les marqueurs.

_est_efface() n'accepte que deux formes, celles qui suppriment vraiment : un
« rm » shell portant le chemin parmi d'autres, ou une tâche Ansible qui porte à
la fois le chemin et « state: absent ».

La vérification stricte a fait remonter CINQ labs, comme l'issue le prévoyait, et
tous pour la même raison : le cleanup lit le fichier .env pour connaître le
disque, puis ne l'efface jamais. Aucun n'est exempté, les cinq sont corrigés —
l2-autofs-ondemand, l2-disk-space-troubleshoot, l2-partition-gpt,
l2-storage-performance et l3-fs-readonly-recover. La suppression est placée
APRÈS la lecture dans chaque cas : l'effacer avant priverait le cleanup de la
variable dont il a besoin.

Trois formes distinctes selon les labs, traitées une par une plutôt que par une
substitution générale qui aurait placé le rm au mauvais endroit : ajout au rm
existant, ajout à la loop d'un « file: state: absent », et création du rm là où
il n'y en avait aucun (l2-partition-gpt n'effaçait rien du tout).

Vérifié : la mutation de l'issue rend maintenant le test rouge, retirer le .env
d'un cleanup corrigé aussi, les cinq cleanups restent du YAML valide et passent
le --syntax-check d'ansible-playbook, 871 tests verts et les 84 labs valides.

Closes #49
Refs #48
@stephrobert
stephrobert merged commit f0a5ce0 into main Aug 24, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Le test des marqueurs exige la mention du chemin, pas sa suppression

1 participant