With Bats (Bash Automated Testing System) it is easy to automate Bash and command line testing. It is an awesome open source framework written in Bash by Sam Stephenson. In combination with Jenkins you are able to use it via build.
Installation
# clone from github $ git clone https://github.com/sstephenson/bats.git # change directory $ cd bats # start installation $ sudo ./install.sh /usr/local
Usage
# create new project $ mkdir ~/Project/Bats && cd ~/Projects/Bats # create Bats file $ vim test.bats # execute test $ bats test.bats ... ✓ Simple check for date command ✓ Check for current user - Test for something that does not exist (skipped: This test is skipped) ✓ Test for something that should not exist ✓ Check for individual line of output 5 tests, 0 failures, 1 skipped # execute test with TAP output $ bats --tap test.bats ... 1..5 ok 1 Simple check for date command ok 2 Check for current user ok 3 # skip (This test is skipped) Test for something that does not exist ok 4 Test for something that should not exist ok 5 Check for individual line of output
Example Bats file
#!/usr/bin/env bats @test "Simple check for date command" { date } @test "Check for current user" { result="$(whoami)" [ "$result" == "lupin" ] } @test "Test for something that does not exist" { skip "This test is skipped" ls /test/no/test } @test "Test for something that should not exist" { run ls /test/no [ "$status" -eq 1 ] } @test "Check for individual line of output" { run ping -c 1 google.com [ "$status" -eq 0 ] [ "${lines[3]}" = "1 packets transmitted, 1 packets received, 0.0% packet loss" ] }
Note: There is much more! Read documentation and have a look on projects which are using it!