diff options
| author | Martin Matuska <mm@FreeBSD.org> | 2016-05-12 10:16:16 +0000 |
|---|---|---|
| committer | Martin Matuska <mm@FreeBSD.org> | 2016-05-12 10:16:16 +0000 |
| commit | cdf63a700c77204252e3c2e38d7106965559f3c6 (patch) | |
| tree | b8221b5b091ffc72b700d5da57daaa86ae023d82 /usr.bin/bsdcat | |
| parent | 15c98ff2f1159f39e6c8fc585893734e4f74aa81 (diff) | |
| parent | 4e579f6c9425c995106fbf72667f4ec7e5d5db85 (diff) | |
Notes
Diffstat (limited to 'usr.bin/bsdcat')
| -rw-r--r-- | usr.bin/bsdcat/Makefile | 31 | ||||
| -rw-r--r-- | usr.bin/bsdcat/tests/Makefile | 68 | ||||
| -rwxr-xr-x | usr.bin/bsdcat/tests/functional_test.sh | 56 |
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 +} |
