From: Lennart Poettering Date: Mon, 6 Mar 2023 12:23:48 +0000 (+0100) Subject: test: test new systemd-dissect --attach/--detach/--loop-ref= and /dev/loop/* symlinks X-Git-Tag: v254-rc1~1072^2~1 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=f5e46b9e09d4ff3f1e6ee6e3a90adc704780a661;p=thirdparty%2Fsystemd.git test: test new systemd-dissect --attach/--detach/--loop-ref= and /dev/loop/* symlinks Let's test that everything we just added works in combination. --- diff --git a/test/units/testsuite-50.sh b/test/units/testsuite-50.sh index cb99b811c93..741167a2154 100755 --- a/test/units/testsuite-50.sh +++ b/test/units/testsuite-50.sh @@ -430,6 +430,28 @@ mount -t ddi "${image}.gpt" "$T" -o ro,X-mount.mkdir,discard umount -R "$T" rmdir "$T" +LOOP="$(systemd-dissect --attach --loop-ref=waldo "${image}.raw")" + +# Wait until the symlinks we want to test are established +udevadm trigger -w "$LOOP" + +# Check if the /dev/loop/* symlinks really reference the right device +test /dev/loop/by-ref/waldo -ef "$LOOP" + +if [ "$(stat -c '%Hd:%Ld' "${image}.raw")" != '?d:?d' ] ; then + # Old stat didn't know the %Hd and %Ld specifiers and turned them into ?d + # instead. Let's simply skip the test on such old systems. + test "$(stat -c '/dev/loop/by-inode/%Hd:%Ld-%i' "${image}.raw")" -ef "$LOOP" +fi + +# Detach by loopback device +systemd-dissect --detach "$LOOP" + +# Detach by backing inode +systemd-dissect --attach --loop-ref=waldo "${image}.raw" +systemd-dissect --detach "${image}.raw" +(! systemd-dissect --detach "${image}.raw") + echo OK >/testok exit 0