summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorDmitry V. Levin <ldv@strace.io>2023-03-09 08:00:00 +0000
committerDmitry V. Levin <ldv@strace.io>2023-03-10 17:10:41 +0000
commit197f695a75d842eb1f9b0d42ee86f71038f200a0 (patch)
tree4544032f6a6c8defc37189fa207fdc5b6333592f /test
parent99f24451710ed86021c331dd2e90ca35497faa93 (diff)
downloadsystemd-197f695a75d842eb1f9b0d42ee86f71038f200a0.tar.gz
testsuite-17.11.sh: prepare to test udevadm verify --root
Diffstat (limited to 'test')
-rwxr-xr-xtest/units/testsuite-17.11.sh161
1 files changed, 98 insertions, 63 deletions
diff --git a/test/units/testsuite-17.11.sh b/test/units/testsuite-17.11.sh
index ad0158921c..4abcae60a5 100755
--- a/test/units/testsuite-17.11.sh
+++ b/test/units/testsuite-17.11.sh
@@ -5,6 +5,9 @@ set -o pipefail
# Test for udevadm verify.
+# shellcheck source=test/units/assert.sh
+. "$(dirname "$0")"/assert.sh
+
cleanup() {
cd /
rm -rf "${workdir}"
@@ -15,70 +18,104 @@ workdir="$(mktemp -d)"
trap cleanup EXIT
cd "${workdir}"
-udevadm verify -h
-udevadm verify --help
-udevadm verify -V
-udevadm verify --version
-udevadm verify /dev/null
+test_number=0
+rules=
+exp=
+err=
+next_test_number() {
+ : $((++test_number))
+
+ local num_str
+ num_str=$(printf %05d "${test_number}")
+
+ rules="sample-${num_str}.rules"
+ exp="sample-${num_str}.exp"
+ err="sample-${num_str}.err"
+}
+
+assert_0() {
+ assert_rc 0 udevadm verify "$@"
+ next_test_number
+}
+
+assert_1() {
+ if [ -f "${exp}" ]; then
+ set +e
+ udevadm verify "$@" 2>"${err}"
+ assert_eq "$?" 1
+ set -e
+ diff "${exp}" "${err}"
+ else
+ set +e
+ udevadm verify "$@"
+ assert_eq "$?" 1
+ set -e
+ fi
+ next_test_number
+}
+
+assert_0 -h
+assert_0 --help
+assert_0 -V
+assert_0 --version
+assert_0 /dev/null
# No rules file specified.
-(! udevadm verify)
+assert_1
# unrecognized option '--unknown'
-(! udevadm verify --unknown)
+assert_1 --unknown
# option requires an argument -- 'N'
-(! udevadm verify -N)
+assert_1 -N
# --resolve-names= takes "early" or "never"
-(! udevadm verify -N now)
+assert_1 -N now
# option '--resolve-names' requires an argument
-(! udevadm verify --resolve-names)
+assert_1 --resolve-names
# --resolve-names= takes "early" or "never"
-(! udevadm verify --resolve-names=now)
+assert_1 --resolve-names=now
# Failed to parse rules file .: Is a directory
-(! udevadm verify .)
+assert_1 .
# Failed to parse rules file .: Is a directory
-(! udevadm verify /dev/null . /dev/null)
+assert_1 /dev/null . /dev/null
# UDEV_LINE_SIZE 16384
-printf '%16383s\n' ' ' >sample.rules
-udevadm verify sample.rules
-
-# Failed to parse rules file sample.rules: No buffer space available
-printf '%16384s\n' ' ' >sample.rules
-(! udevadm verify sample.rules)
-
-printf 'RUN+="/bin/true"%8175s\\\n' ' ' ' ' >sample.rules
-echo >>sample.rules
-udevadm verify sample.rules
-
-printf 'RUN+="/bin/true"%8176s\\\n #\n' ' ' ' ' >sample.rules
-echo >>sample.rules
-cat >exp <<'EOF'
-sample.rules:5 Line is too long, ignored
-sample.rules: udev rules check failed
+printf '%16383s\n' ' ' >"${rules}"
+assert_0 "${rules}"
+
+# Failed to parse rules file ${rules}: No buffer space available
+printf '%16384s\n' ' ' >"${rules}"
+echo "Failed to parse rules file ${rules}: No buffer space available" >"${exp}"
+assert_1 "${rules}"
+
+printf 'RUN+="/bin/true"%8175s\\\n' ' ' ' ' >"${rules}"
+echo >>"${rules}"
+assert_0 "${rules}"
+
+printf 'RUN+="/bin/true"%8176s\\\n #\n' ' ' ' ' >"${rules}"
+echo >>"${rules}"
+cat >"${exp}" <<EOF
+${rules}:5 Line is too long, ignored
+${rules}: udev rules check failed
EOF
-(! udevadm verify sample.rules 2>err)
-diff exp err
+assert_1 "${rules}"
-printf '\\\n' >sample.rules
-cat >exp <<'EOF'
-sample.rules:1 Unexpected EOF after line continuation, line ignored
-sample.rules: udev rules check failed
+printf '\\\n' >"${rules}"
+cat >"${exp}" <<EOF
+${rules}:1 Unexpected EOF after line continuation, line ignored
+${rules}: udev rules check failed
EOF
-(! udevadm verify sample.rules 2>err)
-diff exp err
+assert_1 "${rules}"
test_syntax_error() {
- local rule msg
- rule="$1"; shift
- msg="$1"; shift
-
- printf '%s\n' "$rule" > sample.rules
- cat >exp <<-EOF
- sample.rules:1 $msg
- sample.rules: udev rules check failed
- EOF
- (! udevadm verify sample.rules 2>err)
- diff exp err
+ local rule msg
+ rule="$1"; shift
+ msg="$1"; shift
+
+ printf '%s\n' "${rule}" >"${rules}"
+ cat >"${exp}" <<EOF
+${rules}:1 ${msg}
+${rules}: udev rules check failed
+EOF
+ assert_1 "${rules}"
}
test_syntax_error '=' 'Invalid key/value pair, ignoring.'
@@ -187,31 +224,29 @@ test_syntax_error 'LABEL=="b"' 'Invalid operator for LABEL.'
test_syntax_error 'LABEL="b"' 'LABEL="b" is unused.'
test_syntax_error 'a="b"' "Invalid key 'a'"
-echo 'GOTO="a"' >sample.rules
-cat >exp <<'EOF'
-sample.rules:1 GOTO="a" has no matching label, ignoring
-sample.rules:1 The line takes no effect any more, dropping
-sample.rules: udev rules check failed
+echo 'GOTO="a"' >"${rules}"
+cat >"${exp}" <<EOF
+${rules}:1 GOTO="a" has no matching label, ignoring
+${rules}:1 The line takes no effect any more, dropping
+${rules}: udev rules check failed
EOF
-(! udevadm verify sample.rules 2>err)
-diff exp err
+assert_1 "${rules}"
-cat >sample.rules <<'EOF'
+cat >"${rules}" <<'EOF'
GOTO="a"
LABEL="a"
EOF
-udevadm verify sample.rules
+assert_0 "${rules}"
-cat >sample.rules <<'EOF'
+cat >"${rules}" <<'EOF'
GOTO="b"
LABEL="b"
LABEL="b"
EOF
-cat >exp <<'EOF'
-sample.rules:3 LABEL="b" is unused.
-sample.rules: udev rules check failed
+cat >"${exp}" <<EOF
+${rules}:3 LABEL="b" is unused.
+${rules}: udev rules check failed
EOF
-(! udevadm verify sample.rules 2>err)
-diff exp err
+assert_1 "${rules}"
exit 0