Install bashunit
ActionsAbout
Tags
(2)
Test your bash scripts in the fastest and simplest way.
A lightweight, fast testing framework for Bash 3.0+, focused on developer experience. It ships hundreds of assertions plus spies, mocks, data providers, snapshots and more.
Install the latest version into your project:
curl -s https://bashunit.com/install.sh | bashWrite a test in tests/example_test.sh:
#!/usr/bin/env bash
function test_bashunit_is_working() {
assert_same "bashunit is working" "bashunit is working"
}Run it:
./lib/bashunit tests/Prefer learning by doing? Run ./lib/bashunit learn for an interactive tutorial.
bashunit ships ~60 assertions across many families. One representative example per family (full catalog and signatures at bashunit.com/assertions):
| Family | Example |
|---|---|
| Equality & truth | assert_equals "foo" "$actual" |
| Strings | assert_string_starts_with "Hello" "$greeting" |
| Exit codes | assert_exit_code "1" (checks $? of the previous command) |
| Numeric | assert_greater_than "1" "$count" |
| Arrays | assert_array_length 3 "${my_array[@]}" |
| Files & dirs | assert_file_permissions 644 "$file" |
JSON (needs jq) |
assert_json_contains ".name" "bashunit" "$json" |
| Dates | assert_date_before "2026-01-01" "$date" |
| Duration | assert_duration_less_than "echo hello" 500 |
| Snapshots | assert_match_snapshot "$(my_cmd)" |
| Test doubles | assert_have_been_called_times 2 my_fn |
Full documentation, covering installation options, every feature and examples, lives at bashunit.com.
Shell tab-completion for bash and zsh is available under completions/ — see the installation docs.
Issues, ideas and pull requests are welcome. See the contribution guide to set up your environment.
Install bashunit is not certified by GitHub. It is provided by a third-party and is governed by separate terms of service, privacy policy, and support documentation.