1#!/bin/sh 2# Copyright 2007 by Denys Vlasenko <vda.linux@googlemail.com> 3# Licensed under GPLv2, see file LICENSE in this source tree. 4 5. ./testing.sh 6test -f "$bindir/.config" && . "$bindir/.config" 7 8test "`id -u`" = 0 || { 9 echo "SKIPPED: mount (must be root to test this)" 10 exit 0 11} 12 13# Without MOUNT_LOOP_CREATE, the test will fail if /dev/loopN's do not exist 14if test x"$CONFIG_MKFS_MINIX" != x"y" \ 15|| test x"$CONFIG_FEATURE_MINIX2" != x"y" \ 16|| test x"$CONFIG_FEATURE_MOUNT_LOOP" != x"y" \ 17|| test x"$CONFIG_FEATURE_MOUNT_LOOP_CREATE" != x"y" \ 18|| test x"$CONFIG_FEATURE_MOUNT_FLAGS" != x"y" \ 19|| test x"$CONFIG_FEATURE_DEVFS" = x"y" \ 20; then 21 echo "SKIPPED: mount" 22 exit 0 23fi 24 25testdir="$PWD/mount.testdir" 26 27dd if=/dev/zero of=mount.image1m count=1 bs=1M 2>/dev/null || { echo "dd error"; exit 1; } 28mkfs.minix -v mount.image1m >/dev/null 2>&1 || { echo "mkfs.minix error"; exit 1; } 29modprobe minix 2>/dev/null 30mkdir "$testdir" 2>/dev/null 31umount -d "$testdir" 2>/dev/null 32 33# testing "test name" "command" "expected result" "file input" "stdin" 34# file input will be file called "input" 35# test can create a file "actual" instead of writing to stdout 36 37testing "mount -o remount,mand" \ 38"mount -o loop mount.image1m $testdir "\ 39"&& grep -Fc $testdir </proc/mounts "\ 40"&& mount -o remount,mand $testdir "\ 41"&& grep -F $testdir </proc/mounts | grep -c '[, ]mand[, ]'"\ 42"|| grep -F $testdir </proc/mounts" \ 43 "1\n""1\n" \ 44 "" "" 45 46umount -d "$testdir" 47rmdir "$testdir" 48rm mount.image1m 49 50 51# Bug: mount.shared1 directory shows no files (has to show files a and b) 52optional FEATURE_LS_RECURSIVE FEATURE_LS_SORTFILES 53testing "mount bind+rshared" "\ 54mkdir -p mount.dir mount.shared1 mount.shared2 55touch mount.dir/a mount.dir/b 56 57mount --bind mount.shared1 mount.shared1 2>&1 58mount --make-rshared mount.shared1 2>&1 59mount --bind mount.shared2 mount.shared2 2>&1 60mount --make-rshared mount.shared2 2>&1 61 62mount --bind mount.shared2 mount.shared1 2>&1 63mount --bind mount.dir mount.shared2 2>&1 64 65ls -R mount.dir mount.shared1 mount.shared2 2>&1 66 67umount mount.dir mount.shared1 mount.shared2 2>/dev/null 68umount mount.dir mount.shared1 mount.shared2 2>/dev/null 69umount mount.dir mount.shared1 mount.shared2 2>/dev/null 70rm -f mount.dir/a mount.dir/b mount.dir/c 71rmdir mount.dir mount.shared1 mount.shared2 72" \ 73"\ 74mount.dir: 75a 76b 77 78mount.shared1: 79a 80b 81 82mount.shared2: 83a 84b 85" \ 86 "" "" 87SKIP= 88 89 90testing "mount RO loop" "\ 91exec 2>&1 92umount -d mount.dir 2>/dev/null 93rmdir mount.dir 2>/dev/null 94mkdir -p mount.dir 95( 96cd mount.dir || { echo 'cd error'; exit 1; } 97mkdir z1 z2 || { echo 'mkdir error'; exit 1; } 98mount -t tmpfs tmpfs z1 || { echo 'mount tmpfs error'; exit 1; } 99dd if=/dev/zero of=z1/e2img count=10 bs=1M 2>/dev/null || { echo 'dd error'; exit 1; } 100mke2fs -F z1/e2img 2>/dev/null >&2 || { echo 'mke2fs error'; exit 1; } 101mount -r -o loop -t ext2 z1/e2img z2 || { echo 'mount -r -o loop error'; exit 1; } 102mount -o remount,ro z1 || { echo 'mount -o remount,ro error'; exit 1; } 103) 104umount -d mount.dir/z2 105##losetup -d /dev/loop* 106umount -d mount.dir/z1 107rm -rf mount.dir 108echo DONE 109" \ 110"DONE\n" "" "" 111 112 113exit $FAILCOUNT 114