55 lines
1.3 KiB
Bash
55 lines
1.3 KiB
Bash
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
fail() {
|
|
printf 'ASSERT FAIL: %s\n' "$*" >&2
|
|
exit 1
|
|
}
|
|
|
|
pass() {
|
|
printf 'ASSERT PASS: %s\n' "$*"
|
|
}
|
|
|
|
assert_eq() {
|
|
local expected=$1
|
|
local actual=$2
|
|
local message=${3:-values differ}
|
|
[[ ${expected} == "${actual}" ]] || fail "${message} (expected='${expected}' actual='${actual}')"
|
|
}
|
|
|
|
assert_ne() {
|
|
local left=$1
|
|
local right=$2
|
|
local message=${3:-values should differ}
|
|
[[ ${left} != "${right}" ]] || fail "${message} (value='${left}')"
|
|
}
|
|
|
|
assert_contains() {
|
|
local haystack=$1
|
|
local needle=$2
|
|
local message=${3:-substring not found}
|
|
[[ ${haystack} == *"${needle}"* ]] || fail "${message} (needle='${needle}')"
|
|
}
|
|
|
|
assert_not_contains() {
|
|
local haystack=$1
|
|
local needle=$2
|
|
local message=${3:-unexpected substring found}
|
|
[[ ${haystack} != *"${needle}"* ]] || fail "${message} (needle='${needle}')"
|
|
}
|
|
|
|
assert_file_contains() {
|
|
local file=$1
|
|
local needle=$2
|
|
local message=${3:-file does not contain substring}
|
|
[[ -f ${file} ]] || fail "file not found: ${file}"
|
|
grep -Fq -- "${needle}" "${file}" || fail "${message} (file='${file}' needle='${needle}')"
|
|
}
|
|
|
|
assert_status() {
|
|
local expected=$1
|
|
local actual=$2
|
|
local message=${3:-unexpected exit status}
|
|
[[ ${expected} == "${actual}" ]] || fail "${message} (expected=${expected} actual=${actual})"
|
|
}
|