#!/bin/sh
# Copyright 2007 by Denys Vlasenko <vda.linux@googlemail.com>
# Licensed under GPLv2, see file LICENSE in this source tree.

. ./testing.sh
test -f "$bindir/.config" && . "$bindir/.config"

test "`id -u`" = 0 || {
	echo "SKIPPED: mount (must be root to test this)"
	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/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; }
modprobe minix 2>/dev/null
mkdir "$testdir" 2>/dev/null
umount -d "$testdir" 2>/dev/null

# testing "test name" "command" "expected result" "file input" "stdin"
#   file input will be file called "input"
#   test can create a file "actual" instead of writing to stdout

testing "mount -o remount,mand" \
"mount -o loop mount.image1m $testdir "\
"&& grep -Fc $testdir </proc/mounts "\
"&& mount -o remount,mand $testdir "\
"&& grep -F $testdir </proc/mounts | grep -c '[, ]mand[, ]'"\
"|| grep -F $testdir </proc/mounts" \
	"1\n""1\n" \
	"" ""

umount -d "$testdir"
rmdir "$testdir"
rm mount.image1m


# Bug: mount.shared1 directory shows no files (has to show files a and b)
optional FEATURE_LS_RECURSIVE FEATURE_LS_SORTFILES
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
" \
	"" ""
SKIP=


testing "mount RO loop" "\
exec 2>&1
umount -d mount.dir 2>/dev/null
rmdir mount.dir     2>/dev/null
mkdir -p mount.dir
(
cd mount.dir                               || { echo 'cd error'; exit 1; }
mkdir z1 z2                                || { echo 'mkdir error'; exit 1; }
mount -t tmpfs tmpfs z1                    || { echo 'mount tmpfs error'; exit 1; }
dd if=/dev/zero of=z1/e2img count=10 bs=1M 2>/dev/null || { echo 'dd error'; exit 1; }
mke2fs -F z1/e2img                         2>/dev/null >&2 || { echo 'mke2fs error'; exit 1; }
mount -r -o loop -t ext2 z1/e2img z2       || { echo 'mount -r -o loop error'; exit 1; }
mount -o remount,ro z1                     || { echo 'mount -o remount,ro error'; exit 1; }
)
umount -d mount.dir/z2
##losetup -d /dev/loop*
umount -d mount.dir/z1
rm -rf mount.dir
echo DONE
" \
"DONE\n" "" ""


exit $FAILCOUNT
