diff options
author | Dmitry V. Levin <ldv@strace.io> | 2023-03-09 08:00:00 +0000 |
---|---|---|
committer | Dmitry V. Levin <ldv@strace.io> | 2023-03-10 17:10:41 +0000 |
commit | 197f695a75d842eb1f9b0d42ee86f71038f200a0 (patch) | |
tree | 4544032f6a6c8defc37189fa207fdc5b6333592f /test | |
parent | 99f24451710ed86021c331dd2e90ca35497faa93 (diff) | |
download | systemd-197f695a75d842eb1f9b0d42ee86f71038f200a0.tar.gz |
testsuite-17.11.sh: prepare to test udevadm verify --root
Diffstat (limited to 'test')
-rwxr-xr-x | test/units/testsuite-17.11.sh | 161 |
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 |