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