aboutsummaryrefslogtreecommitdiff
path: root/usr.bin/unzip/tests
diff options
context:
space:
mode:
Diffstat (limited to 'usr.bin/unzip/tests')
-rw-r--r--usr.bin/unzip/tests/Makefile75
-rw-r--r--usr.bin/unzip/tests/Makefile.depend14
-rwxr-xr-xusr.bin/unzip/tests/functional_test.sh55
3 files changed, 144 insertions, 0 deletions
diff --git a/usr.bin/unzip/tests/Makefile b/usr.bin/unzip/tests/Makefile
new file mode 100644
index 000000000000..404a546410e4
--- /dev/null
+++ b/usr.bin/unzip/tests/Makefile
@@ -0,0 +1,75 @@
+PACKAGE= tests
+
+_LIBARCHIVEDIR= ${SRCTOP}/contrib/libarchive
+
+ATF_TESTS_SH+= functional_test
+
+BINDIR= ${TESTSDIR}
+
+PROGS+= bsdunzip_test
+
+CFLAGS+= -DPLATFORM_CONFIG_H=\"${SRCTOP}/lib/libarchive/config_freebsd.h\"
+CFLAGS+= -I${SRCTOP}/lib/libarchive -I${.OBJDIR}
+
+CFLAGS+= -I${.OBJDIR}
+CFLAGS+= -I${_LIBARCHIVEDIR}/unzip -I${_LIBARCHIVEDIR}/unzip/test
+CFLAGS+= -I${_LIBARCHIVEDIR}/libarchive
+CFLAGS+= -I${_LIBARCHIVEDIR}/libarchive_fe -I${_LIBARCHIVEDIR}/test_utils
+
+# Uncomment to link against dmalloc
+#LDADD+= -L/usr/local/lib -ldmalloc
+#CFLAGS+= -I/usr/local/include -DUSE_DMALLOC
+
+CFLAGS.test_utils.c+= -Wno-cast-align
+
+.PATH: ${_LIBARCHIVEDIR}/libarchive_fe
+UNZIP_SRCS+= err.c
+
+.PATH: ${_LIBARCHIVEDIR}/unzip/test
+TESTS_SRCS= \
+ test_0.c \
+ test_C.c \
+ test_I.c \
+ test_L.c \
+ test_P_encryption.c \
+ test_Z1.c \
+ test_basic.c \
+ test_d.c \
+ test_doubledash.c \
+ test_glob.c \
+ test_j.c \
+ test_n.c \
+ test_not_exist.c \
+ test_o.c \
+ test_p.c \
+ test_q.c \
+ test_singlefile.c \
+ test_t.c \
+ test_t_bad.c \
+ test_version.c \
+ test_x.c
+
+SRCS.bsdunzip_test= list.h \
+ ${UNZIP_SRCS} \
+ ${TESTS_SRCS}
+
+.PATH: ${_LIBARCHIVEDIR}/test_utils
+SRCS.bsdunzip_test+= test_main.c \
+ test_utils.c
+
+LIBADD.bsdunzip_test= archive
+
+list.h: ${TESTS_SRCS} Makefile
+ @(cd ${_LIBARCHIVEDIR}/unzip/test && \
+ grep -h DEFINE_TEST ${.ALLSRC:N*Makefile}) > ${.TARGET}.tmp
+ @mv ${.TARGET}.tmp ${.TARGET}
+
+CLEANFILES+= list.h list.h.tmp
+
+${PACKAGE}FILES+= test_I.zip.uu
+${PACKAGE}FILES+= test_basic.zip.uu
+${PACKAGE}FILES+= test_encrypted.zip.uu
+${PACKAGE}FILES+= test_singlefile.zip.uu
+${PACKAGE}FILES+= test_t_bad.zip.uu
+
+.include <bsd.test.mk>
diff --git a/usr.bin/unzip/tests/Makefile.depend b/usr.bin/unzip/tests/Makefile.depend
new file mode 100644
index 000000000000..5f5ceeb3eee7
--- /dev/null
+++ b/usr.bin/unzip/tests/Makefile.depend
@@ -0,0 +1,14 @@
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ lib/${CSU_DIR} \
+ lib/libarchive \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/unzip/tests/functional_test.sh b/usr.bin/unzip/tests/functional_test.sh
new file mode 100755
index 000000000000..e668453d8882
--- /dev/null
+++ b/usr.bin/unzip/tests/functional_test.sh
@@ -0,0 +1,55 @@
+#
+# Copyright 2015 EMC Corp.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+SRCDIR=$(atf_get_srcdir)
+TESTER="${SRCDIR}/bsdunzip_test"
+export BSDUNZIP=$(which bsdunzip)
+
+check()
+{
+ local testcase=${1}; shift
+
+ # For some odd reason /bin/sh spuriously writes
+ # "write error on stdout" with some of the testcases
+ #
+ # Probably an issue with how they're written as it calls system(3) to
+ # clean up directories..
+ atf_check -e ignore -o ignore -s exit:0 ${TESTER} -d -r "${SRCDIR}" -v "${testcase}"
+}
+
+atf_init_test_cases()
+{
+ # Redirect stderr to stdout for the usage message because if you don't
+ # kyua list/kyua test will break:
+ # https://github.com/jmmv/kyua/issues/149
+ testcases=$(${TESTER} -h 2>&1 | awk 'p != 0 && $1 ~ /^[0-9]+:/ { print $NF } /Available tests:/ { p=1 }')
+ for testcase in ${testcases}; do
+ atf_test_case ${testcase}
+ eval "${testcase}_body() { check ${testcase}; }"
+ atf_add_test_case ${testcase}
+ done
+}