From: Ruediger Meier Date: Fri, 31 Mar 2017 10:09:46 +0000 (+0200) Subject: test: fix mountpoint device check in libmount/loop X-Git-Tag: v2.30-rc1~149 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=a837b3bdf30d9d8674748f32e0c8fa230968b677;p=thirdparty%2Futil-linux.git test: fix mountpoint device check in libmount/loop This test could fail if the build directory is somehow exoticly mounted (shared bind mounts, symlinks). CC: Stanislav Brabec Signed-off-by: Ruediger Meier --- diff --git a/tests/ts/libmount/loop b/tests/ts/libmount/loop index 452732f32a..893d902e6b 100755 --- a/tests/ts/libmount/loop +++ b/tests/ts/libmount/loop @@ -23,12 +23,24 @@ TS_DESC="losetup-loop" ts_init "$*" ts_check_test_command "$TS_CMD_MOUNT" +ts_check_test_command "$TS_CMD_FINDMNT" ts_check_test_command "$TS_CMD_LOSETUP" ts_skip_nonroot ts_check_losetup ts_check_prog "mkfs.ext3" +function verify_mount_dev { + local dev=$1 + local mp=$2 + local dev_mounted=$($TS_CMD_FINDMNT -no SOURCE "$mp") + + if test "$dev" != "$dev_mounted" ; then + echo "Mounted incorrect device: have '$dev_mounted', want '$dev'" >&2 + return 1 + fi +} + # # file-* tests: Backing file is a regular file # @@ -61,10 +73,7 @@ ts_init_subtest "dev-loop" [ -d "$TS_MOUNTPOINT" ] || mkdir -p $TS_MOUNTPOINT LODEV=$( $TS_CMD_LOSETUP --find --nooverlap --show $BACKFILE 2>> $TS_OUTPUT ) $TS_CMD_MOUNT $LODEV "$TS_MOUNTPOINT" >> $TS_OUTPUT 2>&1 -MOUNTED_LODEV="$( $TS_CMD_MOUNT | grep "$TS_MOUNTPOINT" | while read LODEV REST ; do echo $LODEV ; done )" -if test "$MOUNTED_LODEV" != "$LODEV" ; then - echo "Mounted incorrect device mounts: $MOUNTED_LODEV, wants: $LODEV" >> $TS_OUTPUT -fi +verify_mount_dev "$LODEV" "$TS_MOUNTPOINT" >> $TS_OUTPUT 2>&1 $TS_CMD_UMOUNT "$TS_MOUNTPOINT" >> $TS_OUTPUT 2>&1 $TS_CMD_LOSETUP --detach $LODEV >> $TS_OUTPUT 2>&1 udevadm settle @@ -75,10 +84,7 @@ ts_init_subtest "o-loop-val" [ -d "$TS_MOUNTPOINT" ] || mkdir -p $TS_MOUNTPOINT LODEV=$( $TS_CMD_LOSETUP --find 2>> $TS_OUTPUT ) $TS_CMD_MOUNT -oloop=$LODEV "$BACKFILE" "$TS_MOUNTPOINT" >> $TS_OUTPUT 2>&1 -MOUNTED_LODEV="$( cat /proc/self/mounts | grep "$TS_MOUNTPOINT" | while read LODEV REST ; do echo $LODEV ; done )" -if test "$MOUNTED_LODEV" != "$LODEV" ; then - echo "Mounted incorrect device mounts: $MOUNTED_LODEV, wants: $LODEV" >> $TS_OUTPUT -fi +verify_mount_dev "$LODEV" "$TS_MOUNTPOINT" >> $TS_OUTPUT 2>&1 $TS_CMD_UMOUNT "$TS_MOUNTPOINT" >> $TS_OUTPUT 2>&1 udevadm settle ts_log "Success" @@ -88,10 +94,7 @@ ts_init_subtest "reuse" [ -d "$TS_MOUNTPOINT" ] || mkdir -p $TS_MOUNTPOINT LODEV=$( $TS_CMD_LOSETUP --find --nooverlap --show "$BACKFILE" 2>> $TS_OUTPUT ) $TS_CMD_MOUNT "$BACKFILE" "$TS_MOUNTPOINT" >> $TS_OUTPUT 2>&1 -MOUNTED_LODEV="$( cat /proc/self/mounts | grep "$TS_MOUNTPOINT" | while read LODEV REST ; do echo $LODEV ; done )" -if test "$MOUNTED_LODEV" != "$LODEV" ; then - echo "Mounted incorrect device mounts: $MOUNTED_LODEV, wants: $LODEV" >> $TS_OUTPUT -fi +verify_mount_dev "$LODEV" "$TS_MOUNTPOINT" >> $TS_OUTPUT 2>&1 $TS_CMD_UMOUNT "$TS_MOUNTPOINT" >> $TS_OUTPUT 2>&1 $TS_CMD_LOSETUP --detach $LODEV >> $TS_OUTPUT 2>&1 udevadm settle