Index: etc/mtree/BSD.tests.dist =================================================================== --- etc/mtree/BSD.tests.dist +++ etc/mtree/BSD.tests.dist @@ -620,6 +620,8 @@ .. ident .. + indent + .. join .. jot Index: usr.bin/indent/Makefile =================================================================== --- usr.bin/indent/Makefile +++ usr.bin/indent/Makefile @@ -1,9 +1,15 @@ # @(#)Makefile 8.1 (Berkeley) 6/6/93 # $FreeBSD$ +.include + PROG= indent SRCS= indent.c io.c lexi.c parse.c pr_comment.c args.c NO_WMISSING_VARIABLE_DECLARATIONS= +.if ${MK_TESTS} != "no" +SUBDIR+= tests +.endif + .include Index: usr.bin/indent/tests/Makefile =================================================================== --- /dev/null +++ usr.bin/indent/tests/Makefile @@ -0,0 +1,43 @@ +# $FreeBSD$ + +PACKAGE= tests + +${PACKAGE}FILES+= comments.0 +${PACKAGE}FILES+= comments.0.stdout +${PACKAGE}FILES+= declarations.0 +${PACKAGE}FILES+= declarations.0.stdout +${PACKAGE}FILES+= elsecomment.0 +${PACKAGE}FILES+= elsecomment.0.stdout +${PACKAGE}FILES+= elsecomment.0.pro +${PACKAGE}FILES+= float.0 +${PACKAGE}FILES+= float.0.stdout +${PACKAGE}FILES+= label.0 +${PACKAGE}FILES+= label.0.stdout +${PACKAGE}FILES+= label.0.pro +${PACKAGE}FILES+= list_head.0 +${PACKAGE}FILES+= list_head.0.stdout +${PACKAGE}FILES+= nsac.0 +${PACKAGE}FILES+= nsac.0.stdout +${PACKAGE}FILES+= nsac.0.pro +${PACKAGE}FILES+= offsetof.0 +${PACKAGE}FILES+= offsetof.0.stdout +${PACKAGE}FILES+= sac.0 +${PACKAGE}FILES+= sac.0.stdout +${PACKAGE}FILES+= sac.0.pro +${PACKAGE}FILES+= struct.0 +${PACKAGE}FILES+= struct.0.stdout +${PACKAGE}FILES+= surplusbad.0 +${PACKAGE}FILES+= surplusbad.0.stdout +${PACKAGE}FILES+= surplusbad.0.pro +${PACKAGE}FILES+= types_from_file.0 +${PACKAGE}FILES+= types_from_file.0.stdout +${PACKAGE}FILES+= types_from_file.0.list +${PACKAGE}FILES+= types_from_file.0.pro +${PACKAGE}FILES+= wchar.0 +${PACKAGE}FILES+= wchar.0.stdout + +ATF_TESTS_SH+= functional_test + +BINDIR= ${TESTSDIR} + +.include Index: usr.bin/indent/tests/elsecomment.pro =================================================================== --- usr.bin/indent/tests/elsecomment.pro +++ usr.bin/indent/tests/elsecomment.pro @@ -1,2 +0,0 @@ -/* $FreeBSD$ */ --bl Index: usr.bin/indent/tests/functional_test.sh =================================================================== --- /dev/null +++ usr.bin/indent/tests/functional_test.sh @@ -0,0 +1,90 @@ +# +# Copyright 2016 Dell EMC +# 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) + +check() +{ + local tc=${1}; shift + + local indent=$(atf_config_get usr.bin.indent.test_indent /usr/bin/indent) + + # All of the files need to be in the ATF sandbox in order for the tests + # to pass. + atf_check cp ${SRCDIR}/${tc}* . + + # Remove $FreeBSD$ RCS expansions because they get re-indented, which + # changes the output + local out_file="${tc}.stdout" + if [ -f "${out_file}" ]; then + parsed_file=output_file.parsed + + atf_check -o save:$parsed_file sed -e '/\$FreeBSD.*\$/d' \ + ${tc}.stdout + out_flag="-o file:$parsed_file" + fi + local profile_file="${tc}.pro" + if [ -f "${profile_file}" ]; then + profile_flag="-P${profile_file}" + else + # Make sure we don't implicitly use ~/.indent.pro from the test + # host, for determinism purposes. + profile_flag="-npro" + fi + sed -e '/\$FreeBSD.*\$/d' ${tc} > input_file.parsed + atf_check -s exit:${tc##*.} ${out_flag} ${indent} ${profile_flag} < input_file.parsed +} + +add_testcase() +{ + local tc=${1} + local tc_escaped word + + case "${tc%.*}" in + *-*) + local IFS="-" + for word in ${tc%.*}; do + tc_escaped="${tc_escaped:+${tc_escaped}_}${word}" + done + ;; + *) + tc_escaped=${tc%.*} + ;; + esac + + atf_test_case ${tc_escaped} + eval "${tc_escaped}_body() { check ${tc}; }" + atf_add_test_case ${tc_escaped} +} + +atf_init_test_cases() +{ + for path in $(find -Es "${SRCDIR}" -regex '.*\.[0-9]+$'); do + add_testcase ${path##*/} + done +} Index: usr.bin/indent/tests/label.pro =================================================================== --- usr.bin/indent/tests/label.pro +++ usr.bin/indent/tests/label.pro @@ -1,2 +0,0 @@ -/* $FreeBSD$ */ --nut Index: usr.bin/indent/tests/nsac.pro =================================================================== --- usr.bin/indent/tests/nsac.pro +++ usr.bin/indent/tests/nsac.pro @@ -1,2 +0,0 @@ -/* $FreeBSD$ */ --nsac Index: usr.bin/indent/tests/sac.pro =================================================================== --- usr.bin/indent/tests/sac.pro +++ usr.bin/indent/tests/sac.pro @@ -1,2 +0,0 @@ -/* $FreeBSD$ */ --sac Index: usr.bin/indent/tests/surplusbad.pro =================================================================== --- usr.bin/indent/tests/surplusbad.pro +++ usr.bin/indent/tests/surplusbad.pro @@ -1,2 +0,0 @@ -/* $FreeBSD$ */ --bad Index: usr.bin/indent/tests/types_from_file.0.pro =================================================================== --- usr.bin/indent/tests/types_from_file.0.pro +++ usr.bin/indent/tests/types_from_file.0.pro @@ -1,2 +1,2 @@ /* $FreeBSD: head/usr.bin/indent/tests/types_from_file.pro 313544 2017-02-10 09:31:39Z pstef $ */ --Utypes_from_file.list +-Utypes_from_file.0.list Index: usr.bin/indent/tests/types_from_file.list =================================================================== --- usr.bin/indent/tests/types_from_file.list +++ usr.bin/indent/tests/types_from_file.list @@ -1,2 +0,0 @@ -b -a \ No newline at end of file Index: usr.bin/indent/tests/types_from_file.pro =================================================================== --- usr.bin/indent/tests/types_from_file.pro +++ usr.bin/indent/tests/types_from_file.pro @@ -1,2 +0,0 @@ -/* $FreeBSD$ */ --Utypes_from_file.list