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