diff options
-rwxr-xr-x | testsuite/mount.testroot | 183 | ||||
-rwxr-xr-x | testsuite/umlwrapper.sh | 20 |
2 files changed, 203 insertions, 0 deletions
diff --git a/testsuite/mount.testroot b/testsuite/mount.testroot new file mode 100755 index 000000000..4ab6b94bc --- /dev/null +++ b/testsuite/mount.testroot | |||
@@ -0,0 +1,183 @@ | |||
1 | #!/bin/sh | ||
2 | |||
3 | # SUSv3 compliant mount and umount tests. | ||
4 | # Copyright 2005 by Rob Landley <rob@landley.net> | ||
5 | # Licensed under GPL v2, see file LICENSE for details. | ||
6 | |||
7 | if [ -z "$TESTDIR" ] | ||
8 | then | ||
9 | echo 'Need $TESTDIR' | ||
10 | exit 1 | ||
11 | fi | ||
12 | |||
13 | cd "$TESTDIR" | ||
14 | |||
15 | . testing.sh | ||
16 | |||
17 | # If we aren't PID 1, barf. | ||
18 | |||
19 | #if [ $$ -ne 1 ] | ||
20 | #then | ||
21 | # echo "SKIPPED: mount test requires emulation environment" | ||
22 | # exit 0 | ||
23 | #fi | ||
24 | |||
25 | # Run tests within the chroot environment. | ||
26 | dochroot bash rm ls ln cat ps mknod mkdir dd grep cmp diff tail \ | ||
27 | mkfs.ext2 mkfs.vfat mount umount losetup wc << EOF | ||
28 | #!/bin/bash | ||
29 | |||
30 | . /testing.sh | ||
31 | |||
32 | mknod /dev/loop0 b 7 0 | ||
33 | mknod /dev/loop1 b 7 1 | ||
34 | |||
35 | # We need /proc to do much. Make sure we can mount it explicitly. | ||
36 | |||
37 | testing "mount no proc [GNUFAIL]" "mount 2> /dev/null || echo yes" "yes\n" "" "" | ||
38 | testing "mount /proc" "mount -t proc /proc /proc && ls -d /proc/1" \ | ||
39 | "/proc/1\n" "" "" | ||
40 | |||
41 | # Make sure the last thing in the list is /proc | ||
42 | |||
43 | testing "mount list1" "mount | tail -n 1" "/proc on /proc type proc (rw)\n" \ | ||
44 | "" "" | ||
45 | |||
46 | |||
47 | # Create an ext2 image | ||
48 | |||
49 | mkdir -p images/{ext2.dir,vfat.dir,test1,test2,test3} | ||
50 | dd if=/dev/zero of=images/ext2.img bs=1M count=1 2> /dev/null | ||
51 | mkfs.ext2 -F -b 1024 images/ext2.img > /dev/null 2> /dev/null | ||
52 | dd if=/dev/zero of=images/vfat.img bs=1M count=1 2> /dev/null | ||
53 | mkfs.vfat images/vfat.img > /dev/null | ||
54 | |||
55 | # Test mount it | ||
56 | |||
57 | testing "mount vfat image (explicitly autodetect type)" \ | ||
58 | "mount -t auto images/vfat.img images/vfat.dir && mount | tail -n 1 | grep -o 'vfat.dir type vfat'" \ | ||
59 | "vfat.dir type vfat\n" "" "" | ||
60 | testing "mount ext2 image (autodetect type)" \ | ||
61 | "mount images/ext2.img images/ext2.dir 2> /dev/null && mount | tail -n 1" \ | ||
62 | "/dev/loop1 on /images/ext2.dir type ext2 (rw)\n" "" "" | ||
63 | testing "mount remount ext2 image noatime" \ | ||
64 | "mount -o remount,noatime images/ext2.dir && mount | tail -n 1" \ | ||
65 | "/dev/loop1 on /images/ext2.dir type ext2 (rw,noatime)\n" "" "" | ||
66 | testing "mount remount ext2 image ro remembers noatime" \ | ||
67 | "mount -o remount,ro images/ext2.dir && mount | tail -n 1" \ | ||
68 | "/dev/loop1 on /images/ext2.dir type ext2 (ro,noatime)\n" "" "" | ||
69 | |||
70 | umount -d images/vfat.dir | ||
71 | umount -d images/ext2.dir | ||
72 | |||
73 | testing "mount umount freed loop device" \ | ||
74 | "mount images/ext2.img images/ext2.dir && mount | tail -n 1" \ | ||
75 | "/dev/loop0 on /images/ext2.dir type ext2 (rw)\n" "" "" | ||
76 | |||
77 | testing "mount block device" \ | ||
78 | "mount -t ext2 /dev/loop0 images/test1 && mount | tail -n 1" \ | ||
79 | "/dev/loop0 on /images/test1 type ext2 (rw)\n" "" "" | ||
80 | |||
81 | umount -d images/ext2.dir images/test1 | ||
82 | |||
83 | testing "mount remount nonexistent directory" \ | ||
84 | "mount -o remount,noatime images/ext2.dir 2> /dev/null || echo yes" \ | ||
85 | "yes\n" "" "" | ||
86 | |||
87 | # Fun with mount -a | ||
88 | |||
89 | testing "mount -a no fstab" "mount -a 2>/dev/null || echo yes" "yes\n" "" "" | ||
90 | |||
91 | umount /proc | ||
92 | |||
93 | # The first field is space delimited, the rest tabs. | ||
94 | |||
95 | cat > /etc/fstab << FSTAB | ||
96 | /proc /proc proc defaults 0 0 | ||
97 | # Autodetect loop, and provide flags with commas in them. | ||
98 | /images/ext2.img /images/ext2.dir ext2 noatime,nodev 0 0 | ||
99 | # autodetect filesystem, flags without commas. | ||
100 | /images/vfat.img /images/vfat.dir auto ro 0 0 | ||
101 | # A block device | ||
102 | /dev/loop2 /images/test1 auto defaults 0 0 | ||
103 | # tmpfs, filesystem specific flag. | ||
104 | walrus /images/test2 tmpfs size=42 0 0 | ||
105 | # Autodetect a bind mount. | ||
106 | /images/test2 /images/test3 auto defaults 0 0 | ||
107 | FSTAB | ||
108 | |||
109 | # Put something on loop2. | ||
110 | mknod /dev/loop2 b 7 2 | ||
111 | cat images/ext2.img > images/ext2-2.img | ||
112 | losetup /dev/loop2 images/ext2-2.img | ||
113 | |||
114 | testing "mount -a" "mount -a && echo hello > /images/test2/abc && cat /images/test3/abc && (mount | wc -l)" "hello\n8\n" "" "" | ||
115 | |||
116 | testing "umount -a" "umount -a && ls /proc" "" "" "" | ||
117 | |||
118 | #/bin/bash < /dev/tty > /dev/tty 2> /dev/tty | ||
119 | mknod /dev/console c 5 1 | ||
120 | /bin/bash < /dev/console > /dev/console 2> /dev/console | ||
121 | EOF | ||
122 | |||
123 | exit 0 | ||
124 | |||
125 | # Run some tests | ||
126 | |||
127 | losetup nonexistent device (should return error 2) | ||
128 | losetup unbound loop device (should return error 1) | ||
129 | losetup bind file to loop device | ||
130 | losetup bound loop device (display) (should return error 0) | ||
131 | losetup filename (error) | ||
132 | losetup nofile (file not found) | ||
133 | losetup -d | ||
134 | losetup bind with offset | ||
135 | losetup -f (print first loop device) | ||
136 | losetup -f filename (associate file with first loop device) | ||
137 | losetup -o (past end of file) -f filename | ||
138 | |||
139 | mount -a | ||
140 | with multiple entries in fstab | ||
141 | with duplicate entries in fstab | ||
142 | with relative paths in fstab | ||
143 | with user entries in fstab | ||
144 | mount -o async,sync,atime,noatime,dev,nodev,exec,noexec,loop,suid,nosuid,remount,ro,rw,bind,move | ||
145 | mount -r | ||
146 | mount -o rw -r | ||
147 | mount -w -o ro | ||
148 | mount -t auto | ||
149 | |||
150 | mount with relative path in fstab | ||
151 | mount block device | ||
152 | mount char device | ||
153 | mount file (autoloop) | ||
154 | mount directory (autobind) | ||
155 | |||
156 | |||
157 | testing "umount with no /proc" | ||
158 | testing "umount curdir" | ||
159 | |||
160 | # The basic tests. These should work even with the small busybox. | ||
161 | |||
162 | testing "sort" "input" "a\nb\nc\n" "c\na\nb\n" "" | ||
163 | testing "sort #2" "input" "010\n1\n3\n" "3\n1\n010\n" "" | ||
164 | testing "sort stdin" "" "a\nb\nc\n" "" "b\na\nc\n" | ||
165 | testing "sort numeric" "-n input" "1\n3\n010\n" "3\n1\n010\n" "" | ||
166 | testing "sort reverse" "-r input" "wook\nwalrus\npoint\npabst\naargh\n" \ | ||
167 | "point\nwook\npabst\naargh\nwalrus\n" "" | ||
168 | |||
169 | optional FEATURE_MOUNT_LOOP | ||
170 | testing "umount -D" | ||
171 | |||
172 | optional FEATURE_MTAB_SUPPORT | ||
173 | optional FEATURE_MOUNT_NFS | ||
174 | # No idea what to test here. | ||
175 | |||
176 | optional UMOUNT | ||
177 | optional FEATURE_UMOUNT_ALL | ||
178 | testing "umount -a" | ||
179 | testing "umount -r" | ||
180 | testing "umount -l" | ||
181 | testing "umount -f" | ||
182 | |||
183 | exit $FAILCOUNT | ||
diff --git a/testsuite/umlwrapper.sh b/testsuite/umlwrapper.sh new file mode 100755 index 000000000..e55e4dbd3 --- /dev/null +++ b/testsuite/umlwrapper.sh | |||
@@ -0,0 +1,20 @@ | |||
1 | #!/bin/sh | ||
2 | |||
3 | # Wrapper for User Mode Linux emulation environment | ||
4 | |||
5 | RUNFILE="$(pwd)/${1}.testroot" | ||
6 | if [ -z "$RUNFILE" ] || [ ! -x "$RUNFILE" ] | ||
7 | then | ||
8 | echo "Can't run '$RUNFILE'" | ||
9 | exit 1 | ||
10 | fi | ||
11 | |||
12 | shift | ||
13 | |||
14 | if [ -z $(which linux) ] | ||
15 | then | ||
16 | echo "No User Mode Linux." | ||
17 | exit 1; | ||
18 | fi | ||
19 | |||
20 | linux rootfstype=hostfs rw init="$RUNFILE" TESTDIR=`pwd` PATH="$PATH" $* quiet | ||