busybox/testsuite/mount.tests
<<
>>
Prefs
   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
  37# This will always fail on !CONFIG_MANDATORY_FILE_LOCKING kernels
  38test "$SKIP_MOUNT_MAND_TESTS" = "1" || \
  39testing "mount -o remount,mand" \
  40"mount -o loop mount.image1m $testdir "\
  41"&& grep -Fc $testdir </proc/mounts "\
  42"&& mount -o remount,mand $testdir "\
  43"&& grep -F $testdir </proc/mounts | grep -c '[, ]mand[, ]'"\
  44"|| grep -F $testdir </proc/mounts" \
  45        "1\n""1\n" \
  46        "" ""
  47
  48umount -d "$testdir"
  49rmdir "$testdir"
  50rm mount.image1m
  51
  52
  53# Bug: mount.shared1 directory shows no files (has to show files a and b)
  54optional FEATURE_LS_RECURSIVE FEATURE_LS_SORTFILES
  55testing "mount bind+rshared" "\
  56mkdir -p mount.dir mount.shared1 mount.shared2
  57touch mount.dir/a mount.dir/b
  58
  59mount --bind         mount.shared1 mount.shared1 2>&1
  60mount --make-rshared mount.shared1               2>&1
  61mount --bind         mount.shared2 mount.shared2 2>&1
  62mount --make-rshared mount.shared2               2>&1
  63
  64mount --bind mount.shared2 mount.shared1         2>&1
  65mount --bind mount.dir     mount.shared2         2>&1
  66
  67ls -R mount.dir mount.shared1 mount.shared2      2>&1
  68
  69umount mount.dir mount.shared1 mount.shared2 2>/dev/null
  70umount mount.dir mount.shared1 mount.shared2 2>/dev/null
  71umount mount.dir mount.shared1 mount.shared2 2>/dev/null
  72rm -f mount.dir/a mount.dir/b mount.dir/c
  73rmdir mount.dir mount.shared1 mount.shared2
  74" \
  75"\
  76mount.dir:
  77a
  78b
  79
  80mount.shared1:
  81a
  82b
  83
  84mount.shared2:
  85a
  86b
  87" \
  88        "" ""
  89SKIP=
  90
  91
  92testing "mount RO loop" "\
  93exec 2>&1
  94umount -d mount.dir 2>/dev/null
  95rmdir mount.dir     2>/dev/null
  96mkdir -p mount.dir
  97(
  98cd mount.dir                               || { echo 'cd error'; exit 1; }
  99mkdir z1 z2                                || { echo 'mkdir error'; exit 1; }
 100mount -t tmpfs tmpfs z1                    || { echo 'mount tmpfs error'; exit 1; }
 101dd if=/dev/zero of=z1/e2img count=10 bs=1M 2>/dev/null || { echo 'dd error'; exit 1; }
 102mke2fs -F z1/e2img                         2>/dev/null >&2 || { echo 'mke2fs error'; exit 1; }
 103mount -r -o loop -t ext2 z1/e2img z2       || { echo 'mount -r -o loop error'; exit 1; }
 104mount -o remount,ro z1                     || { echo 'mount -o remount,ro error'; exit 1; }
 105)
 106umount -d mount.dir/z2
 107##losetup -d /dev/loop*
 108umount -d mount.dir/z1
 109rm -rf mount.dir
 110echo DONE
 111" \
 112"DONE\n" "" ""
 113
 114
 115exit $FAILCOUNT
 116