- Bash Automated Testing System
bats [-c] [-p | -t] test
is the path to a Bats test file, or the path to a directory
containing Bats test files.
Bats is a TAP-compliant testing framework for Bash. It provides a simple way to
verify that the UNIX programs you write behave as expected.
A Bats test file is a Bash script with special syntax for defining test cases.
Under the hood, each test case is just a function with a description.
Test cases consist of standard shell commands. Bats makes use of Bash´s
) option when running test cases. If every
command in the test case exits with a 0
status code (success), the test
passes. In this way, each line is an assertion of truth.
(7) for more information on writing Bats tests.
To run your tests, invoke the bats
interpreter with a path to a test
file. The file´s test cases are run sequentially and in isolation. If
all the test cases pass, bats
exits with a 0
status code. If
there are any failures, bats
exits with a 1
You can invoke the bats
interpreter with multiple test file arguments, or
with a path to a directory containing multiple .bats
files. Bats will
run each test file individually and aggregate the results. If any test case
exits with a 1
- -c, --count
- Count the number of test cases without running any tests
- -h, --help
- Display help message
- -p, --pretty
- Show results in pretty format (default for terminals)
- -r, --recursive
- Include tests in subdirectories
- -t, --tap
- Show results in TAP format
- -v, --version
- Display the version number
When you run Bats from a terminal, you´ll see output as each test is
performed, with a check-mark next to the test´s name if it passes or an
"X" if it fails.
$ bats addition.bats
✓ addition using bc
✓ addition using dc
2 tests, 0 failures
If Bats is not connected to a terminal--in other words, if you run it from a
continuous integration system or redirect its output to a file--the results
are displayed in human-readable, machine-parsable TAP format. You can force
TAP output from a terminal by invoking Bats with the --tap
$ bats --tap addition.bats
ok 1 addition using bc
ok 2 addition using dc
interpreter exits with a value of 0
if all test cases
pass, or 1
if one or more test cases fail.
Bats wiki: https://github.com/bats-core/bats-core/wiki/
(c) 2017 Bianca Tamayo (bats-core organization) (c) 2014 Sam Stephenson
Bats is released under the terms of an MIT-style license.