On parle beaucoup de tests unitaires automatisés en développement Java, Python, JS, etc.. (notez que je dis bien “on parle” et non “on fait”…) mais dès qu’on entre dans le monde des scripts Shell, ce type d’exigence disparaît souvent comme par enchantement. J’ignore s’il y a une raison historique à cette absence de pratique mais, étant très loin d’être un spécialiste de la ligne de commande, et devant pourtant en écrire assez souvent, j’éprouve le besoin de pouvoir tester mes productions, notamment lorsque je prépare des déploiements.
D’aucun diront peut-être qu’à l’état de l’art, on n’a plus besoin de ce genre de compétences mais de Terraform, d’Ansible, que sais-je encore ? Oui sauf que dans la vraie vie, ces technologies ne sont pas toujours disponibles dans mon contexte et que j’ai tendance à privilégier les solutions les plus simples afin de faciliter la vie des personnes qui, après moi, assureront la maintenance. Si je sais qu’elles sont bilingues dans les technos sus-dites, aucun problème mais si ce n’est pas le cas, je fais du basique. Et puis même avec ces technologies, je reste persuadé qu’avoir un moyen d’automatiser la vérification du résultat d’une installation est toujours pertinent.
Bats permet ainsi de procéder à de tels tests et semble le faire très bien (j’ai lu la doc mais pas testé sur mes serveurs)
Mais comme on est jamais aussi bien servi que par soi-même (et que cela me permettait de pratiquer le bash) J’ai aussi fait mon propre outil qui permet de répondre à ce type de besoin plutôt orienté “vérification d’une installation” avec des méthodes qui permettent de tester par exemple :
- l’existence d’un dossier/fichier
- l’existence d’un groupe/utilisateur
- le fait qu’un service/process soit en cours d’exécution
- le fait qu’un package soit installé
Le script est dispo sur mon gitlab Ainsi on peut tester par exemple la présence d’un fichier
checkFileExists "/etc/yum.repos.d/shibboleth.repo"`
et on obtient à l’exécution une sortie texte, verte si tout est OK, rouge sino.

C’est une solution KISS, beaucoup moins évoluée que Bats bien entendu. Mais, si j’en reviens à mon second § sur la transmission de mes développements à mes successeurs, elle présente l’avantage de ne pas leur demander d’acquérir de nouvelles compétences sur un point pour lesquels ils seront peu fréquemment sollicités.