Toolverse
All skills

bats-testing-patterns

by wshobson

Master Bash Automated Testing System (Bats) for comprehensive shell script testing. Use when writing tests for shell scripts, CI/CD pipelines, or requiring test-driven development of shell utilities.

Installation

Pick a client and clone the repository into its skills directory.

Installation

Quick info

Author
wshobson
Category
Testing
Views
14

About this skill

Master Bash Automated Testing System (Bats) for comprehensive shell script testing. Use when writing tests for shell scripts, CI/CD pipelines, or requiring test-driven development of shell utilities.

How to use

  1. Zainstaluj Bats na swoim systemie: na macOS użyj brew install bats-core, na Ubuntu/Debian sklonuj repozytorium z GitHub (bats-core/bats-core) i uruchom install.sh, lub zainstaluj globalnie przez npm install --global bats. Sprawdź instalację poleceniem bats --version.

  2. Przygotuj strukturę projektu z katalogami bin/ dla skryptów, tests/ dla plików testowych oraz fixtures/ dla danych testowych. Umieść pliki .bats w katalogu tests/ razem z plikiem test_helper.sh, jeśli potrzebujesz wspólnych funkcji pomocniczych.

  3. Utwórz plik testowy z rozszerzeniem .bats, zaczynając od shebang #!/usr/bin/env bats. Załaduj test_helper.sh poleceniem load test_helper, jeśli istnieje. Zdefiniuj funkcje setup() i teardown() do przygotowania i czyszczenia środowiska przed i po każdym teście.

  4. Pisz testy jako funkcje bash zaczynające się od @test, gdzie każda funkcja to jeden test case. Używaj asercji Bats takich jak [ ] do porównań, run do wykonywania poleceń i [ "$status" -eq 0 ] do sprawdzania kodów wyjścia. Testuj edge cases, warunki błędu i zachowanie na różnych wariantach powłoki.

  5. Uruchom testy poleceniem bats tests/test_script.bats lub bats tests/ aby wykonać wszystkie testy w katalogu. Bats wyświetli wyniki w formacie TAP kompatybilnym z systemami CI/CD. Obserwuj output aby zidentyfikować nieudane asercje i dostosuj testy lub kod.

  6. Integruj Bats z potokami CI/CD poprzez dodanie polecenia bats do skryptów build lub workflow. Wykorzystaj fixtures do przechowywania danych testowych, mockowanie funkcji w helpers/ do izolacji testów oraz równoległy bieg testów dla przyspieszenia.

Related skills