diff options
author | ngie <ngie@FreeBSD.org> | 2015-10-07 06:08:55 +0000 |
---|---|---|
committer | ngie <ngie@FreeBSD.org> | 2015-10-07 06:08:55 +0000 |
commit | 59f34e88fad52e107d9f159805abc47ca62ea1b1 (patch) | |
tree | 514fdba9fa6b8ba58b75c3ce781b090505687bdc | |
parent | 98b68926cb4c20ae4604847bb5d420de8f4e035c (diff) | |
download | FreeBSD-src-59f34e88fad52e107d9f159805abc47ca62ea1b1.zip FreeBSD-src-59f34e88fad52e107d9f159805abc47ca62ea1b1.tar.gz |
Integrate the rest of the pieces from libarchive into the
FreeBSD test suite (cpio, tar)
-rw-r--r-- | etc/mtree/BSD.tests.dist | 6 | ||||
-rw-r--r-- | usr.bin/cpio/Makefile | 10 | ||||
-rw-r--r-- | usr.bin/cpio/test/Makefile | 97 | ||||
-rw-r--r-- | usr.bin/cpio/tests/Makefile | 114 | ||||
-rwxr-xr-x | usr.bin/cpio/tests/functional_test.sh | 56 | ||||
-rw-r--r-- | usr.bin/tar/Makefile | 9 | ||||
-rw-r--r-- | usr.bin/tar/tests/Makefile (renamed from usr.bin/tar/test/Makefile) | 82 | ||||
-rwxr-xr-x | usr.bin/tar/tests/functional_test.sh | 51 |
8 files changed, 281 insertions, 144 deletions
diff --git a/etc/mtree/BSD.tests.dist b/etc/mtree/BSD.tests.dist index 7e7b8b5..1fb3365 100644 --- a/etc/mtree/BSD.tests.dist +++ b/etc/mtree/BSD.tests.dist @@ -242,6 +242,8 @@ test-programs .. .. + libarchive + .. libc c063 .. @@ -518,6 +520,8 @@ .. cmp .. + cpio + .. col .. comm @@ -556,6 +560,8 @@ .. soelim .. + tar + .. timeout .. tr diff --git a/usr.bin/cpio/Makefile b/usr.bin/cpio/Makefile index 72a0e2b..3b50742 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 <bsd.prog.mk> diff --git a/usr.bin/cpio/test/Makefile b/usr.bin/cpio/test/Makefile deleted file mode 100644 index 77c73d7..0000000 --- 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 <bsd.prog.mk> diff --git a/usr.bin/cpio/tests/Makefile b/usr.bin/cpio/tests/Makefile new file mode 100644 index 0000000..f2cd52d --- /dev/null +++ b/usr.bin/cpio/tests/Makefile @@ -0,0 +1,114 @@ +# $FreeBSD$ + +LIBARCHIVEDIR= ${SRCTOP}/contrib/libarchive + +ATF_TESTS_SH+= functional_test + +PROGS+= bsdcpio_test + +BINDIR= ${TESTSDIR} + +.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 + +# Build the test program +SRCS.bsdcpio_test= list.h \ + ${CPIO_SRCS} \ + ${TESTS_SRCS} \ + main.c + +.PATH: ${LIBARCHIVEDIR}/test_utils +SRCS.bsdcpio_test+= test_utils.c + +CLEANFILES+= list.h + +CFLAGS+= -DPLATFORM_CONFIG_H=\"${SRCTOP}/lib/libarchive/config_freebsd.h\" +CFLAGS+= -I${SRCTOP}/lib/libarchive -I${.OBJDIR} +LIBADD= archive + +DEBUG_FLAGS+= -g +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 + +list.h: ${TESTS_SRCS} Makefile + @(cd ${LIBARCHIVEDIR}/tar/test && \ + grep -h DEFINE_TEST ${.ALLSRC:N*Makefile}) > ${.TARGET}.tmp + @mv ${.TARGET}.tmp ${.TARGET} + +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 <bsd.test.mk> diff --git a/usr.bin/cpio/tests/functional_test.sh b/usr.bin/cpio/tests/functional_test.sh new file mode 100755 index 0000000..48116c0 --- /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 +} diff --git a/usr.bin/tar/Makefile b/usr.bin/tar/Makefile index e8a9ad4..47416f8 100644 --- a/usr.bin/tar/Makefile +++ b/usr.bin/tar/Makefile @@ -32,11 +32,8 @@ CFLAGS+= -I${LIBARCHIVEDIR}/libarchive_fe SYMLINKS= bsdtar ${BINDIR}/tar MLINKS= bsdtar.1 tar.1 -.PHONY: check test clean-test -check test: $(PROG) bsdtar.1.gz - cd ${.CURDIR}/test && make obj && make test - -clean-test: - cd ${.CURDIR}/test && make clean +.if ${MK_TESTS} != "no" +SUBDIR+= tests +.endif .include <bsd.prog.mk> diff --git a/usr.bin/tar/test/Makefile b/usr.bin/tar/tests/Makefile index 89d0242..5814c5e 100644 --- a/usr.bin/tar/test/Makefile +++ b/usr.bin/tar/tests/Makefile @@ -1,9 +1,15 @@ # $FreeBSD$ -LIBARCHIVEDIR= ${.CURDIR}/../../../contrib/libarchive +LIBARCHIVEDIR= ${SRCTOP}/contrib/libarchive + +ATF_TESTS_SH+= functional_test + +BINDIR= ${TESTSDIR} + +PROGS+= bsdtar_test .PATH: ${LIBARCHIVEDIR}/tar/test -TESTS= \ +TESTS_SRCS= \ test_0.c \ test_basic.c \ test_copy.c \ @@ -56,46 +62,54 @@ TESTS= \ test_version.c # Build the test program -SRCS= ${TAR_SRCS} \ - ${TESTS} \ - list.h \ +SRCS.bsdtar_test= \ + ${TESTS_SRCS} \ + list.h \ main.c +BROKEN_TESTS= + +DPSRCS.bsdtar_test+= list.h + .PATH: ${LIBARCHIVEDIR}/test_utils -SRCS+= test_utils.c +SRCS.bsdtar_test+= test_utils.c -CLEANFILES+= list.h +CLEANFILES+= list.h -MAN= +LIBADD+= archive -PROG=bsdtar_test -DPADD=${LIBARCHIVE} ${LIBBZ2} ${LIBZ} ${LIBLZMA} -CFLAGS+= -DPLATFORM_CONFIG_H=\"${.CURDIR}/../../../lib/libarchive/config_freebsd.h\" -LDADD= -larchive -lz -lbz2 -llzma -CFLAGS+= -static -g -O2 -Wall -CFLAGS+= -I${.CURDIR}/../../../lib/libarchive -I${.OBJDIR} -CFLAGS+= -I${LIBARCHIVEDIR}/tar -I${LIBARCHIVEDIR}/test_utils +DEBUG_FLAGS+= -g +CFLAGS+= -DPLATFORM_CONFIG_H=\"${SRCTOP}/lib/libarchive/config_freebsd.h\" +CFLAGS+= -static -Wall + +CFLAGS+= -I${SRCTOP}/lib/libarchive -I${.OBJDIR} +CFLAGS+= -I${LIBARCHIVEDIR}/tar -I${LIBARCHIVEDIR}/test_utils # Uncomment to link against dmalloc #LDADD+= -L/usr/local/lib -ldmalloc #CFLAGS+= -I/usr/local/include -DUSE_DMALLOC -check test: bsdtar_test - ./bsdtar_test -p ${.OBJDIR}/../bsdtar -r ${LIBARCHIVEDIR}/tar/test - -list.h: ${TESTS} Makefile - (cd ${LIBARCHIVEDIR}/tar/test; cat ${TESTS}) | \ - grep DEFINE_TEST > ${.OBJDIR}/list.h - -clean: - rm -f ${CLEANFILES} - rm -f *.out - rm -f *.o - rm -f *.core - rm -f *~ - rm -f list.h - rm -f archive.h ../archive.h - -chmod -R +w /tmp/bsdtar_test.* - rm -rf /tmp/bsdtar_test.* - -.include <bsd.prog.mk> +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.tar.Z.uu +FILES+= test_extract.tar.bz2.uu +FILES+= test_extract.tar.grz.uu +FILES+= test_extract.tar.gz.uu +FILES+= test_extract.tar.lrz.uu +FILES+= test_extract.tar.lz.uu +FILES+= test_extract.tar.lzma.uu +FILES+= test_extract.tar.lzo.uu +FILES+= test_extract.tar.xz.uu +FILES+= test_option_keep_newer_files.tar.Z.uu +FILES+= test_option_s.tar.Z.uu +FILES+= test_patterns_2.tar.uu +FILES+= test_patterns_3.tar.uu +FILES+= test_patterns_4.tar.uu +FILES+= test_print_longpath.tar.Z.uu + +.include <bsd.test.mk> diff --git a/usr.bin/tar/tests/functional_test.sh b/usr.bin/tar/tests/functional_test.sh new file mode 100755 index 0000000..ee9de1b --- /dev/null +++ b/usr.bin/tar/tests/functional_test.sh @@ -0,0 +1,51 @@ +# +# 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$ + +export BSDTAR=$(which tar) +SRCDIR=$(atf_get_srcdir) +TESTER="${SRCDIR}/bsdtar_test" + +check() +{ + local testcase=${1}; shift + + atf_check -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 +} |