From: Karel Zak Date: Thu, 26 Sep 2024 13:49:37 +0000 (+0200) Subject: tests: add X-mount.nocanonicalize tests X-Git-Tag: v2.42-start~187^2~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=a992cec68cac29ffbb17a792a198af5163bf0a77;p=thirdparty%2Futil-linux.git tests: add X-mount.nocanonicalize tests Signed-off-by: Karel Zak --- diff --git a/tests/expected/mount/xnocanon-file-over-symlink b/tests/expected/mount/xnocanon-file-over-symlink new file mode 100644 index 0000000000..2ba28d2159 --- /dev/null +++ b/tests/expected/mount/xnocanon-file-over-symlink @@ -0,0 +1,2 @@ +A-data +regular file diff --git a/tests/expected/mount/xnocanon-symlink-over-file b/tests/expected/mount/xnocanon-symlink-over-file new file mode 100644 index 0000000000..3b7a7d0793 --- /dev/null +++ b/tests/expected/mount/xnocanon-symlink-over-file @@ -0,0 +1,2 @@ +A-data +symbolic link diff --git a/tests/expected/mount/xnocanon-symlink-over-symlink b/tests/expected/mount/xnocanon-symlink-over-symlink new file mode 100644 index 0000000000..3b7a7d0793 --- /dev/null +++ b/tests/expected/mount/xnocanon-symlink-over-symlink @@ -0,0 +1,2 @@ +A-data +symbolic link diff --git a/tests/ts/mount/xnocanon b/tests/ts/mount/xnocanon new file mode 100755 index 0000000000..122dfbbf1b --- /dev/null +++ b/tests/ts/mount/xnocanon @@ -0,0 +1,80 @@ +#!/bin/bash + +# +# Copyright (C) 2024 Karel Zak +# +# This file is part of util-linux. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This file is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +TS_TOPDIR="${0%/*}/../.." +TS_DESC="X-mount.nocanonicalize" + +. "$TS_TOPDIR"/functions.sh +ts_init "$*" + +ts_check_test_command "$TS_CMD_MOUNT" +ts_check_test_command "$TS_CMD_UMOUNT" +ts_check_test_command "$TS_CMD_FINDMNT" + +ts_skip_nonroot + +[ "$("$TS_HELPER_SYSINFO" fsopen-ok)" == "1" ] || ts_skip "no fs-API" + +[ -d $TS_MOUNTPOINT ] || mkdir -p $TS_MOUNTPOINT + +SYMLINK_A="$TS_OUTDIR/${TS_TESTNAME}-symlink-A" +SYMLINK_B="$TS_OUTDIR/${TS_TESTNAME}-symlink-B" + +FILE_A="$TS_OUTDIR/${TS_TESTNAME}-file-A" +FILE_B="$TS_OUTDIR/${TS_TESTNAME}-file-B" + +rm -f $FILE_A $FILE_B $SYMLINK_A $SYMLINK_B + +echo "A-data" > $FILE_A +echo "B-data" > $FILE_B + +ln -s $FILE_A $SYMLINK_A +ln -s $FILE_B $SYMLINK_B + + +# Symlink converted to file +# +ts_init_subtest "file-over-symlink" +$TS_CMD_MOUNT -o X-mount.nocanonicalize --bind $FILE_A $SYMLINK_B >> $TS_OUTPUT 2>> $TS_ERRLOG +udevadm settle +cat $SYMLINK_B >> $TS_OUTPUT +stat -c '%F' $SYMLINK_B >> $TS_OUTPUT +$TS_CMD_UMOUNT $SYMLINK_B >> $TS_OUTPUT 2>> $TS_ERRLOG +ts_finalize_subtest + +# File converted to symlink +# +ts_init_subtest "symlink-over-file" +$TS_CMD_MOUNT -o X-mount.nocanonicalize --bind $SYMLINK_A $FILE_B >> $TS_OUTPUT 2>> $TS_ERRLOG +udevadm settle +cat $FILE_B >> $TS_OUTPUT +stat -c '%F' $FILE_B >> $TS_OUTPUT +$TS_CMD_UMOUNT $FILE_B >> $TS_OUTPUT 2>> $TS_ERRLOG +ts_finalize_subtest + +# Symlink converted to another symlink +# +ts_init_subtest "symlink-over-symlink" +$TS_CMD_MOUNT -o X-mount.nocanonicalize --bind $SYMLINK_A $SYMLINK_B >> $TS_OUTPUT 2>> $TS_ERRLOG +udevadm settle +cat $SYMLINK_B >> $TS_OUTPUT +stat -c '%F' $SYMLINK_B >> $TS_OUTPUT +$TS_CMD_UMOUNT $SYMLINK_B >> $TS_OUTPUT 2>> $TS_ERRLOG +ts_finalize_subtest + + +ts_finalize