1*00b67f09SDavid van Moolenbroek# 2*00b67f09SDavid van Moolenbroek# Automated Testing Framework (atf) 3*00b67f09SDavid van Moolenbroek# 4*00b67f09SDavid van Moolenbroek# Copyright (c) 2007 The NetBSD Foundation, Inc. 5*00b67f09SDavid van Moolenbroek# All rights reserved. 6*00b67f09SDavid van Moolenbroek# 7*00b67f09SDavid van Moolenbroek# Redistribution and use in source and binary forms, with or without 8*00b67f09SDavid van Moolenbroek# modification, are permitted provided that the following conditions 9*00b67f09SDavid van Moolenbroek# are met: 10*00b67f09SDavid van Moolenbroek# 1. Redistributions of source code must retain the above copyright 11*00b67f09SDavid van Moolenbroek# notice, this list of conditions and the following disclaimer. 12*00b67f09SDavid van Moolenbroek# 2. Redistributions in binary form must reproduce the above copyright 13*00b67f09SDavid van Moolenbroek# notice, this list of conditions and the following disclaimer in the 14*00b67f09SDavid van Moolenbroek# documentation and/or other materials provided with the distribution. 15*00b67f09SDavid van Moolenbroek# 16*00b67f09SDavid van Moolenbroek# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND 17*00b67f09SDavid van Moolenbroek# CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, 18*00b67f09SDavid van Moolenbroek# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 19*00b67f09SDavid van Moolenbroek# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 20*00b67f09SDavid van Moolenbroek# IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY 21*00b67f09SDavid van Moolenbroek# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 22*00b67f09SDavid van Moolenbroek# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 23*00b67f09SDavid van Moolenbroek# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24*00b67f09SDavid van Moolenbroek# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 25*00b67f09SDavid van Moolenbroek# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 26*00b67f09SDavid van Moolenbroek# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN 27*00b67f09SDavid van Moolenbroek# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28*00b67f09SDavid van Moolenbroek# 29*00b67f09SDavid van Moolenbroek 30*00b67f09SDavid van Moolenbroekcreate_files() 31*00b67f09SDavid van Moolenbroek{ 32*00b67f09SDavid van Moolenbroek mkdir tmp 33*00b67f09SDavid van Moolenbroek touch tmp/datafile 34*00b67f09SDavid van Moolenbroek} 35*00b67f09SDavid van Moolenbroek 36*00b67f09SDavid van Moolenbroekatf_test_case default 37*00b67f09SDavid van Moolenbroekdefault_head() 38*00b67f09SDavid van Moolenbroek{ 39*00b67f09SDavid van Moolenbroek atf_set "descr" "Checks that the program can find its files if" \ 40*00b67f09SDavid van Moolenbroek "executed from the same directory" 41*00b67f09SDavid van Moolenbroek} 42*00b67f09SDavid van Moolenbroekdefault_body() 43*00b67f09SDavid van Moolenbroek{ 44*00b67f09SDavid van Moolenbroek create_files 45*00b67f09SDavid van Moolenbroek 46*00b67f09SDavid van Moolenbroek for hp in $(get_helpers); do 47*00b67f09SDavid van Moolenbroek h=${hp##*/} 48*00b67f09SDavid van Moolenbroek cp ${hp} tmp 49*00b67f09SDavid van Moolenbroek atf_check -s eq:0 -o ignore -e ignore -x \ 50*00b67f09SDavid van Moolenbroek "cd tmp && ./${h} srcdir_exists" 51*00b67f09SDavid van Moolenbroek atf_check -s eq:1 -o empty -e ignore "${hp}" -r res srcdir_exists 52*00b67f09SDavid van Moolenbroek atf_check -s eq:0 -o ignore -e empty grep "Cannot find datafile" res 53*00b67f09SDavid van Moolenbroek done 54*00b67f09SDavid van Moolenbroek} 55*00b67f09SDavid van Moolenbroek 56*00b67f09SDavid van Moolenbroekatf_test_case libtool 57*00b67f09SDavid van Moolenbroeklibtool_head() 58*00b67f09SDavid van Moolenbroek{ 59*00b67f09SDavid van Moolenbroek atf_set "descr" "Checks that the program can find its files if" \ 60*00b67f09SDavid van Moolenbroek "executed from the source directory and if it" \ 61*00b67f09SDavid van Moolenbroek "was built with libtool" 62*00b67f09SDavid van Moolenbroek} 63*00b67f09SDavid van Moolenbroeklibtool_body() 64*00b67f09SDavid van Moolenbroek{ 65*00b67f09SDavid van Moolenbroek create_files 66*00b67f09SDavid van Moolenbroek mkdir tmp/.libs 67*00b67f09SDavid van Moolenbroek 68*00b67f09SDavid van Moolenbroek for hp in $(get_helpers c_helpers cpp_helpers); do 69*00b67f09SDavid van Moolenbroek h=${hp##*/} 70*00b67f09SDavid van Moolenbroek cp ${hp} tmp 71*00b67f09SDavid van Moolenbroek cp ${hp} tmp/.libs 72*00b67f09SDavid van Moolenbroek atf_check -s eq:0 -o ignore -e ignore -x \ 73*00b67f09SDavid van Moolenbroek "cd tmp && ./.libs/${h} srcdir_exists" 74*00b67f09SDavid van Moolenbroek atf_check -s eq:1 -o empty -e ignore "${hp}" -r res srcdir_exists 75*00b67f09SDavid van Moolenbroek atf_check -s eq:0 -o ignore -e empty grep "Cannot find datafile" res 76*00b67f09SDavid van Moolenbroek done 77*00b67f09SDavid van Moolenbroek 78*00b67f09SDavid van Moolenbroek for hp in $(get_helpers c_helpers cpp_helpers); do 79*00b67f09SDavid van Moolenbroek h=${hp##*/} 80*00b67f09SDavid van Moolenbroek cp ${hp} tmp 81*00b67f09SDavid van Moolenbroek cp ${hp} tmp/.libs/lt-${h} 82*00b67f09SDavid van Moolenbroek atf_check -s eq:0 -o ignore -e ignore -x \ 83*00b67f09SDavid van Moolenbroek "cd tmp && ./.libs/lt-${h} srcdir_exists" 84*00b67f09SDavid van Moolenbroek atf_check -s eq:1 -o empty -e ignore "${hp}" -r res srcdir_exists 85*00b67f09SDavid van Moolenbroek atf_check -s eq:0 -o ignore -e empty grep "Cannot find datafile" res 86*00b67f09SDavid van Moolenbroek done 87*00b67f09SDavid van Moolenbroek} 88*00b67f09SDavid van Moolenbroek 89*00b67f09SDavid van Moolenbroekatf_test_case sflag 90*00b67f09SDavid van Moolenbroeksflag_head() 91*00b67f09SDavid van Moolenbroek{ 92*00b67f09SDavid van Moolenbroek atf_set "descr" "Checks that the program can find its files when" \ 93*00b67f09SDavid van Moolenbroek "using the -s flag" 94*00b67f09SDavid van Moolenbroek} 95*00b67f09SDavid van Moolenbroeksflag_body() 96*00b67f09SDavid van Moolenbroek{ 97*00b67f09SDavid van Moolenbroek create_files 98*00b67f09SDavid van Moolenbroek 99*00b67f09SDavid van Moolenbroek for hp in $(get_helpers); do 100*00b67f09SDavid van Moolenbroek h=${hp##*/} 101*00b67f09SDavid van Moolenbroek cp ${hp} tmp 102*00b67f09SDavid van Moolenbroek atf_check -s eq:0 -o ignore -e ignore -x \ 103*00b67f09SDavid van Moolenbroek "cd tmp && ./${h} -s $(pwd)/tmp \ 104*00b67f09SDavid van Moolenbroek srcdir_exists" 105*00b67f09SDavid van Moolenbroek atf_check -s eq:1 -o empty -e save:stderr "${hp}" -r res srcdir_exists 106*00b67f09SDavid van Moolenbroek atf_check -s eq:0 -o ignore -e empty grep "Cannot find datafile" res 107*00b67f09SDavid van Moolenbroek atf_check -s eq:0 -o ignore -e ignore \ 108*00b67f09SDavid van Moolenbroek "${hp}" -s "$(pwd)"/tmp srcdir_exists 109*00b67f09SDavid van Moolenbroek done 110*00b67f09SDavid van Moolenbroek} 111*00b67f09SDavid van Moolenbroek 112*00b67f09SDavid van Moolenbroekatf_test_case relative 113*00b67f09SDavid van Moolenbroekrelative_head() 114*00b67f09SDavid van Moolenbroek{ 115*00b67f09SDavid van Moolenbroek atf_set "descr" "Checks that passing a relative path through -s" \ 116*00b67f09SDavid van Moolenbroek "works" 117*00b67f09SDavid van Moolenbroek} 118*00b67f09SDavid van Moolenbroekrelative_body() 119*00b67f09SDavid van Moolenbroek{ 120*00b67f09SDavid van Moolenbroek create_files 121*00b67f09SDavid van Moolenbroek 122*00b67f09SDavid van Moolenbroek for hp in $(get_helpers); do 123*00b67f09SDavid van Moolenbroek h=${hp##*/} 124*00b67f09SDavid van Moolenbroek cp ${hp} tmp 125*00b67f09SDavid van Moolenbroek 126*00b67f09SDavid van Moolenbroek for p in tmp tmp/. ./tmp; do 127*00b67f09SDavid van Moolenbroek echo "Helper is: ${h}" 128*00b67f09SDavid van Moolenbroek echo "Using source directory: ${p}" 129*00b67f09SDavid van Moolenbroek 130*00b67f09SDavid van Moolenbroek atf_check -s eq:0 -o ignore -e ignore \ 131*00b67f09SDavid van Moolenbroek "./tmp/${h}" -s "${p}" srcdir_exists 132*00b67f09SDavid van Moolenbroek atf_check -s eq:1 -o empty -e save:stderr "${hp}" -r res \ 133*00b67f09SDavid van Moolenbroek srcdir_exists 134*00b67f09SDavid van Moolenbroek atf_check -s eq:0 -o ignore -e empty grep "Cannot find datafile" res 135*00b67f09SDavid van Moolenbroek atf_check -s eq:0 -o ignore -e ignore \ 136*00b67f09SDavid van Moolenbroek "${hp}" -s "${p}" srcdir_exists 137*00b67f09SDavid van Moolenbroek done 138*00b67f09SDavid van Moolenbroek done 139*00b67f09SDavid van Moolenbroek} 140*00b67f09SDavid van Moolenbroek 141*00b67f09SDavid van Moolenbroekatf_init_test_cases() 142*00b67f09SDavid van Moolenbroek{ 143*00b67f09SDavid van Moolenbroek atf_add_test_case default 144*00b67f09SDavid van Moolenbroek atf_add_test_case libtool 145*00b67f09SDavid van Moolenbroek atf_add_test_case sflag 146*00b67f09SDavid van Moolenbroek atf_add_test_case relative 147*00b67f09SDavid van Moolenbroek} 148*00b67f09SDavid van Moolenbroek 149*00b67f09SDavid van Moolenbroek# vim: syntax=sh:expandtab:shiftwidth=4:softtabstop=4 150