Testing Shell Scripts
Assert Equal
Compare Expected Output
A small assertion compares the expected value with the actual value and turns that comparison into a pass or fail result.
Program
Play the script to choose the expected value and see whether the assertion passes.
assert_equal.sh
Replay: real traced execution (multi-file project)
#!/usr/bin/env bash
expected=12
actual=12
if [[ "$actual" == "$expected" ]]; then
result="pass"
else
result="fail"
fi
echo "assert:$result"
#!/usr/bin/env bash
expected=10
actual=12
if [[ "$actual" == "$expected" ]]; then
result="pass"
else
result="fail"
fi
echo "assert:$result"
expected ← 12
3expected=124actual=12values this step12expectedactual ← 12
3expected=124actual=125if [[ "$actual" == "$expected" ]]; thenvalues this step12actualif [[ "$actual" == "$expected" ]]; then
4actual=125if [[ "$actual" == "$expected" ]]; then6 result="pass"values this step12actual12expectedresult ← pass
5if [[ "$actual" == "$expected" ]]; then6 result="pass"7elsevalues this steppassresultecho "assert:$result"
9fi10echo "assert:$result"outputassert:passvalues this steppassresult
expected ← 10
3expected=104actual=12values this step10expectedactual ← 12
3expected=104actual=125if [[ "$actual" == "$expected" ]]; thenvalues this step12actualif [[ "$actual" == "$expected" ]]; then
4actual=125if [[ "$actual" == "$expected" ]]; then6 result="pass"values this step12actual10expectedresult ← fail
7else8 result="fail"9fivalues this stepfailresultecho "assert:$result"
9fi10echo "assert:$result"outputassert:failvalues this stepfailresult
assertion
An assertion checks whether one observed value matches the expected value.
string comparison
`[[ "$a" == "$b" ]]` compares two shell strings.
test result
A clear pass/fail word makes later summaries easy to build.