#!/usr/bin/env bash # SPDX-License-Identifier: LGPL-2.1-or-later set -ex set -o pipefail # Test for udevadm verify. # shellcheck source=test/units/assert.sh . "$(dirname "$0")"/assert.sh cleanup() { cd / rm -rf "${workdir}" workdir= } workdir="$(mktemp -d)" trap cleanup EXIT cd "${workdir}" cat >"${workdir}/default_output_1_success" <"${workdir}/default_output_1_fail" <"${out}" if [ -f "${rules}" ]; then diff -u "${workdir}/default_output_1_success" "${out}" fi next_test_number } assert_1() { set +e udevadm verify "$@" >"${out}" 2>"${err}" assert_eq "$?" 1 set -e if [ -f "${exp}" ]; then diff -u "${exp}" "${err}" fi if [ -f "${exo}" ]; then diff -u "${exo}" "${out}" fi next_test_number } # initialize variables next_test_number assert_0 -h assert_0 --help assert_0 -V assert_0 --version assert_0 /dev/null # unrecognized option '--unknown' assert_1 --unknown # option requires an argument -- 'N' assert_1 -N # --resolve-names= takes "early" or "never" assert_1 -N now # option '--resolve-names' requires an argument assert_1 --resolve-names # --resolve-names= takes "early" or "never" assert_1 --resolve-names=now # Failed to parse rules file .: Is a directory cp "${workdir}/default_output_1_fail" "${exo}" assert_1 . # Failed to parse rules file .: Is a directory cat >"${exo}" <"${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}" cp "${workdir}/default_output_1_fail" "${exo}" assert_1 "${rules}" { printf 'RUN+="/bin/true"%8175s\\\n' ' ' printf 'RUN+="/bin/false"%8174s\\\n' ' ' echo } >"${rules}" assert_0 "${rules}" printf 'RUN+="/bin/true"%8176s\\\n #\n' ' ' ' ' >"${rules}" echo >>"${rules}" cat >"${exp}" <"${rules}" cat >"${exp}" <"${rules}" cat >"${exp}" <"${rules}" cat >"${exp}" <"${rules}" <<'EOF' GOTO="a" LABEL="a" EOF assert_0 "${rules}" cat >"${rules}" <<'EOF' GOTO="b" LABEL="b" LABEL="b" EOF cat >"${exp}" <"${rules}" <<'EOF' GOTO="a" LABEL="a", LABEL="b" EOF cat >"${exp}" <"${rules}" <<'EOF' KERNEL!="", KERNEL=="?*", KERNEL=="", NAME="a" EOF cat >"${exp}" <"${workdir}/${exp}" cd - assert_1 --root="${workdir}" exit 0