aboutsummaryrefslogtreecommitdiff
path: root/usr.bin/bsdcat
diff options
context:
space:
mode:
authorMartin Matuska <mm@FreeBSD.org>2016-05-12 10:16:16 +0000
committerMartin Matuska <mm@FreeBSD.org>2016-05-12 10:16:16 +0000
commitcdf63a700c77204252e3c2e38d7106965559f3c6 (patch)
treeb8221b5b091ffc72b700d5da57daaa86ae023d82 /usr.bin/bsdcat
parent15c98ff2f1159f39e6c8fc585893734e4f74aa81 (diff)
parent4e579f6c9425c995106fbf72667f4ec7e5d5db85 (diff)
Notes
Diffstat (limited to 'usr.bin/bsdcat')
-rw-r--r--usr.bin/bsdcat/Makefile31
-rw-r--r--usr.bin/bsdcat/tests/Makefile68
-rwxr-xr-xusr.bin/bsdcat/tests/functional_test.sh56
3 files changed, 155 insertions, 0 deletions
diff --git a/usr.bin/bsdcat/Makefile b/usr.bin/bsdcat/Makefile
new file mode 100644
index 000000000000..ce435b62d263
--- /dev/null
+++ b/usr.bin/bsdcat/Makefile
@@ -0,0 +1,31 @@
+# $FreeBSD$
+
+.include <src.opts.mk>
+
+_LIBARCHIVEDIR= ${.CURDIR}/../../contrib/libarchive
+_LIBARCHIVECONFDIR= ${.CURDIR}/../../lib/libarchive
+
+PROG= bsdcat
+BSDCAT_VERSION_STRING= 3.2.0
+
+.PATH: ${_LIBARCHIVEDIR}/cat
+SRCS= bsdcat.c cmdline.c
+
+.PATH: ${_LIBARCHIVEDIR}/libarchive_fe
+SRCS+= err.c
+
+CFLAGS+= -DBSDCAT_VERSION_STRING=\"${BSDCAT_VERSION_STRING}\"
+CFLAGS+= -DPLATFORM_CONFIG_H=\"${_LIBARCHIVECONFDIR}/config_freebsd.h\"
+CFLAGS+= -I${_LIBARCHIVEDIR}/cat -I${_LIBARCHIVEDIR}/libarchive_fe
+
+LIBADD= archive
+
+.if ${MK_ICONV} != "no"
+CFLAGS+= -DHAVE_ICONV=1 -DHAVE_ICONV_H=1 -DICONV_CONST=const
+.endif
+
+.if ${MK_TESTS} != "no"
+SUBDIR+= tests
+.endif
+
+.include <bsd.prog.mk>
diff --git a/usr.bin/bsdcat/tests/Makefile b/usr.bin/bsdcat/tests/Makefile
new file mode 100644
index 000000000000..1fbaa9b0b854
--- /dev/null
+++ b/usr.bin/bsdcat/tests/Makefile
@@ -0,0 +1,68 @@
+# $FreeBSD$
+
+PACKAGE= tests
+
+_LIBARCHIVEDIR= ${SRCTOP}/contrib/libarchive
+
+ATF_TESTS_SH+= functional_test
+
+BINDIR= ${TESTSDIR}
+
+PROGS+= bsdcat_test
+
+CFLAGS+= -DPLATFORM_CONFIG_H=\"${SRCTOP}/lib/libarchive/config_freebsd.h\"
+CFLAGS+= -I${SRCTOP}/lib/libarchive -I${.OBJDIR}
+
+CFLAGS+= -I${.OBJDIR}
+CFLAGS+= -I${_LIBARCHIVEDIR}/cat -I${_LIBARCHIVEDIR}/libarchive_fe
+CFLAGS+= -I${_LIBARCHIVEDIR}/test_utils
+
+# Uncomment to link against dmalloc
+#LDADD+= -L/usr/local/lib -ldmalloc
+#CFLAGS+= -I/usr/local/include -DUSE_DMALLOC
+
+.PATH: ${_LIBARCHIVEDIR}/cat/test
+TESTS_SRCS= \
+ test_0.c \
+ test_empty_gz.c \
+ test_empty_lz4.c \
+ test_empty_xz.c \
+ test_error.c \
+ test_error_mixed.c \
+ test_expand_Z.c \
+ test_expand_bz2.c \
+ test_expand_gz.c \
+ test_expand_lz4.c \
+ test_expand_mixed.c \
+ test_expand_plain.c \
+ test_expand_xz.c \
+ test_help.c \
+ test_version.c
+
+SRCS.bsdcat_test= list.h \
+ ${TESTS_SRCS} \
+ main.c
+
+.PATH: ${_LIBARCHIVEDIR}/test_utils
+SRCS.bsdcat_test+= test_utils.c
+
+LIBADD.bsdcat_test= archive
+
+list.h: ${TESTS_SRCS} Makefile
+ @(cd ${_LIBARCHIVEDIR}/tar/test && \
+ grep -h DEFINE_TEST ${.ALLSRC:N*Makefile}) > ${.TARGET}.tmp
+ @mv ${.TARGET}.tmp ${.TARGET}
+
+CLEANFILES+= list.h list.h.tmp
+
+${PACKAGE}FILES+= test_empty.gz.uu
+${PACKAGE}FILES+= test_empty.lz4.uu
+${PACKAGE}FILES+= test_empty.xz.uu
+${PACKAGE}FILES+= test_expand.Z.uu
+${PACKAGE}FILES+= test_expand.bz2.uu
+${PACKAGE}FILES+= test_expand.gz.uu
+${PACKAGE}FILES+= test_expand.lz4.uu
+${PACKAGE}FILES+= test_expand.plain.uu
+${PACKAGE}FILES+= test_expand.xz.uu
+
+.include <bsd.test.mk>
diff --git a/usr.bin/bsdcat/tests/functional_test.sh b/usr.bin/bsdcat/tests/functional_test.sh
new file mode 100755
index 000000000000..ae5307d07089
--- /dev/null
+++ b/usr.bin/bsdcat/tests/functional_test.sh
@@ -0,0 +1,56 @@
+#
+# 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.
+#
+# $FreeBSD$
+
+SRCDIR=$(atf_get_srcdir)
+TESTER="${SRCDIR}/bsdcat_test"
+export BSDCAT=$(which bsdcat)
+
+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
+}