summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKarel Zak2007-06-15 21:32:45 +0200
committerKarel Zak2007-06-15 21:32:45 +0200
commitd20b54c4bbd757f0f2604a2f3ac295961100fedd (patch)
treec03c70ef1cf8261ca9781953bb31217407a7eab5
parenttests: add support for suid programs (diff)
downloadkernel-qcow2-util-linux-d20b54c4bbd757f0f2604a2f3ac295961100fedd.tar.gz
kernel-qcow2-util-linux-d20b54c4bbd757f0f2604a2f3ac295961100fedd.tar.xz
kernel-qcow2-util-linux-d20b54c4bbd757f0f2604a2f3ac295961100fedd.zip
tests: add mount /dev/symlink test
Signed-off-by: Karel Zak <kzak@redhat.com>
-rw-r--r--tests/Makefile.am1
-rw-r--r--tests/commands.sh.in3
-rw-r--r--tests/expected/ts-fstab-symlink1
-rwxr-xr-xtests/ts-fstab-symlink69
4 files changed, 74 insertions, 0 deletions
diff --git a/tests/Makefile.am b/tests/Makefile.am
index ff25c5137..d44850864 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -21,6 +21,7 @@ EXTRA_DIST = expected/ \
ts-fstab-devname \
ts-fstab-devname2label \
ts-fstab-devname2uuid \
+ ts-fstab-symlink \
ts-hwclock-systohc \
ts-ipcs-headers \
ts-ipcs-limits \
diff --git a/tests/commands.sh.in b/tests/commands.sh.in
index 86f3d11ad..c659d1a30 100644
--- a/tests/commands.sh.in
+++ b/tests/commands.sh.in
@@ -1,6 +1,9 @@
TOPDIR=@top_srcdir@
TS_TOPDIR=$TOPDIR/tests
+# Misc settings
+TS_TESTUSER=${TS_TESTUSER:-"test"}
+
# helpers
TS_HELPER_SYSINFO="$TS_TOPDIR/helpers/mnt_test_sysinfo"
TS_HELPER_LIBPRELOAD_TIME="$TS_TOPDIR/helpers/.libs/libpreload-time.so"
diff --git a/tests/expected/ts-fstab-symlink b/tests/expected/ts-fstab-symlink
new file mode 100644
index 000000000..35821117c
--- /dev/null
+++ b/tests/expected/ts-fstab-symlink
@@ -0,0 +1 @@
+Success
diff --git a/tests/ts-fstab-symlink b/tests/ts-fstab-symlink
new file mode 100755
index 000000000..d8174fd63
--- /dev/null
+++ b/tests/ts-fstab-symlink
@@ -0,0 +1,69 @@
+#!/bin/bash
+
+#
+# Copyright (C) 2007 Karel Zak <kzak@redhat.com>
+#
+# This file is part of util-linux-ng.
+#
+# 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.
+#
+# 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.
+#
+
+. commands.sh
+. functions.sh
+
+TS_COMPONENT="fstab"
+TS_DESC="symlink"
+
+ts_init "$*"
+ts_skip_nonroot
+
+set -o pipefail
+
+LINKNAME="$(pwd)/$TS_OUTDIR/${TS_NAME}_lnk"
+
+DEVICE=$(ts_device_init)
+[ "$?" == 0 ] || ts_die "Cannot init device"
+
+mkfs.ext3 $DEVICE &> /dev/null
+[ "$?" == "0" ] || ts_die "Cannot make ext3 on $DEVICE" $DEVICE
+
+ts_device_has "TYPE" "ext3" $DEVICE
+[ "$?" == "0" ] || ts_die "Cannot found ext3 on $DEVICE" $DEVICE
+
+[ -d "$TS_MOUNTPOINT" ] || mkdir -p $TS_MOUNTPOINT
+
+ln -s $DEVICE $LINKNAME
+
+ts_fstab_add $LINKNAME $TS_MOUNTPOINT "auto" "defaults,user"
+
+# variant A) -- UID=0
+$TS_CMD_MOUNT $LINKNAME 2>&1 >> $TS_OUTPUT
+grep -q $DEVICE /proc/mounts
+[ "$?" == "0" ] || ts_die "A) Cannot found $DEVICE in /proc/mounts" $DEVICE
+$TS_CMD_UMOUNT $LINKNAME
+[ "$?" == "0" ] || ts_die "A) Cannot umount $LINKNAME" $DEVICE
+
+# varian B)
+ts_init_suid $TS_CMD_MOUNT
+ts_init_suid $TS_CMD_UMOUNT
+
+su $TS_TESTUSER -c "$TS_CMD_MOUNT $LINKNAME" 2>&1 >> $TS_OUTPUT
+grep -q $DEVICE /proc/mounts
+[ "$?" == "0" ] || ts_die "B) Cannot found $DEVICE in /proc/mounts" $DEVICE
+su $TS_TESTUSER -c "$TS_CMD_UMOUNT $LINKNAME" 2>&1 >> $TS_OUTPUT
+[ "$?" == "0" ] || ts_die "B) Cannot umount $LINKNAME" $DEVICE
+
+ts_device_deinit $DEVICE
+ts_fstab_clean
+rm -f $LINKNAME
+
+ts_log "Success"
+ts_finalize
+