summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrantisek Sumsal <frantisek@sumsal.cz>2021-09-29 20:30:08 +0200
committerFrantisek Sumsal <frantisek@sumsal.cz>2021-09-30 12:12:00 +0200
commit1c3f490f230c1dad83901b1768456082159f2cbe (patch)
tree0a1554e98d09f1aaa8ec1488ccbc035bb471cca4
parent91c64ad620d9bfdfcaeedc952ccf8a380e09e663 (diff)
downloadsystemd-1c3f490f230c1dad83901b1768456082159f2cbe.tar.gz
test: shellcheck-ify test scripts
-rwxr-xr-xtest/TEST-13-NSPAWN-SMOKE/test.sh2
-rwxr-xr-xtest/TEST-57-ONSUCCESS-UPHOLD/test.sh3
-rwxr-xr-xtest/TEST-58-REPART/test.sh5
-rwxr-xr-xtest/TEST-59-RELOADING-RESTART/test.sh5
-rwxr-xr-xtest/TEST-60-MOUNT-RATELIMIT/test.sh4
-rwxr-xr-xtest/TEST-62-RESTRICT-IFACES/test.sh9
-rwxr-xr-xtest/hwdb-test.sh5
-rwxr-xr-xtest/run-integration-tests.sh17
-rw-r--r--test/test-functions11
-rwxr-xr-xtest/test-network-generator-conversion.sh6
-rwxr-xr-xtest/test-path-util/script.sh4
-rwxr-xr-xtest/testsuite-16.units/extend-timeout.sh64
-rwxr-xr-xtest/udev-dmi-memory-id-test.sh3
-rwxr-xr-xtest/units/testsuite-04.sh4
-rwxr-xr-xtest/units/testsuite-17.06.sh10
-rwxr-xr-xtest/units/testsuite-54.sh2
-rwxr-xr-xtest/units/testsuite-61.sh3
-rwxr-xr-xtest/units/testsuite-62.sh28
-rwxr-xr-xtest/units/testsuite-64.sh2
19 files changed, 103 insertions, 84 deletions
diff --git a/test/TEST-13-NSPAWN-SMOKE/test.sh b/test/TEST-13-NSPAWN-SMOKE/test.sh
index e7e6371fb6..a708465bdd 100755
--- a/test/TEST-13-NSPAWN-SMOKE/test.sh
+++ b/test/TEST-13-NSPAWN-SMOKE/test.sh
@@ -14,7 +14,7 @@ test_append_files() {
# On openSUSE the static linked version of busybox is named "busybox-static".
busybox="$(type -P busybox-static || type -P busybox)"
- inst_simple "$busybox" "$(dirname $busybox)/busybox"
+ inst_simple "$busybox" "$(dirname "$busybox")/busybox"
if selinuxenabled >/dev/null; then
image_install selinuxenabled
diff --git a/test/TEST-57-ONSUCCESS-UPHOLD/test.sh b/test/TEST-57-ONSUCCESS-UPHOLD/test.sh
index 145c88fcd8..34513f2ba2 100755
--- a/test/TEST-57-ONSUCCESS-UPHOLD/test.sh
+++ b/test/TEST-57-ONSUCCESS-UPHOLD/test.sh
@@ -2,6 +2,7 @@
set -e
TEST_DESCRIPTION="test OnSuccess= + Uphold= + PropagatesStopTo= + BindsTo="
-. $TEST_BASE_DIR/test-functions
+# shellcheck source=test/test-functions
+. "$TEST_BASE_DIR/test-functions"
do_test "$@" 57
diff --git a/test/TEST-58-REPART/test.sh b/test/TEST-58-REPART/test.sh
index 3a3c33f141..df5ad3c0c6 100755
--- a/test/TEST-58-REPART/test.sh
+++ b/test/TEST-58-REPART/test.sh
@@ -1,7 +1,10 @@
#!/usr/bin/env bash
set -e
+
TEST_DESCRIPTION="test systemd-repart"
TEST_NO_NSPAWN=1
-. $TEST_BASE_DIR/test-functions
+
+# shellcheck source=test/test-functions
+. "$TEST_BASE_DIR/test-functions"
do_test "$@"
diff --git a/test/TEST-59-RELOADING-RESTART/test.sh b/test/TEST-59-RELOADING-RESTART/test.sh
index 9232d7816a..343848e33a 100755
--- a/test/TEST-59-RELOADING-RESTART/test.sh
+++ b/test/TEST-59-RELOADING-RESTART/test.sh
@@ -1,9 +1,10 @@
#!/usr/bin/env bash
set -e
-TEST_DESCRIPTION="Test auto restart of exited services which are stuck in reloading state"
+TEST_DESCRIPTION="Test auto restart of exited services which are stuck in reloading state"
TEST_NO_QEMU=1
-. $TEST_BASE_DIR/test-functions
+# shellcheck source=test/test-functions
+. "$TEST_BASE_DIR/test-functions"
do_test "$@"
diff --git a/test/TEST-60-MOUNT-RATELIMIT/test.sh b/test/TEST-60-MOUNT-RATELIMIT/test.sh
index f9eb11ccb4..e14bc83e09 100755
--- a/test/TEST-60-MOUNT-RATELIMIT/test.sh
+++ b/test/TEST-60-MOUNT-RATELIMIT/test.sh
@@ -1,7 +1,9 @@
#!/usr/bin/env bash
set -e
+
TEST_DESCRIPTION="Test that mount/unmount storms can enter/exit rate limit state and will not leak units"
-. $TEST_BASE_DIR/test-functions
+# shellcheck source=test/test-functions
+. "$TEST_BASE_DIR/test-functions"
do_test "$@"
diff --git a/test/TEST-62-RESTRICT-IFACES/test.sh b/test/TEST-62-RESTRICT-IFACES/test.sh
index b2829d2a1f..85d5a53473 100755
--- a/test/TEST-62-RESTRICT-IFACES/test.sh
+++ b/test/TEST-62-RESTRICT-IFACES/test.sh
@@ -1,9 +1,10 @@
#!/usr/bin/env bash
+set -e
+TEST_DESCRIPTION="test RestrictNetworkInterfaces="
TEST_NO_NSPAWN=1
-set -e
-TEST_DESCRIPTION="test RestrictNetworkInterfaces="
-. $TEST_BASE_DIR/test-functions
+# shellcheck source=test/test-functions
+. "$TEST_BASE_DIR/test-functions"
-do_test "$@" 62
+do_test "$@"
diff --git a/test/hwdb-test.sh b/test/hwdb-test.sh
index 57d98e513b..0551f26a2d 100755
--- a/test/hwdb-test.sh
+++ b/test/hwdb-test.sh
@@ -10,7 +10,7 @@
set -e
export SYSTEMD_LOG_LEVEL=info
-ROOTDIR=$(dirname $(dirname $(readlink -f $0)))
+ROOTDIR="$(dirname "$(dirname "$(readlink -f "$0")")")"
SYSTEMD_HWDB="${1:?missing argument}"
if [ ! -x "$SYSTEMD_HWDB" ]; then
@@ -18,7 +18,8 @@ if [ ! -x "$SYSTEMD_HWDB" ]; then
exit 1
fi
-D=$(mktemp --tmpdir --directory "hwdb-test.XXXXXXXXXX")
+D="$(mktemp --tmpdir --directory "hwdb-test.XXXXXXXXXX")"
+# shellcheck disable=SC2064
trap "rm -rf '$D'" EXIT INT QUIT PIPE
mkdir -p "$D/etc/udev"
ln -s "$ROOTDIR/hwdb.d" "$D/etc/udev/hwdb.d"
diff --git a/test/run-integration-tests.sh b/test/run-integration-tests.sh
index 47cf8a8912..2b48417d58 100755
--- a/test/run-integration-tests.sh
+++ b/test/run-integration-tests.sh
@@ -3,7 +3,7 @@ set -e
if [ "$NO_BUILD" ]; then
BUILD_DIR=""
-elif BUILD_DIR="$($(dirname "$0")/../tools/find-build-dir.sh)"; then
+elif BUILD_DIR="$("$(dirname "$0")/../tools/find-build-dir.sh")"; then
ninja -C "$BUILD_DIR"
else
echo "No build found, please set BUILD_DIR or NO_BUILD" >&2
@@ -73,35 +73,36 @@ fi
# Run actual tests (if requested)
if [[ $args =~ [a-z] ]]; then
for TEST in $SELECTED_TESTS; do
- COUNT=$(($COUNT+1))
+ COUNT=$((COUNT+1))
- pass_deny_list $TEST || continue
+ pass_deny_list "$TEST" || continue
start=$(date +%s)
echo -e "\n--x-- Running $TEST --x--"
set +e
+ # shellcheck disable=SC2086
( set -x ; make -C "$TEST" $args )
RESULT=$?
set -e
echo "--x-- Result of $TEST: $RESULT --x--"
results["$TEST"]="$RESULT"
- times["$TEST"]=$(( $(date +%s) - $start ))
+ times["$TEST"]=$(( $(date +%s) - start ))
- [ "$RESULT" -ne "0" ] && FAILURES=$(($FAILURES+1))
+ [ "$RESULT" -ne "0" ] && FAILURES=$((FAILURES+1))
done
fi
# Run clean-again, if requested, and if no tests failed
-if [ $FAILURES -eq 0 -a $CLEANAGAIN = 1 ]; then
- for TEST in ${!results[@]}; do
+if [[ $FAILURES -eq 0 && $CLEANAGAIN -eq 1 ]]; then
+ for TEST in "${!results[@]}"; do
( set -x ; make -C "$TEST" clean-again )
done
fi
echo ""
-for TEST in ${!results[@]}; do
+for TEST in "${!results[@]}"; do
RESULT="${results[$TEST]}"
time="${times[$TEST]}"
string=$([ "$RESULT" = "0" ] && echo "SUCCESS" || echo "FAIL")
diff --git a/test/test-functions b/test/test-functions
index 2d1d15c389..a9a01a80d0 100644
--- a/test/test-functions
+++ b/test/test-functions
@@ -1,5 +1,5 @@
#!/usr/bin/env bash
-# shellcheck disable=SC2031
+# shellcheck disable=SC2030,SC2031
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh tw=180
# Note: the shellcheck line above disables warning for variables which were
@@ -992,9 +992,11 @@ install_iscsi() {
# dumps a list of files (perl modules) required by `tgt-admin` at
# the runtime plus any DSOs loaded via DynaLoader. This list is then
# passed to `inst_simple` which installs the necessary files into the image
+ #
+ # shellcheck disable=SC2016
while read -r file; do
inst_simple "$file"
- done < <(perl -- <(cat $(command -v tgt-admin) <(echo -e 'use DynaLoader; print map { "$_\n" } values %INC; print join("\n", @DynaLoader::dl_shared_objects)')) -p | awk '/^\// { print $1 }')
+ done < <(perl -- <(cat "$(command -v tgt-admin)" <(echo -e 'use DynaLoader; print map { "$_\n" } values %INC; print join("\n", @DynaLoader::dl_shared_objects)')) -p | awk '/^\// { print $1 }')
fi
}
@@ -1529,7 +1531,7 @@ install_haveged() {
dinfo "Install haveged files"
inst /usr/sbin/haveged
for u in /usr/lib/systemd/system/haveged*; do
- inst $u
+ inst "$u"
done
fi
}
@@ -1718,6 +1720,7 @@ install_pam() {
done
}
+# shellcheck disable=SC2120
install_keymaps() {
dinfo "Install keymaps"
# The first three paths may be deprecated.
@@ -2579,7 +2582,7 @@ _test_cleanup() {
[[ -n "$initdir" ]] && _umount_dir "$initdir"
[[ -n "$IMAGE_PUBLIC" ]] && rm -vf "$IMAGE_PUBLIC"
# If multiple setups/cleans are ran in parallel, this can cause a race
- if [[ -n "$IMAGESTATEDIR" && $TEST_PARALLELIZE -ne 1 ]]; then
+ if [[ -n "$IMAGESTATEDIR" && $TEST_PARALLELIZE -ne 1 ]]; then
rm -vf "${IMAGESTATEDIR}/default.img"
fi
[[ -n "$TESTDIR" ]] && rm -vfr "$TESTDIR"
diff --git a/test/test-network-generator-conversion.sh b/test/test-network-generator-conversion.sh
index 50df69f1b0..da7f985dee 100755
--- a/test/test-network-generator-conversion.sh
+++ b/test/test-network-generator-conversion.sh
@@ -18,11 +18,13 @@ for f in "$src"/test-*.input; do
(
out=$(mktemp --tmpdir --directory "test-network-generator-conversion.XXXXXXXXXX")
+ # shellcheck disable=SC2064
trap "rm -rf '$out'" EXIT INT QUIT PIPE
- $generator --root "$out" -- $(cat $f)
+ # shellcheck disable=SC2046
+ $generator --root "$out" -- $(cat "$f")
- if ! diff -u "$out"/run/systemd/network ${f%.input}.expected; then
+ if ! diff -u "$out/run/systemd/network" "${f%.input}.expected"; then
echo "**** Unexpected output for $f"
exit 1
fi
diff --git a/test/test-path-util/script.sh b/test/test-path-util/script.sh
index 57c93e7476..8ffd8d7889 100755
--- a/test/test-path-util/script.sh
+++ b/test/test-path-util/script.sh
@@ -1,6 +1,6 @@
#!/bin/sh
-echo "$0 $@"
-test "$(basename $0)" = "script.sh" || exit 1
+echo "$0 $*"
+test "$(basename "$0")" = "script.sh" || exit 1
test "$1" = "--version" || exit 2
echo "Life is good"
diff --git a/test/testsuite-16.units/extend-timeout.sh b/test/testsuite-16.units/extend-timeout.sh
index ed1af8afeb..c7b2627945 100755
--- a/test/testsuite-16.units/extend-timeout.sh
+++ b/test/testsuite-16.units/extend-timeout.sh
@@ -1,62 +1,62 @@
#!/usr/bin/env bash
-set -x
-set -e
+set -eux
set -o pipefail
# sleep interval (seconds)
-: ${sleep_interval:=1}
+sleep_interval="${sleep_interval:-1}"
# extend_timeout_interval second(s)
-: ${extend_timeout_interval:=1}
+extend_timeout_interval="${extend_timeout_interval:-1}"
# number of sleep_intervals before READY=1
-: ${start_intervals:=10}
+start_intervals="${start_intervals:-10}"
# number of sleep_intervals before exiting
-: ${stop_intervals:=10}
+stop_intervals="${stop_intervals:-10}"
# run intervals, number of sleep_intervals to run
-: ${run_intervals:=7}
+run_intervals="${run_intervals:-7}"
# We convert to usec
-extend_timeout_interval=$(( $extend_timeout_interval * 1000000 ))
+extend_timeout_interval=$((extend_timeout_interval * 1000000))
-trap "{ touch /${SERVICE}.terminated; exit 1; }" SIGTERM SIGABRT
+# shellcheck disable=SC2064
+trap "{ touch /${SERVICE}.terminated; exit 1; }" SIGTERM SIGABRT
-rm -f /${SERVICE}.*
-touch /${SERVICE}.startfail
+rm -f "/${SERVICE}".*
+touch "/${SERVICE}.startfail"
-systemd-notify EXTEND_TIMEOUT_USEC=$extend_timeout_interval
-while [ $start_intervals -gt 0 ]
+systemd-notify EXTEND_TIMEOUT_USEC="$extend_timeout_interval"
+while [[ $start_intervals -gt 0 ]]
do
- sleep $sleep_interval
- start_intervals=$(( $start_intervals - 1 ))
- systemd-notify EXTEND_TIMEOUT_USEC=$extend_timeout_interval
+ sleep "$sleep_interval"
+ start_intervals=$((start_intervals - 1))
+ systemd-notify EXTEND_TIMEOUT_USEC="$extend_timeout_interval"
done
systemd-notify --ready --status="Waiting for your request"
-touch /${SERVICE}.runtimefail
-rm /${SERVICE}.startfail
+touch "/${SERVICE}.runtimefail"
+rm "/${SERVICE}.startfail"
-systemd-notify EXTEND_TIMEOUT_USEC=$extend_timeout_interval
-while [ $run_intervals -gt 0 ]
+systemd-notify EXTEND_TIMEOUT_USEC="$extend_timeout_interval"
+while [[ $run_intervals -gt 0 ]]
do
- sleep $sleep_interval
- run_intervals=$(( $run_intervals - 1 ))
- systemd-notify EXTEND_TIMEOUT_USEC=$extend_timeout_interval
+ sleep "$sleep_interval"
+ run_intervals=$((run_intervals - 1))
+ systemd-notify EXTEND_TIMEOUT_USEC="$extend_timeout_interval"
done
systemd-notify STOPPING=1
-touch /${SERVICE}.stopfail
-rm /${SERVICE}.runtimefail
+touch "/${SERVICE}.stopfail"
+rm "/${SERVICE}.runtimefail"
-systemd-notify EXTEND_TIMEOUT_USEC=$extend_timeout_interval
-while [ $stop_intervals -gt 0 ]
+systemd-notify EXTEND_TIMEOUT_USEC="$extend_timeout_interval"
+while [[ $stop_intervals -gt 0 ]]
do
- sleep $sleep_interval
- stop_intervals=$(( $stop_intervals - 1 ))
- systemd-notify EXTEND_TIMEOUT_USEC=$extend_timeout_interval
+ sleep "$sleep_interval"
+ stop_intervals=$((stop_intervals - 1))
+ systemd-notify EXTEND_TIMEOUT_USEC="$extend_timeout_interval"
done
-touch /${SERVICE}.success
-rm /${SERVICE}.stopfail
+touch "/${SERVICE}.success"
+rm "/${SERVICE}.stopfail"
exit 0
diff --git a/test/udev-dmi-memory-id-test.sh b/test/udev-dmi-memory-id-test.sh
index e8b69245d8..f1f4c26caa 100755
--- a/test/udev-dmi-memory-id-test.sh
+++ b/test/udev-dmi-memory-id-test.sh
@@ -8,10 +8,11 @@ input="$2"
expected="$3"
output=$(mktemp --tmpdir "test-udev-dmi-memory-id.XXXXXXXXXX")
+# shellcheck disable=SC2064
trap "rm '$output'" EXIT INT QUIT PIPE
(
set -x
- "$dmi_memory_id" -F "$input" >$output
+ "$dmi_memory_id" -F "$input" >"$output"
diff -u "$output" "$expected"
)
diff --git a/test/units/testsuite-04.sh b/test/units/testsuite-04.sh
index 4f009b4c45..562f364700 100755
--- a/test/units/testsuite-04.sh
+++ b/test/units/testsuite-04.sh
@@ -7,7 +7,7 @@ trap "journalctl --rotate --vacuum-size=16M" EXIT
# Rotation/flush test, see https://github.com/systemd/systemd/issues/19895
journalctl --relinquish-var
-for i in {0..50}; do
+for _ in {0..50}; do
dd if=/dev/urandom bs=1M count=1 | base64 | systemd-cat
done
journalctl --rotate
@@ -116,7 +116,7 @@ cmp /expected /output
# test that LogLevelMax can also suppress logging about services, not only by services
systemctl start silent-success
journalctl --sync
-[[ -z `journalctl -b -q -u silent-success.service` ]]
+[[ -z "$(journalctl -b -q -u silent-success.service)" ]]
# Add new tests before here, the journald restarts below
# may make tests flappy.
diff --git a/test/units/testsuite-17.06.sh b/test/units/testsuite-17.06.sh
index 71769bc50a..cd98ed8217 100755
--- a/test/units/testsuite-17.06.sh
+++ b/test/units/testsuite-17.06.sh
@@ -8,9 +8,9 @@ function check_validity() {
local f ID_OR_HANDLE
for f in /run/udev/watch/*; do
- ID_OR_HANDLE=$(readlink $f)
- test -L /run/udev/watch/${ID_OR_HANDLE}
- test $(readlink /run/udev/watch/${ID_OR_HANDLE}) = $(basename $f)
+ ID_OR_HANDLE="$(readlink "$f")"
+ test -L "/run/udev/watch/${ID_OR_HANDLE}"
+ test "$(readlink "/run/udev/watch/${ID_OR_HANDLE}")" = "$(basename "$f")"
done
}
@@ -49,7 +49,7 @@ check
MAJOR=$(udevadm info /dev/sda | grep -e '^E: MAJOR=' | sed -e 's/^E: MAJOR=//')
MINOR=$(udevadm info /dev/sda | grep -e '^E: MINOR=' | sed -e 's/^E: MINOR=//')
-test -L /run/udev/watch/b${MAJOR}:${MINOR}
+test -L "/run/udev/watch/b${MAJOR}:${MINOR}"
cat >/run/udev/rules.d/50-testsuite.rules <<EOF
ACTION=="change", SUBSYSTEM=="block", KERNEL=="sda", OPTIONS:="nowatch"
@@ -59,7 +59,7 @@ check
MAJOR=$(udevadm info /dev/sda | grep -e '^E: MAJOR=' | sed -e 's/^E: MAJOR=//')
MINOR=$(udevadm info /dev/sda | grep -e '^E: MINOR=' | sed -e 's/^E: MINOR=//')
-test ! -e /run/udev/watch/b${MAJOR}:${MINOR}
+test ! -e "/run/udev/watch/b${MAJOR}:${MINOR}"
rm /run/udev/rules.d/00-debug.rules
rm /run/udev/rules.d/50-testsuite.rules
diff --git a/test/units/testsuite-54.sh b/test/units/testsuite-54.sh
index d8c9ffa38b..eb72597961 100755
--- a/test/units/testsuite-54.sh
+++ b/test/units/testsuite-54.sh
@@ -43,7 +43,7 @@ if systemctl --version | grep -q -- +OPENSSL ; then
systemd-creds encrypt --name=test-54 /tmp/test-54-plaintext /tmp/test-54-ciphertext
systemd-creds decrypt --name=test-54 /tmp/test-54-ciphertext | cmp /tmp/test-54-plaintext
- systemd-run -p SetCredentialEncrypted=test-54:"`cat /tmp/test-54-ciphertext`" \
+ systemd-run -p SetCredentialEncrypted=test-54:"$(cat /tmp/test-54-ciphertext)" \
--wait \
--pipe \
cat '${CREDENTIALS_DIRECTORY}/test-54' | cmp /tmp/test-54-plaintext
diff --git a/test/units/testsuite-61.sh b/test/units/testsuite-61.sh
index 0810de2051..ef9b6b57c5 100755
--- a/test/units/testsuite-61.sh
+++ b/test/units/testsuite-61.sh
@@ -3,6 +3,7 @@ set -eux
set -o pipefail
TESTS_GLOB="test-loop-block"
-. $(dirname $0)/testsuite-02.sh
+# shellcheck source=test/units/testsuite-02.sh
+. "$(dirname "$0")/testsuite-02.sh"
exit 0
diff --git a/test/units/testsuite-62.sh b/test/units/testsuite-62.sh
index 9b22d79fd3..140ccfe36f 100755
--- a/test/units/testsuite-62.sh
+++ b/test/units/testsuite-62.sh
@@ -6,28 +6,28 @@ setup() {
systemd-analyze log-level debug
systemd-analyze log-target console
- for i in `seq 0 3`;
+ for i in {0..3};
do
- ip netns del ns${i} || true
- ip link del veth${i} || true
- ip netns add ns${i}
- ip link add veth${i} type veth peer name veth${i}_
- ip link set veth${i}_ netns ns${i}
- ip -n ns${i} link set dev veth${i}_ up
- ip -n ns${i} link set dev lo up
- ip -n ns${i} addr add "192.168.113."$((4*i+1))/30 dev veth${i}_
- ip link set dev veth${i} up
- ip addr add "192.168.113."$((4*i+2))/30 dev veth${i}
+ ip netns del "ns${i}" || true
+ ip link del "veth${i}" || true
+ ip netns add "ns${i}"
+ ip link add "veth${i}" type veth peer name "veth${i}_"
+ ip link set "veth${i}_" netns "ns${i}"
+ ip -n "ns${i}" link set dev "veth${i}_" up
+ ip -n "ns${i}" link set dev lo up
+ ip -n "ns${i}" addr add "192.168.113."$((4*i+1))/30 dev "veth${i}_"
+ ip link set dev "veth${i}" up
+ ip addr add "192.168.113."$((4*i+2))/30 dev "veth${i}"
done
}
teardown() {
set +e
- for i in `seq 0 3`;
+ for i in {0..3};
do
- ip netns del ns${i}
- ip link del veth${i}
+ ip netns del "ns${i}"
+ ip link del "veth${i}"
done
systemd-analyze log-level info
diff --git a/test/units/testsuite-64.sh b/test/units/testsuite-64.sh
index bcc4dc9f17..13a1316b7a 100755
--- a/test/units/testsuite-64.sh
+++ b/test/units/testsuite-64.sh
@@ -76,6 +76,8 @@ helper_wait_for_pvscan() {
# Get major and minor numbers from the udev database
# (udevadm returns MAJOR= and MINOR= expressions, so let's pull them into
# the current environment via `source` for easier parsing)
+ #
+ # shellcheck source=/dev/null
source <(udevadm info -q property "$real_dev" | grep -E "(MAJOR|MINOR)=")
# Sanity check if we got correct major and minor numbers
test -e "/sys/dev/block/$MAJOR:$MINOR/"