From 59e2ff550c448126b988150ce800cdf73bb5103e Mon Sep 17 00:00:00 2001 From: Enji Cooper Date: Mon, 12 Oct 2015 18:31:21 +0000 Subject: Integrate the tests from lib/libarchive, usr.bin/cpio, and usr.bin/tar in to the FreeBSD test suite functional_test.sh was ported from bin/sh/tests/functional_test.sh, as a small wrapper around libarchive_test, bsdcpio_test, and bsdtar_test provided by upstream. A handful of testcases in lib/libarchive/tests have been disabled as they were failing when run with kyua test (see BROKEN_TESTS in lib/libarchive/tests/Makefile) As a sidenote: this removes the check/test targets from the Makefiles as they don't match the pattern used in the rest of the FreeBSD test suite. MFC after: 2 weeks Sponsored by: EMC / Isilon Storage Division --- usr.bin/cpio/Makefile | 10 +-- usr.bin/cpio/test/Makefile | 97 ---------------------------- usr.bin/cpio/tests/Makefile | 116 ++++++++++++++++++++++++++++++++++ usr.bin/cpio/tests/functional_test.sh | 56 ++++++++++++++++ 4 files changed, 175 insertions(+), 104 deletions(-) delete mode 100644 usr.bin/cpio/test/Makefile create mode 100644 usr.bin/cpio/tests/Makefile create mode 100755 usr.bin/cpio/tests/functional_test.sh (limited to 'usr.bin/cpio') diff --git a/usr.bin/cpio/Makefile b/usr.bin/cpio/Makefile index 72a0e2bd25a1..3b50742ea20d 100644 --- a/usr.bin/cpio/Makefile +++ b/usr.bin/cpio/Makefile @@ -32,12 +32,8 @@ CFLAGS+= -DHAVE_ICONV=1 -DHAVE_ICONV_H=1 -DICONV_CONST=const SYMLINKS=bsdcpio ${BINDIR}/cpio MLINKS= bsdcpio.1 cpio.1 -.PHONY: check test clean-test - -check test: $(PROG) bsdcpio.1.gz - cd ${.CURDIR}/test && make obj && make test - -clean-test: - cd ${.CURDIR}/test && make clean +.if ${MK_TESTS} != "no" +SUBDIR+= tests +.endif .include diff --git a/usr.bin/cpio/test/Makefile b/usr.bin/cpio/test/Makefile deleted file mode 100644 index 77c73d7274bb..000000000000 --- a/usr.bin/cpio/test/Makefile +++ /dev/null @@ -1,97 +0,0 @@ -# $FreeBSD$ - -LIBARCHIVEDIR= ${.CURDIR}/../../../contrib/libarchive - -.PATH: ${LIBARCHIVEDIR}/cpio -CPIO_SRCS= cmdline.c - -.PATH: ${LIBARCHIVEDIR}/libarchive_fe -CPIO_SRCS+= err.c - -.PATH: ${LIBARCHIVEDIR}/cpio/test -TESTS= \ - test_0.c \ - test_basic.c \ - test_cmdline.c \ - test_extract_cpio_Z.c \ - test_extract_cpio_bz2.c \ - test_extract_cpio_grz.c \ - test_extract_cpio_gz.c \ - test_extract_cpio_lrz.c \ - test_extract_cpio_lz.c \ - test_extract_cpio_lzma.c \ - test_extract_cpio_lzo.c \ - test_extract_cpio_xz.c \ - test_format_newc.c \ - test_gcpio_compat.c \ - test_option_0.c \ - test_option_B_upper.c \ - test_option_C_upper.c \ - test_option_J_upper.c \ - test_option_L_upper.c \ - test_option_Z_upper.c \ - test_option_a.c \ - test_option_b64encode.c \ - test_option_c.c \ - test_option_d.c \ - test_option_f.c \ - test_option_grzip.c \ - test_option_help.c \ - test_option_l.c \ - test_option_lrzip.c \ - test_option_lzma.c \ - test_option_lzop.c \ - test_option_m.c \ - test_option_t.c \ - test_option_u.c \ - test_option_uuencode.c \ - test_option_version.c \ - test_option_xz.c \ - test_option_y.c \ - test_option_z.c \ - test_owner_parse.c \ - test_passthrough_dotdot.c \ - test_passthrough_reverse.c - -# Build the test program -SRCS= list.h \ - ${CPIO_SRCS} \ - ${TESTS} \ - main.c - -.PATH: ${LIBARCHIVEDIR}/test_utils -SRCS+= test_utils.c - -CLEANFILES+= list.h bsdcpio_test - -MAN= - -PROG=bsdcpio_test -CFLAGS+= -DPLATFORM_CONFIG_H=\"${.CURDIR}/../../../lib/libarchive/config_freebsd.h\" -CFLAGS+= -I${.CURDIR}/../../../lib/libarchive -I${.OBJDIR} -LIBADD= archive -#CFLAGS+= -static -g -O2 -Wall -CFLAGS+= -g -O2 -Wall -CFLAGS+= -I${.OBJDIR} -CFLAGS+= -I${LIBARCHIVEDIR}/cpio -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 - -check test: bsdcpio_test - ${.OBJDIR}/bsdcpio_test -p ${.OBJDIR}/../bsdcpio \ - -r ${LIBARCHIVEDIR}/cpio/test - -${.OBJDIR}/list.h list.h: ${TESTS} Makefile - (cd ${LIBARCHIVEDIR}/cpio/test; cat ${TESTS}) | \ - grep DEFINE_TEST > ${.OBJDIR}/list.h - -clean: - rm -f ${CLEANFILES} - rm -f *~ - -chmod -R +w /tmp/bsdcpio_test.* - rm -rf /tmp/bsdcpio_test.* - -.include diff --git a/usr.bin/cpio/tests/Makefile b/usr.bin/cpio/tests/Makefile new file mode 100644 index 000000000000..a1f8a5e937a1 --- /dev/null +++ b/usr.bin/cpio/tests/Makefile @@ -0,0 +1,116 @@ +# $FreeBSD$ + +LIBARCHIVEDIR= ${SRCTOP}/contrib/libarchive + +ATF_TESTS_SH+= functional_test + +BINDIR= ${TESTSDIR} + +PROGS+= bsdcpio_test + +CFLAGS+= -DPLATFORM_CONFIG_H=\"${SRCTOP}/lib/libarchive/config_freebsd.h\" +CFLAGS+= -I${SRCTOP}/lib/libarchive -I${.OBJDIR} + +CFLAGS+= -I${.OBJDIR} +CFLAGS+= -I${LIBARCHIVEDIR}/cpio -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}/cpio +CPIO_SRCS= cmdline.c + +.PATH: ${LIBARCHIVEDIR}/libarchive_fe +CPIO_SRCS+= err.c + +.PATH: ${LIBARCHIVEDIR}/cpio/test +TESTS_SRCS= \ + test_0.c \ + test_basic.c \ + test_cmdline.c \ + test_extract_cpio_Z.c \ + test_extract_cpio_bz2.c \ + test_extract_cpio_grz.c \ + test_extract_cpio_gz.c \ + test_extract_cpio_lrz.c \ + test_extract_cpio_lz.c \ + test_extract_cpio_lzma.c \ + test_extract_cpio_lzo.c \ + test_extract_cpio_xz.c \ + test_format_newc.c \ + test_gcpio_compat.c \ + test_option_0.c \ + test_option_B_upper.c \ + test_option_C_upper.c \ + test_option_J_upper.c \ + test_option_L_upper.c \ + test_option_Z_upper.c \ + test_option_a.c \ + test_option_b64encode.c \ + test_option_c.c \ + test_option_d.c \ + test_option_f.c \ + test_option_grzip.c \ + test_option_help.c \ + test_option_l.c \ + test_option_lrzip.c \ + test_option_lzma.c \ + test_option_lzop.c \ + test_option_m.c \ + test_option_t.c \ + test_option_u.c \ + test_option_uuencode.c \ + test_option_version.c \ + test_option_xz.c \ + test_option_y.c \ + test_option_z.c \ + test_owner_parse.c \ + test_passthrough_dotdot.c \ + test_passthrough_reverse.c + +SRCS.bsdcpio_test= list.h \ + ${CPIO_SRCS} \ + ${TESTS_SRCS} \ + main.c + +DPSRCS.bsdcpio_test= \ + list.h + +.PATH: ${LIBARCHIVEDIR}/test_utils +SRCS.bsdcpio_test+= test_utils.c + +LIBADD.bsdcpio_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 + +FILES+= test_extract.cpio.Z.uu +FILES+= test_extract.cpio.bz2.uu +FILES+= test_extract.cpio.grz.uu +FILES+= test_extract.cpio.gz.uu +FILES+= test_extract.cpio.lrz.uu +FILES+= test_extract.cpio.lz.uu +FILES+= test_extract.cpio.lzma.uu +FILES+= test_extract.cpio.lzo.uu +FILES+= test_extract.cpio.xz.uu +FILES+= test_gcpio_compat_ref.bin.uu +FILES+= test_gcpio_compat_ref.crc.uu +FILES+= test_gcpio_compat_ref.newc.uu +FILES+= test_gcpio_compat_ref.ustar.uu +FILES+= test_gcpio_compat_ref_nosym.bin.uu +FILES+= test_gcpio_compat_ref_nosym.crc.uu +FILES+= test_gcpio_compat_ref_nosym.newc.uu +FILES+= test_gcpio_compat_ref_nosym.ustar.uu +FILES+= test_option_f.cpio.uu +FILES+= test_option_m.cpio.uu +FILES+= test_option_t.cpio.uu +FILES+= test_option_t.stdout.uu +FILES+= test_option_tv.stdout.uu + +.include diff --git a/usr.bin/cpio/tests/functional_test.sh b/usr.bin/cpio/tests/functional_test.sh new file mode 100755 index 000000000000..48116c0b7569 --- /dev/null +++ b/usr.bin/cpio/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}/bsdcpio_test" +export BSDCPIO=$(which cpio) + +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 +} -- cgit v1.2.3