]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
tests: add test for udevadm control -p 30016/head
authorDavid Tardon <dtardon@redhat.com>
Thu, 9 Nov 2023 14:09:33 +0000 (15:09 +0100)
committerDavid Tardon <dtardon@redhat.com>
Mon, 13 Nov 2023 18:19:55 +0000 (19:19 +0100)
Follow-up for e1593039dbb64e47e3ec81d2c913e7730d94a727 .

test/units/testsuite-17.13.sh [new file with mode: 0755]

diff --git a/test/units/testsuite-17.13.sh b/test/units/testsuite-17.13.sh
new file mode 100755 (executable)
index 0000000..d9dfdd7
--- /dev/null
@@ -0,0 +1,89 @@
+#!/usr/bin/env bash
+# SPDX-License-Identifier: LGPL-2.1-or-later
+set -ex
+set -o pipefail
+
+# shellcheck source=test/units/util.sh
+. "$(dirname "$0")"/util.sh
+
+# Test for `udevadm control -p`
+
+test_not_property() {
+    assert_eq "$(udevadm info --query property --property "$2" --value "$1")" ""
+}
+
+test_property() {
+    assert_eq "$(udevadm info --query property --property "$2" --value "$1")" "$3"
+}
+
+# shellcheck disable=SC2317
+cleanup() {
+    set +e
+
+    udevadm control -p FOO= -p BAR=
+
+    rm -f "$rules"
+}
+
+# Set up a test device
+trap cleanup EXIT
+
+rules="/run/udev/rules.d/99-test-17.13.rules"
+
+mkdir -p "${rules%/*}"
+cat > "$rules" <<'EOF'
+ENV{FOO}=="?*", ENV{PROP_FOO}="$env{FOO}"
+ENV{BAR}=="?*", ENV{PROP_BAR}="$env{BAR}"
+EOF
+
+udevadm control --reload
+
+test_not_property /dev/null PROP_FOO
+test_not_property /dev/null PROP_BAR
+
+: Setting of a property works
+
+udevadm control --property FOO=foo
+udevadm trigger --action change --settle /dev/null
+test_property /dev/null PROP_FOO foo
+test_not_property /dev/null PROP_BAR
+
+: Change of a property works
+
+udevadm control --property FOO=goo
+udevadm trigger --action change --settle /dev/null
+test_property /dev/null PROP_FOO goo
+
+: Removal of a property works
+
+udevadm control --property FOO=
+udevadm trigger --action change --settle /dev/null
+test_not_property /dev/null PROP_FOO
+
+: Repeated removal of a property does nothing
+
+udevadm control --property FOO=
+udevadm trigger --action change --settle /dev/null
+test_not_property /dev/null PROP_FOO
+
+: Multiple properties can be set at once
+
+udevadm control --property FOO=foo --property BAR=bar
+udevadm trigger --action change --settle /dev/null
+test_property /dev/null PROP_FOO foo
+test_property /dev/null PROP_BAR bar
+
+: Multiple setting of the same property is handled correctly
+
+udevadm control --property FOO=foo --property FOO=42
+udevadm trigger --action change --settle /dev/null
+test_property /dev/null PROP_FOO 42
+
+: Mix of settings and removals of the same property is handled correctly
+
+udevadm control -p FOO= -p FOO=foo -p BAR=car -p BAR=
+udevadm trigger --action change --settle /dev/null
+test_property /dev/null PROP_FOO foo
+test_not_property /dev/null PROP_BAR
+
+exit 0