Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion labs/linux/l2/l2-autofs-ondemand/cleanup.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -21,5 +21,5 @@
wipefs -a "$part" 2>/dev/null || true
wipefs -a "$DISK" 2>/dev/null || true
partprobe "$DISK" 2>/dev/null || true
rm -f /root/.autofs-lab-ready
rm -f /root/.autofs-lab-ready /root/autofs-disk.env
changed_when: false
3 changes: 3 additions & 0 deletions labs/linux/l2/l2-disk-space-troubleshoot/cleanup.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -27,3 +27,6 @@
loop:
- /srv/data
- /root/.dsk-lab-ready
# Lu plus haut pour connaître le disque : il doit partir avec
# le reste, sinon le prochain setup saute la détection.
- /root/dsk-disk.env
1 change: 1 addition & 0 deletions labs/linux/l2/l2-partition-gpt/cleanup.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -20,4 +20,5 @@
wipefs -a "$DISK" 2>/dev/null || true
sgdisk --zap-all "$DISK" 2>/dev/null || true
partprobe "$DISK" 2>/dev/null || true
rm -f /root/part-disk.env
changed_when: false
2 changes: 1 addition & 1 deletion labs/linux/l2/l2-storage-performance/cleanup.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -25,5 +25,5 @@
wipefs -a "$part" 2>/dev/null || true
wipefs -a "$DISK" 2>/dev/null || true
partprobe "$DISK" 2>/dev/null || true
rm -rf /srv/data /root/.perf-lab-ready
rm -rf /srv/data /root/.perf-lab-ready /root/perf-disk.env
changed_when: false
2 changes: 1 addition & 1 deletion labs/linux/l3/l3-fs-readonly-recover/cleanup.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,6 @@
. /root/fsro-disk.env
part="${DISK}1"; [ -b "$part" ] || part="${DISK}p1"
wipefs -a "$part" 2>/dev/null || true
rm -f /root/.fsro-ready
rm -f /root/.fsro-ready /root/fsro-disk.env
chdir: /
changed_when: false
32 changes: 30 additions & 2 deletions tests/test_marqueurs_setup_cleanup.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,32 @@ def _marqueurs(setup: Path) -> list[str]:
]


def _est_efface(cleanup: str, marqueur: str) -> bool:
"""Le cleanup EFFACE-t-il réellement ce marqueur ?

Le mentionner ne suffit pas : « . /root/xxx.env » le lit sans le rendre, et
un commentaire qui le cite satisfaisait la vérification. C'est exactement le
piège que la partie « comptes » de ce 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 ici.

Deux formes légitimes, et seulement elles :

- shell : ``rm`` suivi du chemin, éventuellement parmi d'autres ;
- Ansible : une tâche qui porte à la fois le chemin et ``state: absent``.
"""
echappe = re.escape(marqueur)
# `rm -f a b c` : le marqueur peut être n'importe lequel des chemins.
if re.search(rf"^\s*rm\b[^\n#]*\s{echappe}(\s|$)", cleanup, re.MULTILINE):
return True
# Une tâche Ansible se délimite au « - name: » suivant.
for tache in re.split(r"\n\s*- name:", cleanup):
if "state: absent" in tache and re.search(rf"{echappe}(\s|$|\")", tache):
return True
return False


@pytest.mark.parametrize(
("lab", "marqueur"),
CAS,
Expand All @@ -70,9 +96,11 @@ def test_le_cleanup_efface_le_marqueur(lab: Path, marqueur: str) -> None:
assert cleanup.is_file(), f"{lab.name} a un setup.yaml mais pas de cleanup.yaml"

texte = cleanup.read_text(encoding="utf-8")
assert marqueur in texte, (
assert _est_efface(texte, marqueur), (
f"{lab.name} : le setup se garde avec « creates: {marqueur} », mais le "
f"cleanup ne mentionne jamais ce chemin.\n"
f"cleanup ne l'EFFACE jamais.\n"
f"Le mentionner ne suffit pas — « . {marqueur} » le lit, un commentaire "
f"le cite — et cette vérification a d'ailleurs commencé sa vie ainsi.\n"
f"Le nettoyage laissera donc le marqueur en place : au prochain setup, "
f"la tâche sera sautée et l'état de départ ne sera jamais reconstruit.\n"
f"Ajouter par exemple : rm -f {marqueur}"
Expand Down