tech:scripting_shell_bash_et_tests_unitaires_avec_bats
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Prochaine révision | Révision précédente | ||
| tech:scripting_shell_bash_et_tests_unitaires_avec_bats [2025/03/24 15:06] – créée - modification externe 127.0.0.1 | tech:scripting_shell_bash_et_tests_unitaires_avec_bats [2026/06/07 19:12] (Version actuelle) – modification externe 127.0.0.1 | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| + | < | ||
| + | {{tag> | ||
| + | |||
| + | # Scripting shell bash et tests unitaires avec bats | ||
| + | |||
| + | Voir : | ||
| + | * https:// | ||
| + | |||
| + | ~~~bash | ||
| + | apt-get install -y --no-install-recommends bats | ||
| + | ~~~ | ||
| + | |||
| + | `test/ | ||
| + | ~~~bash | ||
| + | # | ||
| + | |||
| + | set -euo pipefail | ||
| + | |||
| + | @test "Check apache2 is up" { | ||
| + | ps aux | grep " | ||
| + | } | ||
| + | ~~~ | ||
| + | |||
| + | `test/ | ||
| + | ~~~bash | ||
| + | #! / | ||
| + | |||
| + | set -eu | ||
| + | |||
| + | setup() { | ||
| + | # Appelée avant chaque test unitaire | ||
| + | #echo " | ||
| + | true | ||
| + | } | ||
| + | |||
| + | teardown() { | ||
| + | # Appelée après chaque test unitaire | ||
| + | #echo " | ||
| + | true | ||
| + | } | ||
| + | |||
| + | setup_file() { | ||
| + | # Appelée une seule fois au début du lancement de ce script | ||
| + | echo " | ||
| + | } | ||
| + | |||
| + | teardown_file() { | ||
| + | # Appelée une seule fois en dernier lors de l’exécution de ce script | ||
| + | sleep 1 | ||
| + | echo -e " | ||
| + | } | ||
| + | |||
| + | ### Exemple de tests | ||
| + | |||
| + | @test " | ||
| + | ansible -b -i tests/ | ||
| + | } | ||
| + | |||
| + | @test "Check required fields" | ||
| + | ansible-playbook --check tests/ | ||
| + | } | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | ## Dépendance et condition | ||
| + | |||
| + | `test/ | ||
| + | ~~~bash | ||
| + | foo() { | ||
| + | echo foobar > /tmp/plop | ||
| + | } | ||
| + | |||
| + | @test " | ||
| + | run foo | ||
| + | } | ||
| + | |||
| + | ~~~ | ||
| + | |||
| + | |||
| + | |||
| + | ## Autres | ||
| + | |||
| + | `tests/ | ||
| + | ~~~bash | ||
| + | #! /bin/bash | ||
| + | |||
| + | set -eu | ||
| + | |||
| + | if [ -z " | ||
| + | then | ||
| + | export ALREADY_RUN=yes | ||
| + | fi | ||
| + | ~~~ | ||
| + | |||
| + | `test/ | ||
| + | ~~~bash | ||
| + | #! / | ||
| + | |||
| + | set -eu | ||
| + | |||
| + | load spec.sh | ||
| + | |||
| + | @test " | ||
| + | if [ ! -z " | ||
| + | then | ||
| + | ssh server -- sudo find /opt/app1/ -type f -delete | ||
| + | fi | ||
| + | } | ||
| + | ~~~ | ||
| + | |||
