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