Outils pour utilisateurs

Outils du site


tech:scripting_shell_bash_et_tests_unitaires_avec_bats

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
tech:scripting_shell_bash_et_tests_unitaires_avec_bats [2026/02/07 10:46] Jean-Baptistetech: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:
 +<!DOCTYPE markdown>
 +{{tag>Brouillon Unittest}}
 +
 +# Scripting shell bash et tests unitaires avec bats
 +
 +Voir : 
 +* https://github.com/containers/podman/blob/main/hack/bats
 +
 +~~~bash
 +apt-get install -y --no-install-recommends bats
 +~~~
 +
 +`test/spec.bats`
 +~~~bash
 +#!/usr/bin/env bats
 +
 +set -euo pipefail
 +
 +@test "Check apache2 is up" {
 +  ps aux | grep "apache2"
 +}
 +~~~
 +
 +`test/spec.bats`
 +~~~bash
 +#! /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`
 +~~~bash
 +foo() {
 +        echo foobar > /tmp/plop
 +}
 +
 +@test "foobar" {
 +        run foo
 +}
 +
 +~~~
 +
 +
 +
 +## Autres
 +
 +`tests/spec.sh`
 +~~~bash
 +#! /bin/bash
 +
 +set -eu
 +
 +if [ -z "${ALREADY_RUN:-}" ]
 +then
 +        export ALREADY_RUN=yes
 +fi
 +~~~
 +
 +`test/spec.bats`
 +~~~bash
 +#! /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
 +}
 +~~~
 +
  

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki