2 # SPDX-License-Identifier: LGPL-2.1-or-later
6 TEST_RULE
="/run/udev/rules.d/49-test.rules"
10 mkdir
-p "${TEST_RULE%/*}"
11 [[ -e /etc
/udev
/udev.conf
]] && cp -f /etc
/udev
/udev.conf
/etc
/udev
/udev.conf.bak
13 cat >"${TEST_RULE}" <<EOF
14 ACTION!="add", GOTO="test_end"
15 SUBSYSTEM!="mem", GOTO="test_end"
16 KERNEL!="null", GOTO="test_end"
18 OPTIONS="log_level=debug"
19 PROGRAM=="/bin/touch /tmp/test-udev-marker"
20 PROGRAM!="/bin/sleep 60", ENV{PROGRAM_RESULT}="KILLED"
24 cat >/etc
/udev
/udev.conf
<<EOF
26 timeout_signal=SIGABRT
29 systemctl restart systemd-udevd.service
32 # shellcheck disable=SC2317
36 if [[ -n "$KILL_PID" ]]; then
42 [[ -e /etc
/udev
/udev.conf.bak
]] && mv -f /etc
/udev
/udev.conf.bak
/etc
/udev
/udev.conf
43 systemctl restart systemd-udevd.service
47 TMPDIR
=$
(mktemp
-d -p /tmp udev-tests.XXXXXX
)
48 udevadm monitor
--udev --property --subsystem-match=mem
>"$TMPDIR"/monitor.txt
&
51 SYSTEMD_LOG_LEVEL
=debug udevadm trigger
--verbose --action add
/dev
/null
54 if grep -q 'PROGRAM_RESULT=KILLED' "$TMPDIR"/monitor.txt
; then
59 cat "$TMPDIR"/monitor.txt
60 (! grep -q 'UDEV_WORKER_FAILED=1' "$TMPDIR"/monitor.txt
)
61 (! grep -q 'UDEV_WORKER_SIGNAL=6' "$TMPDIR"/monitor.txt
)
62 (! grep -q 'UDEV_WORKER_SIGNAL_NAME=ABRT' "$TMPDIR"/monitor.txt
)
63 grep -q 'PROGRAM_RESULT=KILLED' "$TMPDIR"/monitor.txt
76 TMPDIR
=$
(mktemp
-d -p /tmp udev-tests.XXXXXX
)
77 udevadm monitor
--udev --property --subsystem-match=mem
>"$TMPDIR"/monitor.txt
&
80 rm -f /tmp
/test-udev-marker
81 SYSTEMD_LOG_LEVEL
=debug udevadm trigger
--verbose --action add
/dev
/null
84 if [[ -z "$killed" ]]; then
85 if [[ -e /tmp
/test-udev-marker
]]; then
86 killall
--signal ABRT
--regexp udev-worker
89 elif grep -q 'UDEV_WORKER_FAILED=1' "$TMPDIR"/monitor.txt
; then
94 cat "$TMPDIR"/monitor.txt
95 grep -q 'UDEV_WORKER_FAILED=1' "$TMPDIR"/monitor.txt
96 grep -q 'UDEV_WORKER_SIGNAL=6' "$TMPDIR"/monitor.txt
97 grep -q 'UDEV_WORKER_SIGNAL_NAME=ABRT' "$TMPDIR"/monitor.txt
98 (! grep -q 'PROGRAM_RESULT=KILLED' "$TMPDIR"/monitor.txt
)