summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorasomers <asomers@FreeBSD.org>2015-09-03 19:42:56 +0000
committerasomers <asomers@FreeBSD.org>2015-09-03 19:42:56 +0000
commit60980f847d9fbbfdb1b2ab79130fd940ae59feae (patch)
treef0c941dbbdbf37541637ceabb73519f4cba57839
parent9c5fd1a68e5e6ad579a1144610d5bf3b8bbedbea (diff)
downloadFreeBSD-src-60980f847d9fbbfdb1b2ab79130fd940ae59feae.zip
FreeBSD-src-60980f847d9fbbfdb1b2ab79130fd940ae59feae.tar.gz
MFC r286964
Add ATF functional tests for fstyp(8). No ZFS or GELI tests yet.
-rw-r--r--etc/mtree/BSD.tests.dist2
-rw-r--r--usr.sbin/fstyp/Makefile6
-rw-r--r--usr.sbin/fstyp/tests/Makefile15
-rw-r--r--usr.sbin/fstyp/tests/ext2.img.bz2bin0 -> 365 bytes
-rw-r--r--usr.sbin/fstyp/tests/ext3.img.bz2bin0 -> 362 bytes
-rw-r--r--usr.sbin/fstyp/tests/ext4.img.bz2bin0 -> 373 bytes
-rw-r--r--usr.sbin/fstyp/tests/ext4_with_label.img.bz2bin0 -> 369 bytes
-rwxr-xr-xusr.sbin/fstyp/tests/fstyp_test.sh234
-rw-r--r--usr.sbin/fstyp/tests/ntfs.img.bz2bin0 -> 35821 bytes
-rw-r--r--usr.sbin/fstyp/tests/ntfs_with_label.img.bz2bin0 -> 35809 bytes
10 files changed, 257 insertions, 0 deletions
diff --git a/etc/mtree/BSD.tests.dist b/etc/mtree/BSD.tests.dist
index 41543ee..8a6307d 100644
--- a/etc/mtree/BSD.tests.dist
+++ b/etc/mtree/BSD.tests.dist
@@ -388,6 +388,8 @@
usr.sbin
etcupdate
..
+ fstyp
+ ..
newsyslog
..
nmtree
diff --git a/usr.sbin/fstyp/Makefile b/usr.sbin/fstyp/Makefile
index d0b14d1..b80398b 100644
--- a/usr.sbin/fstyp/Makefile
+++ b/usr.sbin/fstyp/Makefile
@@ -1,9 +1,15 @@
# $FreeBSD$
+.include <bsd.own.mk>
+
PROG= fstyp
SRCS= fstyp.c ext2fs.c cd9660.c msdosfs.c ntfs.c ufs.c
MAN= fstyp.8
WARNS= 6
+.if ${MK_TESTS} != "no"
+SUBDIR+= tests
+.endif
+
.include <bsd.prog.mk>
diff --git a/usr.sbin/fstyp/tests/Makefile b/usr.sbin/fstyp/tests/Makefile
new file mode 100644
index 0000000..db686b59
--- /dev/null
+++ b/usr.sbin/fstyp/tests/Makefile
@@ -0,0 +1,15 @@
+# $FreeBSD$
+
+TESTSDIR= ${TESTSBASE}/usr.sbin/fstyp
+
+ATF_TESTS_SH= fstyp_test
+
+FILES= ext2.img.bz2
+FILES+= ext3.img.bz2
+FILES+= ext4.img.bz2
+FILES+= ext4_with_label.img.bz2
+FILES+= ntfs.img.bz2
+FILES+= ntfs_with_label.img.bz2
+FILESDIR= ${TESTSDIR}
+
+.include <bsd.test.mk>
diff --git a/usr.sbin/fstyp/tests/ext2.img.bz2 b/usr.sbin/fstyp/tests/ext2.img.bz2
new file mode 100644
index 0000000..b07389e
--- /dev/null
+++ b/usr.sbin/fstyp/tests/ext2.img.bz2
Binary files differ
diff --git a/usr.sbin/fstyp/tests/ext3.img.bz2 b/usr.sbin/fstyp/tests/ext3.img.bz2
new file mode 100644
index 0000000..7d8b9e2
--- /dev/null
+++ b/usr.sbin/fstyp/tests/ext3.img.bz2
Binary files differ
diff --git a/usr.sbin/fstyp/tests/ext4.img.bz2 b/usr.sbin/fstyp/tests/ext4.img.bz2
new file mode 100644
index 0000000..d24e0f8
--- /dev/null
+++ b/usr.sbin/fstyp/tests/ext4.img.bz2
Binary files differ
diff --git a/usr.sbin/fstyp/tests/ext4_with_label.img.bz2 b/usr.sbin/fstyp/tests/ext4_with_label.img.bz2
new file mode 100644
index 0000000..4b77619
--- /dev/null
+++ b/usr.sbin/fstyp/tests/ext4_with_label.img.bz2
Binary files differ
diff --git a/usr.sbin/fstyp/tests/fstyp_test.sh b/usr.sbin/fstyp/tests/fstyp_test.sh
new file mode 100755
index 0000000..8a1ea72
--- /dev/null
+++ b/usr.sbin/fstyp/tests/fstyp_test.sh
@@ -0,0 +1,234 @@
+# $FreeBSD$
+
+atf_test_case cd9660
+cd9660_head() {
+ atf_set "descr" "fstyp(8) should detect cd9660 filesystems"
+}
+cd9660_body() {
+ atf_check -s exit:0 mkdir -p dir/emptydir # makefs requires a nonempty directory
+ atf_check -s exit:0 -o ignore makefs -t cd9660 -Z -s 64m cd9660.img dir
+ atf_check -s exit:0 -o inline:"cd9660\n" fstyp cd9660.img
+ atf_check -s exit:0 -o inline:"cd9660\n" fstyp -l cd9660.img
+}
+
+atf_test_case cd9660_label
+cd9660_label_head() {
+ atf_set "descr" "fstyp(8) can read the label on a cd9660 filesystem"
+}
+cd9660_label_body() {
+ atf_check -s exit:0 mkdir -p dir/emptydir # makefs requires a nonempty directory
+ atf_check -s exit:0 -o ignore makefs -t cd9660 -o label=Foo -Z -s 64m cd9660.img dir
+ atf_check -s exit:0 -o inline:"cd9660\n" fstyp cd9660.img
+ # Note: cd9660 labels are always upper case
+ atf_check -s exit:0 -o inline:"cd9660 FOO\n" fstyp -l cd9660.img
+}
+
+atf_test_case dir
+dir_head() {
+ atf_set "descr" "fstyp(8) should fail on a directory"
+}
+dir_body() {
+ atf_check -s exit:0 mkdir dir
+ atf_check -s exit:1 -e match:"not a disk" fstyp dir
+}
+
+atf_test_case empty
+empty_head() {
+ atf_set "descr" "fstyp(8) should fail on an empty file"
+}
+empty_body() {
+ atf_check -s exit:0 touch empty
+ atf_check -s exit:1 -e match:"filesystem not recognized" fstyp empty
+}
+
+atf_test_case ext2
+ext2_head() {
+ atf_set "descr" "fstyp(8) can detect ext2 filesystems"
+}
+ext2_body() {
+ bzcat $(atf_get_srcdir)/ext2.img.bz2 > ext2.img
+ atf_check -s exit:0 -o inline:"ext2fs\n" fstyp ext2.img
+ atf_check -s exit:0 -o inline:"ext2fs\n" fstyp -l ext2.img
+}
+
+atf_test_case ext3
+ext3_head() {
+ atf_set "descr" "fstyp(8) can detect ext3 filesystems"
+}
+ext3_body() {
+ bzcat $(atf_get_srcdir)/ext3.img.bz2 > ext3.img
+ atf_check -s exit:0 -o inline:"ext2fs\n" fstyp ext3.img
+ atf_check -s exit:0 -o inline:"ext2fs\n" fstyp -l ext3.img
+}
+
+atf_test_case ext4
+ext4_head() {
+ atf_set "descr" "fstyp(8) can detect ext4 filesystems"
+}
+ext4_body() {
+ bzcat $(atf_get_srcdir)/ext4.img.bz2 > ext4.img
+ atf_check -s exit:0 -o inline:"ext2fs\n" fstyp ext4.img
+ atf_check -s exit:0 -o inline:"ext2fs\n" fstyp -l ext4.img
+}
+
+atf_test_case ext4_label
+ext4_label_head() {
+ atf_set "descr" "fstyp(8) can read the label on an ext4 filesystem"
+}
+ext4_label_body() {
+ bzcat $(atf_get_srcdir)/ext4_with_label.img.bz2 > ext4_with_label.img
+ atf_check -s exit:0 -o inline:"ext2fs foo\n" fstyp -l ext4_with_label.img
+}
+
+atf_test_case fat12
+fat12_head() {
+ atf_set "descr" "fstyp(8) can detect FAT12 filesystems"
+}
+fat12_body() {
+ atf_check -s exit:0 truncate -s 64m msdos.img
+ atf_check -s exit:0 -o ignore -e ignore newfs_msdos -F 12 ./msdos.img
+ atf_check -s exit:0 -o inline:"msdosfs\n" fstyp msdos.img
+ atf_check -s exit:0 -o inline:"msdosfs\n" fstyp -l msdos.img
+}
+
+atf_test_case fat16
+fat16_head() {
+ atf_set "descr" "fstyp(8) can detect FAT16 filesystems"
+}
+fat16_body() {
+ atf_check -s exit:0 truncate -s 64m msdos.img
+ atf_check -s exit:0 -o ignore -e ignore newfs_msdos -F 16 ./msdos.img
+ atf_check -s exit:0 -o inline:"msdosfs\n" fstyp msdos.img
+ atf_check -s exit:0 -o inline:"msdosfs\n" fstyp -l msdos.img
+}
+
+atf_test_case fat32
+fat32_head() {
+ atf_set "descr" "fstyp(8) can detect FAT32 filesystems"
+}
+fat32_body() {
+ atf_check -s exit:0 truncate -s 64m msdos.img
+ atf_check -s exit:0 -o ignore -e ignore newfs_msdos -F 32 -c 1 \
+ ./msdos.img
+ atf_check -s exit:0 -o inline:"msdosfs\n" fstyp msdos.img
+ atf_check -s exit:0 -o inline:"msdosfs\n" fstyp -l msdos.img
+}
+
+atf_test_case fat32_label
+fat32_label_head() {
+ atf_set "descr" "fstyp(8) can read the label on an msdos filesystem"
+}
+fat32_label_body() {
+ atf_check -s exit:0 truncate -s 64m msdos.img
+ atf_check -s exit:0 -o ignore -e ignore newfs_msdos -F 32 -L Foo -c 1 \
+ ./msdos.img
+ atf_check -s exit:0 -o inline:"msdosfs\n" fstyp msdos.img
+ # Note: msdos labels are always upper case
+ atf_check -s exit:0 -o inline:"msdosfs FOO\n" fstyp -l msdos.img
+}
+
+atf_test_case ntfs
+ntfs_head() {
+ atf_set "descr" "fstyp(8) can detect ntfs filesystems"
+}
+ntfs_body() {
+ bzcat $(atf_get_srcdir)/ntfs.img.bz2 > ntfs.img
+ atf_check -s exit:0 -o inline:"ntfs\n" fstyp ntfs.img
+ atf_check -s exit:0 -o inline:"ntfs\n" fstyp -l ntfs.img
+}
+
+atf_test_case ntfs_with_label
+ntfs_with_label_head() {
+ atf_set "descr" "fstyp(8) can read labels on ntfs filesystems"
+}
+ntfs_with_label_body() {
+ bzcat $(atf_get_srcdir)/ntfs_with_label.img.bz2 > ntfs_with_label.img
+ atf_check -s exit:0 -o inline:"ntfs\n" fstyp ntfs_with_label.img
+ atf_check -s exit:0 -o inline:"ntfs Foo\n" fstyp -l ntfs_with_label.img
+}
+
+atf_test_case ufs1
+ufs1_head() {
+ atf_set "descr" "fstyp(8) should detect UFS version 1 filesystems"
+}
+ufs1_body() {
+ atf_check -s exit:0 mkdir dir
+ atf_check -s exit:0 -o ignore makefs -Z -s 64m ufs.img dir
+ atf_check -s exit:0 -o inline:"ufs\n" fstyp ufs.img
+ atf_check -s exit:0 -o inline:"ufs\n" fstyp -l ufs.img
+}
+
+atf_test_case ufs2
+ufs2_head() {
+ atf_set "descr" "fstyp(8) should detect UFS version 2 filesystems"
+}
+ufs2_body() {
+ atf_check -s exit:0 mkdir dir
+ atf_check -s exit:0 -o ignore makefs -o version=2 -Z -s 64m ufs.img dir
+ atf_check -s exit:0 -o inline:"ufs\n" fstyp ufs.img
+ atf_check -s exit:0 -o inline:"ufs\n" fstyp -l ufs.img
+}
+
+atf_test_case ufs2_label
+ufs2_label_head() {
+ atf_set "descr" "fstyp(8) can read the label on a UFS v2 filesystem"
+}
+ufs2_label_body() {
+ atf_check -s exit:0 mkdir dir
+ atf_check -s exit:0 -o ignore makefs -o version=2,label="foo" -Z -s 64m ufs.img dir
+ atf_check -s exit:0 -o inline:"ufs foo\n" fstyp -l ufs.img
+}
+
+atf_test_case ufs_on_device cleanup
+ufs_on_device_head() {
+ atf_set "descr" "fstyp(8) should work on device nodes"
+ atf_set "require.user" "root"
+}
+ufs_on_device_body() {
+ mdconfig -a -t swap -s 64m > mdname
+ md=$(cat mdname)
+ if [ -z "$md" ]; then
+ atf_fail "Failed to create md(4) device"
+ fi
+ atf_check -s exit:0 -o ignore newfs -L foo /dev/$md
+ atf_check -s exit:0 -o inline:"ufs\n" fstyp /dev/$md
+ atf_check -s exit:0 -o inline:"ufs foo\n" fstyp -l /dev/$md
+}
+ufs_on_device_cleanup() {
+ md=$(cat mdname)
+ if [ -n "$md" ]; then
+ mdconfig -d -u "$md"
+ fi
+}
+
+atf_test_case zeros
+zeros_head() {
+ atf_set "descr" "fstyp(8) should fail on a zero-filled file"
+}
+zeros_body() {
+ atf_check -s exit:0 truncate -s 256m zeros
+ atf_check -s exit:1 -e match:"filesystem not recognized" fstyp zeros
+}
+
+
+atf_init_test_cases() {
+ atf_add_test_case cd9660
+ atf_add_test_case cd9660_label
+ atf_add_test_case dir
+ atf_add_test_case empty
+ atf_add_test_case ext2
+ atf_add_test_case ext3
+ atf_add_test_case ext4
+ atf_add_test_case ext4_label
+ atf_add_test_case fat12
+ atf_add_test_case fat16
+ atf_add_test_case fat32
+ atf_add_test_case fat32_label
+ atf_add_test_case ntfs
+ atf_add_test_case ntfs_with_label
+ atf_add_test_case ufs1
+ atf_add_test_case ufs2
+ atf_add_test_case ufs2_label
+ atf_add_test_case ufs_on_device
+ atf_add_test_case zeros
+}
diff --git a/usr.sbin/fstyp/tests/ntfs.img.bz2 b/usr.sbin/fstyp/tests/ntfs.img.bz2
new file mode 100644
index 0000000..5843e0b
--- /dev/null
+++ b/usr.sbin/fstyp/tests/ntfs.img.bz2
Binary files differ
diff --git a/usr.sbin/fstyp/tests/ntfs_with_label.img.bz2 b/usr.sbin/fstyp/tests/ntfs_with_label.img.bz2
new file mode 100644
index 0000000..9e2c4cf
--- /dev/null
+++ b/usr.sbin/fstyp/tests/ntfs_with_label.img.bz2
Binary files differ
OpenPOWER on IntegriCloud