]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
test: introduce assert_not_in() helper function
authorYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 14 Jun 2022 00:00:00 +0000 (09:00 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 14 Jun 2022 11:52:38 +0000 (20:52 +0900)
This also silence assertions, and replace grep with bash's regular
expression match.

test/units/assert.sh
test/units/testsuite-45.sh

index db67dad2686c9dac889ae10aa21ed2d1b62457ce..66357ab688bf5c36062ba078ba1558bc78f5d695 100644 (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() {(
+    set +ex
 
-assert_eq() {
-    if [[ "$1" != "$2" ]]; then
+    if [[ "${1?}" != "${2?}" ]]; then
         echo "FAIL: expected: '$2' actual: '$1'" >&2
         exit 1
     fi
-}
+)}
+
+assert_in() {(
+    set +ex
 
-assert_in() {
-    if ! echo "$2" | grep -q "$1"; then
+    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"
-}
+)}
index ac7860dccd53f8ce30ea0cff2044be85bed555df..d0d1ef2eb43e7eed85e0fb4c51867c5babb842f6 100755 (executable)
@@ -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'