mount: add --rbind option support
[oweals/busybox.git] / testsuite / mount.tests
index 043586f05943c2556cf36cd322d99e9332e3023e..58eeb2ec5ad5f3ec03f5c635cea409ea824308a9 100755 (executable)
@@ -1,22 +1,26 @@
 #!/bin/sh
 # Copyright 2007 by Denys Vlasenko <vda.linux@googlemail.com>
-# Licensed under GPL v2, see file LICENSE for details.
+# Licensed under GPLv2, see file LICENSE in this source tree.
 
 . ./testing.sh
+test -f "$bindir/.config" && . "$bindir/.config"
 
 test "`id -u`" = 0 || {
-       echo "SKIPPED: must be root to test this"
+       echo "SKIPPED: mount (must be root to test this)"
        exit 0
 }
 
-optional MKFS_MINIX
-if [ -n "$SKIP" ]
-then
-  echo "SKIPPED: mount"
-  exit 0
+if test x"$CONFIG_MKFS_MINIX" != x"y" \
+|| test x"$CONFIG_FEATURE_MINIX2" != x"y" \
+|| test x"$CONFIG_FEATURE_MOUNT_LOOP" != x"y" \
+|| test x"$CONFIG_FEATURE_MOUNT_FLAGS" != x"y" \
+|| test x"$CONFIG_FEATURE_DEVFS" = x"y" \
+; then
+       echo "SKIPPED: mount"
+       exit 0
 fi
 
-testdir=$PWD/testdir
+testdir="$PWD/mount.testdir"
 
 dd if=/dev/zero of=mount.image1m count=1 bs=1M 2>/dev/null || { echo "dd error"; exit 1; }
 mkfs.minix -v mount.image1m >/dev/null 2>&1 || { echo "mkfs.minix error"; exit 1; }
@@ -40,4 +44,41 @@ umount -d "$testdir"
 rmdir "$testdir"
 rm mount.image1m
 
+
+# Bug: mount.shared1 directory shows no files (has to show files a and b)
+testing "mount bind+rshared" "\
+mkdir -p mount.dir mount.shared1 mount.shared2
+touch mount.dir/a mount.dir/b
+
+mount --bind         mount.shared1 mount.shared1 2>&1
+mount --make-rshared mount.shared1               2>&1
+mount --bind         mount.shared2 mount.shared2 2>&1
+mount --make-rshared mount.shared2               2>&1
+
+mount --bind mount.shared2 mount.shared1         2>&1
+mount --bind mount.dir     mount.shared2         2>&1
+
+ls -R mount.dir mount.shared1 mount.shared2      2>&1
+
+umount mount.dir mount.shared1 mount.shared2 2>/dev/null
+umount mount.dir mount.shared1 mount.shared2 2>/dev/null
+umount mount.dir mount.shared1 mount.shared2 2>/dev/null
+rm -f mount.dir/a mount.dir/b mount.dir/c
+rmdir mount.dir mount.shared1 mount.shared2
+" \
+"\
+mount.dir:
+a
+b
+
+mount.shared1:
+a
+b
+
+mount.shared2:
+a
+b
+" \
+       "" ""
+
 exit $FAILCOUNT