Test your shell scripts!
This repo itself is using shpec, so feel free to use it as an example. Here is the basic structure that you'll want:
└── shpec
└── an_example_shpec.sh
└── another_shpec.sh
Then to run your tests:
shpec [shpec_files]
shpec's own tests are a great place to start. More detailed examples to come.
The general format is:
assert matcher arguments
where matcher
is one of the following:
equal # equality
unequal # inequality
gt # algebraic '>'
lt # algebraic '<'
match # regex match
present # string presence
blank # string absence
file_present # file presence
file_absent # file absence
symlink # tests a symlink's target
test # evaluates a test string
Custom matchers are loaded from shpec/matchers/*.sh
.
For example, here's how you'd create a still_alive
matcher:
# in shpec/matchers/network.sh
still_alive() {
ping -oc1 "$1" > /dev/null 2>&1
assert equal "$?" 0
}
Then you can use that matcher like any other:
# in shpec/network_shpec.sh
describe "my server"
it "serves responses"
assert still_alive "my-site.com"
end_describe
sh -c "`curl https://raw.github.com/shpec/shpec/master/install.sh`"
Pull requests are always welcome.