fix(tests): exiger que le cleanup EFFACE le marqueur, pas qu'il le mentionne - #56
Merged
Conversation
…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
4 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Le test devait garantir qu'un lab reste rejouable : ce qu'un
creates:protège,le
cleanup.yamldoit le rendre. Sa vérification étaitassert marqueur in texte— le chemin apparaît quelque part dans le fichier. Un commentaire quile cite, ou la lecture
. /root/xxx.env, satisfaisaient la condition sans riensupprimer.
Le défaut, reproduit avant d'être corrigé
La mutation exacte que décrit l'issue, sur
l2-filesystem-create-xfs:45 passed, 1 skipped— le test ne voit rien2 failed, 43 passed, 1 skippedC'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 vieainsi, 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
.envpour connaître le disque,puis ne l'efface jamais.
l2-autofs-ondemandautofs-disk.envabsent durml2-disk-space-troubleshootdsk-disk.envabsent de la loopstate: absentl2-partition-gptl2-storage-performanceperf-disk.envabsent durm -rfl3-fs-readonly-recoverfsro-disk.envabsent durm -f— le lab de #48La 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
rmau mauvais endroit dans au moins l'une d'elles.Ce que
_est_efface()accepteDeux formes, et seulement elles :
rmsuivi du chemin, éventuellement parmi d'autres ;state: absent.Vérification, rejouée sur le
mainactuelcleanup.yamlrestent du YAML valide et passentansible-playbook --syntax-check;vérification stricte.
Critères de l'issue
l3-fs-readonly-recoverest signalé par le test, puis corrigé (l3-fs-readonly-recover : reset impossible en séquence (hôte injoignable), et son cleanup laisse un marqueur #48).rm -fà plusieurs chemins, etansible.builtin.fileavecstate: absent.Related issues
Closes #49
Refs #48 — le marqueur de
l3-fs-readonly-recoverest corrigé ici. Le point 1 decette issue (l'hôte qui devient injoignable en séquence) reste ouvert : il demande
une campagne de validation réelle.
🤖 Generated with Claude Code