tech:scripting_shell_bash_et_tests_unitaires_avec_bats
Ceci est une ancienne révision du document !
Table des matières
Scripting shell bash et tests unitaires avec bats
apt-get install -y --no-install-recommends bats
- test/spec.bats
#!/usr/bin/env bats set -euo pipefail @test "Check apache2 is up" { ps aux | grep "apache2" }
- test/spec.bats
#! /usr/bin/env bats set -eu setup() { # Appelée avant chaque test unitaire #echo "$(date --iso-8601=second BEGIN $BATS_TEST_NUMBER $BATS_TEST_NAME" > /dev/stdin true } teardown() { # Appelée après chaque test unitaire #echo "$(date --iso-8601=second) END $BATS_TEST_NUMBER $BATS_TEST_NAME" > /dev/stdin true } setup_file() { # Appelée une seule fois au début du lancement de ce script echo "$(date --iso-8601=second) BEGIN $(basename $BATS_TEST_FILENAME)" > /dev/stdin } teardown_file() { # Appelée une seule fois en dernier lors de l’exécution de ce script sleep 1 echo -e "\b$(date --iso-8601=second) END $(basename $BATS_TEST_FILENAME)" > /dev/stdin } ### Exemple de tests @test "prereq - create account" { ansible -b -i tests/inventory -m user -a 'name=testplop' all } @test "Check required fields" { ansible-playbook --check tests/test.yml -i tests/inventory |grep -q 'NameError.' }
Dépendance et condition
- test/spec.bats
foo() { echo foobar > /tmp/plop } @test "foobar" { run foo }
Autres
- tests/spec.sh
#! /bin/bash set -eu if [ -z "${ALREADY_RUN:-}" ] then export ALREADY_RUN=yes fi
- test/spec.bats
#! /usr/bin/env bats set -eu load spec.sh @test "clean" { if [ ! -z "${ALREADY_RUN:-}" ] then ssh server -- sudo find /opt/app1/ -type f -delete fi }
tech/scripting_shell_bash_et_tests_unitaires_avec_bats.1742825205.txt.gz · Dernière modification : de 127.0.0.1
