Skip to main content

bash-testing

Test shell scripts with BATS (Bash Automated Testing System). Write, run, and debug tests for bash scripts.

소스 정보

저장소
ThinkfleetAI/thinkfleet-engine
최근 소스 활동
2026년 2월 1일 16:21
감지된 SKILL.md 언어
영어
스타
0
포크
0

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
bash-testing
description
Test shell scripts with BATS (Bash Automated Testing System). Write, run, and debug tests for bash scripts.
metadata
{"thinkfleetbot":{"emoji":"🐚","requires":{"bins":"[Truncated]"},"install":["[Truncated]"]}}
# Bash Testing (BATS) Test shell scripts reliably with the Bash Automated Testing System. ## Run tests ```bash # Run a test file bats test/my_script.bats # Run all tests in directory bats test/ # Verbose output bats --verbose-run test/ # TAP format output (for CI) bats --formatter tap test/ # Pretty output bats --formatter pretty test/ ``` ## Write a test ```bash # test/example.bats #!/usr/bin/env bats setup() { # Runs before each test source ./my_script.sh } teardown() { # Runs after each test rm -f /tmp/test_output } @test "function returns expected output" { result=$(my_function "input") [ "$result" = "expected output" ] } @test "script exits with code 0 on success" { run ./my_script.sh --valid-arg [ "$status" -eq 0 ] } @test "script exits with code 1 on bad input" { run ./my_script.sh --invalid [ "$status" -eq 1 ] [[ "$output" =~ "Error" ]] } @test "output contains expected string" { run ./my_script.sh [ "$status" -eq 0 ] [[ "$output" =~ "Success" ]] } @test "file is created" { run ./my_script.sh --create /tmp/test_output [ "$status" -eq 0 ] [ -f /tmp/test_output ] } ``` ## Key assertions ```bash # Exit status [ "$status" -eq 0 ] # Exact output match [ "$output" = "expected" ] # Regex match [[ "$output" =~ "pattern" ]] # Line-specific output [ "${lines[0]}" = "first line" ] [ "${lines[1]}" = "second line" ] # File exists [ -f "$filepath" ] # String not empty [ -n "$result" ] # Numeric comparison [ "$count" -gt 5 ] ``` ## Using helper libraries ```bash # With bats-support and bats-assert (install separately) setup() { load 'test_helper/bats-support/load' load 'test_helper/bats-assert/load' } @test "readable assertions" { run ./my_script.sh assert_success assert_output --partial "expected text" refute_output --partial "error" assert_line --index 0 "first line" } ``` ## Notes - Install helpers: `git clone https://github.com/bats-core/bats-support test/test_helper/bats-support` and `git clone https://github.com/bats-core/bats-assert test/test_helper/bats-assert`. - Use `setup_file()` / `teardown_file()` for expensive one-time setup. - The `run` keyword captures both stdout and exit status into `$output` and `$status`. - Tests run in subshells — variable changes don't leak between tests.
GitHub에서 보기