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/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.pro +${PACKAGE}FILES+= float.0 +${PACKAGE}FILES+= float.0.stdout +${PACKAGE}FILES+= label.0 +${PACKAGE}FILES+= label.0.stdout +${PACKAGE}FILES+= label.pro +${PACKAGE}FILES+= list_head.0 +${PACKAGE}FILES+= list_head.0.stdout +${PACKAGE}FILES+= nsac.0 +${PACKAGE}FILES+= nsac.0.stdout +${PACKAGE}FILES+= nsac.pro +${PACKAGE}FILES+= offsetof.0 +${PACKAGE}FILES+= offsetof.0.stdout +${PACKAGE}FILES+= sac.0 +${PACKAGE}FILES+= sac.0.stdout +${PACKAGE}FILES+= sac.pro +${PACKAGE}FILES+= struct.0 +${PACKAGE}FILES+= struct.0.stdout +${PACKAGE}FILES+= surplusbad.0 +${PACKAGE}FILES+= surplusbad.0.stdout +${PACKAGE}FILES+= surplusbad.pro +${PACKAGE}FILES+= types_from_file.0 +${PACKAGE}FILES+= types_from_file.0.stdout +${PACKAGE}FILES+= types_from_file.list +${PACKAGE}FILES+= types_from_file.pro +${PACKAGE}FILES+= wchar.0 +${PACKAGE}FILES+= wchar.0.stdout + +ATF_TESTS_SH+= functional_test + +BINDIR= ${TESTSDIR} + +.include Index: usr.bin/indent/tests/functional_test.sh =================================================================== --- /dev/null +++ usr.bin/indent/tests/functional_test.sh @@ -0,0 +1,81 @@ +# +# 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) + + # Remove $FreeBSD$ RCS expansions because they get re-indented, which + # changes the output + local out_file="${SRCDIR}/${tc}.stdout" + if [ -f "${out_file}" ]; then + parsed_file=output_file.parsed + + atf_check -o save:$parsed_file sed -e '/\$FreeBSD.*\$/d' \ + ${SRCDIR}/${tc}.stdout + out_flag="-o file:$parsed_file" + fi + local profile_file="${SRCDIR}/${tc}.pro" + [ -f "${profile_file}" ] && profile_flag="-P${profile_file}" + + sed -e '/\$FreeBSD.*\$/d' ${SRCDIR}/${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 +}