xref: /freebsd-src/usr.bin/bsdcat/tests/functional_test.sh (revision d0b2dbfa0ecf2bbc9709efc5e20baf8e4b44bbbf)
1*cdf63a70SMartin Matuska#
2*cdf63a70SMartin Matuska# Copyright 2015 EMC Corp.
3*cdf63a70SMartin Matuska# All rights reserved.
4*cdf63a70SMartin Matuska#
5*cdf63a70SMartin Matuska# Redistribution and use in source and binary forms, with or without
6*cdf63a70SMartin Matuska# modification, are permitted provided that the following conditions are
7*cdf63a70SMartin Matuska# met:
8*cdf63a70SMartin Matuska#
9*cdf63a70SMartin Matuska# * Redistributions of source code must retain the above copyright
10*cdf63a70SMartin Matuska#   notice, this list of conditions and the following disclaimer.
11*cdf63a70SMartin Matuska# * Redistributions in binary form must reproduce the above copyright
12*cdf63a70SMartin Matuska#   notice, this list of conditions and the following disclaimer in the
13*cdf63a70SMartin Matuska#   documentation and/or other materials provided with the distribution.
14*cdf63a70SMartin Matuska#
15*cdf63a70SMartin Matuska# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
16*cdf63a70SMartin Matuska# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
17*cdf63a70SMartin Matuska# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
18*cdf63a70SMartin Matuska# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
19*cdf63a70SMartin Matuska# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
20*cdf63a70SMartin Matuska# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
21*cdf63a70SMartin Matuska# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
22*cdf63a70SMartin Matuska# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
23*cdf63a70SMartin Matuska# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24*cdf63a70SMartin Matuska# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
25*cdf63a70SMartin Matuska# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*cdf63a70SMartin Matuska#
27*cdf63a70SMartin Matuska
28*cdf63a70SMartin MatuskaSRCDIR=$(atf_get_srcdir)
29*cdf63a70SMartin MatuskaTESTER="${SRCDIR}/bsdcat_test"
30*cdf63a70SMartin Matuskaexport BSDCAT=$(which bsdcat)
31*cdf63a70SMartin Matuska
32*cdf63a70SMartin Matuskacheck()
33*cdf63a70SMartin Matuska{
34*cdf63a70SMartin Matuska	local testcase=${1}; shift
35*cdf63a70SMartin Matuska
36*cdf63a70SMartin Matuska	# For some odd reason /bin/sh spuriously writes
37*cdf63a70SMartin Matuska	# "write error on stdout" with some of the testcases
38*cdf63a70SMartin Matuska	#
39*cdf63a70SMartin Matuska	# Probably an issue with how they're written as it calls system(3) to
40*cdf63a70SMartin Matuska	# clean up directories..
41*cdf63a70SMartin Matuska	atf_check -e ignore -o ignore -s exit:0 ${TESTER} -d -r "${SRCDIR}" -v "${testcase}"
42*cdf63a70SMartin Matuska}
43*cdf63a70SMartin Matuska
44*cdf63a70SMartin Matuskaatf_init_test_cases()
45*cdf63a70SMartin Matuska{
46*cdf63a70SMartin Matuska	# Redirect stderr to stdout for the usage message because if you don't
47*cdf63a70SMartin Matuska	# kyua list/kyua test will break:
48*cdf63a70SMartin Matuska	# https://github.com/jmmv/kyua/issues/149
49*cdf63a70SMartin Matuska	testcases=$(${TESTER} -h 2>&1 | awk 'p != 0 && $1 ~ /^[0-9]+:/ { print $NF } /Available tests:/ { p=1 }')
50*cdf63a70SMartin Matuska	for testcase in ${testcases}; do
51*cdf63a70SMartin Matuska		atf_test_case ${testcase}
52*cdf63a70SMartin Matuska		eval "${testcase}_body() { check ${testcase}; }"
53*cdf63a70SMartin Matuska		atf_add_test_case ${testcase}
54*cdf63a70SMartin Matuska	done
55*cdf63a70SMartin Matuska}
56