]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - usr.sbin/fstyp/tests/fstyp_test.sh
Upgrade Unbound to 1.6.0. More to follow.
[FreeBSD/FreeBSD.git] / usr.sbin / fstyp / tests / fstyp_test.sh
1 #!/bin/sh
2 #
3 # Copyright (c) 2015 Alan Somers
4 # All rights reserved.
5 #
6 # Redistribution and use in source and binary forms, with or without
7 # modification, are permitted provided that the following conditions
8 # are met:
9 # 1. Redistributions of source code must retain the above copyright
10 #    notice, this list of conditions and the following disclaimer.
11 # 2. Redistributions in binary form must reproduce the above copyright
12 #    notice, this list of conditions and the following disclaimer in the
13 #    documentation and/or other materials provided with the distribution.
14 #
15 # THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
16 # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17 # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18 # ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19 # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20 # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21 # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22 # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23 # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24 # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25 # SUCH DAMAGE.
26
27 # $FreeBSD$
28
29 atf_test_case cd9660
30 cd9660_head() {
31         atf_set "descr" "fstyp(8) should detect cd9660 filesystems"
32 }
33 cd9660_body() {
34         atf_check -s exit:0 mkdir -p dir/emptydir       # makefs requires a nonempty directory
35         atf_check -s exit:0 -o ignore makefs -t cd9660 -Z -s 64m cd9660.img dir
36         atf_check -s exit:0 -o inline:"cd9660\n" fstyp cd9660.img
37         atf_check -s exit:0 -o inline:"cd9660\n" fstyp -l cd9660.img
38 }
39
40 atf_test_case cd9660_label
41 cd9660_label_head() {
42         atf_set "descr" "fstyp(8) can read the label on a cd9660 filesystem"
43 }
44 cd9660_label_body() {
45         atf_check -s exit:0 mkdir -p dir/emptydir       # makefs requires a nonempty directory
46         atf_check -s exit:0 -o ignore makefs -t cd9660 -o label=Foo -Z -s 64m cd9660.img dir
47         atf_check -s exit:0 -o inline:"cd9660\n" fstyp cd9660.img
48         # Note: cd9660 labels are always upper case
49         atf_check -s exit:0 -o inline:"cd9660 FOO\n" fstyp -l cd9660.img
50 }
51
52 atf_test_case dir
53 dir_head() {
54         atf_set "descr" "fstyp(8) should fail on a directory"
55 }
56 dir_body() {
57         atf_check -s exit:0 mkdir dir
58         atf_check -s exit:1 -e match:"not a disk" fstyp dir
59 }
60
61 atf_test_case exfat
62 exfat_head() {
63         atf_set "descr" "fstyp(8) can detect exFAT filesystems"
64 }
65 exfat_body() {
66         bzcat $(atf_get_srcdir)/dfr-01-xfat.img.bz2 > exfat.img
67         atf_check -s exit:0 -o inline:"exfat\n" fstyp -u exfat.img
68 }
69
70 atf_test_case empty
71 empty_head() {
72         atf_set "descr" "fstyp(8) should fail on an empty file"
73 }
74 empty_body() {
75         atf_check -s exit:0 touch empty
76         atf_check -s exit:1 -e match:"filesystem not recognized" fstyp empty
77 }
78
79 atf_test_case ext2
80 ext2_head() {
81         atf_set "descr" "fstyp(8) can detect ext2 filesystems"
82 }
83 ext2_body() {
84         bzcat $(atf_get_srcdir)/ext2.img.bz2 > ext2.img
85         atf_check -s exit:0 -o inline:"ext2fs\n" fstyp ext2.img
86         atf_check -s exit:0 -o inline:"ext2fs\n" fstyp -l ext2.img
87 }
88
89 atf_test_case ext3
90 ext3_head() {
91         atf_set "descr" "fstyp(8) can detect ext3 filesystems"
92 }
93 ext3_body() {
94         bzcat $(atf_get_srcdir)/ext3.img.bz2 > ext3.img
95         atf_check -s exit:0 -o inline:"ext2fs\n" fstyp ext3.img
96         atf_check -s exit:0 -o inline:"ext2fs\n" fstyp -l ext3.img
97 }
98
99 atf_test_case ext4
100 ext4_head() {
101         atf_set "descr" "fstyp(8) can detect ext4 filesystems"
102 }
103 ext4_body() {
104         bzcat $(atf_get_srcdir)/ext4.img.bz2 > ext4.img
105         atf_check -s exit:0 -o inline:"ext2fs\n" fstyp ext4.img
106         atf_check -s exit:0 -o inline:"ext2fs\n" fstyp -l ext4.img
107 }
108
109 atf_test_case ext4_label
110 ext4_label_head() {
111         atf_set "descr" "fstyp(8) can read the label on an ext4 filesystem"
112 }
113 ext4_label_body() {
114         bzcat $(atf_get_srcdir)/ext4_with_label.img.bz2 > ext4_with_label.img
115         atf_check -s exit:0 -o inline:"ext2fs foo\n" fstyp -l ext4_with_label.img
116 }
117
118 atf_test_case fat12
119 fat12_head() {
120         atf_set "descr" "fstyp(8) can detect FAT12 filesystems"
121 }
122 fat12_body() {
123         atf_check -s exit:0 truncate -s 64m msdos.img
124         atf_check -s exit:0 -o ignore -e ignore newfs_msdos -F 12 ./msdos.img
125         atf_check -s exit:0 -o inline:"msdosfs\n" fstyp msdos.img
126         atf_check -s exit:0 -o inline:"msdosfs\n" fstyp -l msdos.img
127 }
128
129 atf_test_case fat16
130 fat16_head() {
131         atf_set "descr" "fstyp(8) can detect FAT16 filesystems"
132 }
133 fat16_body() {
134         atf_check -s exit:0 truncate -s 64m msdos.img
135         atf_check -s exit:0 -o ignore -e ignore newfs_msdos -F 16 ./msdos.img
136         atf_check -s exit:0 -o inline:"msdosfs\n" fstyp msdos.img
137         atf_check -s exit:0 -o inline:"msdosfs\n" fstyp -l msdos.img
138 }
139
140 atf_test_case fat32
141 fat32_head() {
142         atf_set "descr" "fstyp(8) can detect FAT32 filesystems"
143 }
144 fat32_body() {
145         atf_check -s exit:0 truncate -s 64m msdos.img
146         atf_check -s exit:0 -o ignore -e ignore newfs_msdos -F 32 -c 1 \
147                 ./msdos.img
148         atf_check -s exit:0 -o inline:"msdosfs\n" fstyp msdos.img
149         atf_check -s exit:0 -o inline:"msdosfs\n" fstyp -l msdos.img
150 }
151
152 atf_test_case fat32_label
153 fat32_label_head() {
154         atf_set "descr" "fstyp(8) can read the label on an msdos filesystem"
155 }
156 fat32_label_body() {
157         atf_check -s exit:0 truncate -s 64m msdos.img
158         atf_check -s exit:0 -o ignore -e ignore newfs_msdos -F 32 -L Foo -c 1 \
159                 ./msdos.img
160         atf_check -s exit:0 -o inline:"msdosfs\n" fstyp msdos.img
161         # Note: msdos labels are always upper case
162         atf_check -s exit:0 -o inline:"msdosfs FOO\n" fstyp -l msdos.img
163 }
164
165 atf_test_case ntfs
166 ntfs_head() {
167         atf_set "descr" "fstyp(8) can detect ntfs filesystems"
168 }
169 ntfs_body() {
170         bzcat $(atf_get_srcdir)/ntfs.img.bz2 > ntfs.img
171         atf_check -s exit:0 -o inline:"ntfs\n" fstyp ntfs.img
172         atf_check -s exit:0 -o inline:"ntfs\n" fstyp -l ntfs.img
173 }
174
175 atf_test_case ntfs_with_label
176 ntfs_with_label_head() {
177         atf_set "descr" "fstyp(8) can read labels on ntfs filesystems"
178 }
179 ntfs_with_label_body() {
180         bzcat $(atf_get_srcdir)/ntfs_with_label.img.bz2 > ntfs_with_label.img
181         atf_check -s exit:0 -o inline:"ntfs\n" fstyp ntfs_with_label.img
182         atf_check -s exit:0 -o inline:"ntfs Foo\n" fstyp -l ntfs_with_label.img
183 }
184
185 atf_test_case ufs1
186 ufs1_head() {
187         atf_set "descr" "fstyp(8) should detect UFS version 1 filesystems"
188 }
189 ufs1_body() {
190         atf_check -s exit:0 mkdir dir
191         atf_check -s exit:0 -o ignore makefs -Z -s 64m ufs.img dir
192         atf_check -s exit:0 -o inline:"ufs\n" fstyp ufs.img
193         atf_check -s exit:0 -o inline:"ufs\n" fstyp -l ufs.img
194 }
195
196 atf_test_case ufs2
197 ufs2_head() {
198         atf_set "descr" "fstyp(8) should detect UFS version 2 filesystems"
199 }
200 ufs2_body() {
201         atf_check -s exit:0 mkdir dir
202         atf_check -s exit:0 -o ignore makefs -o version=2 -Z -s 64m ufs.img dir
203         atf_check -s exit:0 -o inline:"ufs\n" fstyp ufs.img
204         atf_check -s exit:0 -o inline:"ufs\n" fstyp -l ufs.img
205 }
206
207 atf_test_case ufs2_label
208 ufs2_label_head() {
209         atf_set "descr" "fstyp(8) can read the label on a UFS v2 filesystem"
210 }
211 ufs2_label_body() {
212         atf_check -s exit:0 mkdir dir
213         atf_check -s exit:0 -o ignore makefs -o version=2,label="foo" -Z -s 64m ufs.img dir
214         atf_check -s exit:0 -o inline:"ufs foo\n" fstyp -l ufs.img
215 }
216
217 atf_test_case ufs_on_device cleanup
218 ufs_on_device_head() {
219         atf_set "descr" "fstyp(8) should work on device nodes"
220         atf_set "require.user" "root"
221 }
222 ufs_on_device_body() {
223         mdconfig -a -t swap -s 64m > mdname
224         md=$(cat mdname)
225         if [ -z "$md" ]; then
226                 atf_fail "Failed to create md(4) device"
227         fi
228         atf_check -s exit:0 -o ignore newfs -L foo /dev/$md
229         atf_check -s exit:0 -o inline:"ufs\n" fstyp /dev/$md
230         atf_check -s exit:0 -o inline:"ufs foo\n" fstyp -l /dev/$md
231 }
232 ufs_on_device_cleanup() {
233         md=$(cat mdname)
234         if [ -n "$md" ]; then
235                 mdconfig -d -u "$md"
236         fi
237 }
238
239 atf_test_case zeros
240 zeros_head() {
241         atf_set "descr" "fstyp(8) should fail on a zero-filled file"
242 }
243 zeros_body() {
244         atf_check -s exit:0 truncate -s 256m zeros
245         atf_check -s exit:1 -e match:"filesystem not recognized" fstyp zeros
246 }
247
248
249 atf_init_test_cases() {
250         atf_add_test_case cd9660
251         atf_add_test_case cd9660_label
252         atf_add_test_case dir
253         atf_add_test_case empty
254         atf_add_test_case exfat
255         atf_add_test_case ext2
256         atf_add_test_case ext3
257         atf_add_test_case ext4
258         atf_add_test_case ext4_label
259         atf_add_test_case fat12
260         atf_add_test_case fat16
261         atf_add_test_case fat32
262         atf_add_test_case fat32_label
263         atf_add_test_case ntfs
264         atf_add_test_case ntfs_with_label
265         atf_add_test_case ufs1
266         atf_add_test_case ufs2
267         atf_add_test_case ufs2_label
268         atf_add_test_case ufs_on_device
269         atf_add_test_case zeros
270 }