test: introduce assert_not_in() helper function

This also silence assertions, and replace grep with bash's regular
expression match.
This commit is contained in:
Yu Watanabe
2022-06-14 09:00:00 +09:00
parent a4433b4532
commit d170b47535
2 changed files with 32 additions and 18 deletions

View File

@@ -3,42 +3,56 @@
# utility functions for shell tests
assert_true() {
assert_true() {(
local rc
set +e
set +ex
"$@"
rc=$?
set -e
if [[ "$rc" != "0" ]]; then
if [[ $rc -ne 0 ]]; then
echo "FAIL: command '$*' failed with exit code $rc" >&2
exit 1
fi
}
)}
assert_eq() {
if [[ "$1" != "$2" ]]; then
assert_eq() {(
set +ex
if [[ "${1?}" != "${2?}" ]]; then
echo "FAIL: expected: '$2' actual: '$1'" >&2
exit 1
fi
}
)}
assert_in() {
if ! echo "$2" | grep -q "$1"; then
assert_in() {(
set +ex
if ! [[ "${2?}" =~ ${1?} ]]; then
echo "FAIL: '$1' not found in:" >&2
echo "$2" >&2
exit 1
fi
}
)}
assert_not_in() {(
set +ex
if [[ "${2?}" =~ ${1?} ]]; then
echo "FAIL: '$1' found in:" >&2
echo "$2" >&2
exit 1
fi
)}
assert_rc() {(
local rc exp="${1?}"
set +ex
assert_rc() {
local exp=$1
local rc
shift
set +e
"$@"
rc=$?
set -e
assert_eq "$rc" "$exp"
}
)}

View File

@@ -21,7 +21,7 @@ test_timezone() {
echo 'change timezone'
assert_eq "$(timedatectl --no-pager set-timezone Europe/Kiev 2>&1)" ""
assert_eq "$(readlink /etc/localtime | sed 's#^.*zoneinfo/##')" "Europe/Kiev"
assert_in "Time.*zone: Europe/Kiev (EEST, +" "$(timedatectl --no-pager)"
assert_in "Time zone: Europe/Kiev \(EEST, \+0[0-9]00\)" "$(timedatectl)"
if [[ -n "$ORIG_TZ" ]]; then
echo 'reset timezone to original'