1*d780102eSjmmv# 2*d780102eSjmmv# Automated Testing Framework (atf) 3*d780102eSjmmv# 4*d780102eSjmmv# Copyright (c) 2007 The NetBSD Foundation, Inc. 5*d780102eSjmmv# All rights reserved. 6*d780102eSjmmv# 7*d780102eSjmmv# Redistribution and use in source and binary forms, with or without 8*d780102eSjmmv# modification, are permitted provided that the following conditions 9*d780102eSjmmv# are met: 10*d780102eSjmmv# 1. Redistributions of source code must retain the above copyright 11*d780102eSjmmv# notice, this list of conditions and the following disclaimer. 12*d780102eSjmmv# 2. Redistributions in binary form must reproduce the above copyright 13*d780102eSjmmv# notice, this list of conditions and the following disclaimer in the 14*d780102eSjmmv# documentation and/or other materials provided with the distribution. 15*d780102eSjmmv# 16*d780102eSjmmv# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND 17*d780102eSjmmv# CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, 18*d780102eSjmmv# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 19*d780102eSjmmv# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 20*d780102eSjmmv# IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY 21*d780102eSjmmv# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 22*d780102eSjmmv# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 23*d780102eSjmmv# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24*d780102eSjmmv# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 25*d780102eSjmmv# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 26*d780102eSjmmv# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN 27*d780102eSjmmv# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28*d780102eSjmmv# 29*d780102eSjmmv 30*d780102eSjmmvall_vars="atf_arch \ 31*d780102eSjmmv atf_build_cc \ 32*d780102eSjmmv atf_build_cflags \ 33*d780102eSjmmv atf_build_cpp \ 34*d780102eSjmmv atf_build_cppflags \ 35*d780102eSjmmv atf_build_cxx \ 36*d780102eSjmmv atf_build_cxxflags \ 37*d780102eSjmmv atf_confdir \ 38*d780102eSjmmv atf_includedir \ 39*d780102eSjmmv atf_libdir \ 40*d780102eSjmmv atf_libexecdir \ 41*d780102eSjmmv atf_machine \ 42*d780102eSjmmv atf_pkgdatadir \ 43*d780102eSjmmv atf_shell \ 44*d780102eSjmmv atf_workdir" 45*d780102eSjmmvall_vars_no=15 46*d780102eSjmmv 47*d780102eSjmmvatf_test_case list_all 48*d780102eSjmmvlist_all_head() 49*d780102eSjmmv{ 50*d780102eSjmmv atf_set "descr" "Tests that at atf-config prints all expected" \ 51*d780102eSjmmv "variables, and not more" 52*d780102eSjmmv} 53*d780102eSjmmvlist_all_body() 54*d780102eSjmmv{ 55*d780102eSjmmv atf_check -s eq:0 -o save:stdout -e empty atf-config 56*d780102eSjmmv atf_check -s eq:0 -o empty -e empty \ 57*d780102eSjmmv test "$(wc -l stdout | awk '{ print $1 }')" = "${all_vars_no}" 58*d780102eSjmmv for v in ${all_vars}; do 59*d780102eSjmmv atf_check -s eq:0 -o ignore -e empty grep "${v}" stdout 60*d780102eSjmmv done 61*d780102eSjmmv} 62*d780102eSjmmv 63*d780102eSjmmvatf_test_case query_one 64*d780102eSjmmvquery_one_head() 65*d780102eSjmmv{ 66*d780102eSjmmv atf_set "descr" "Tests that querying a single variable works" 67*d780102eSjmmv} 68*d780102eSjmmvquery_one_body() 69*d780102eSjmmv{ 70*d780102eSjmmv for v in ${all_vars}; do 71*d780102eSjmmv atf_check -s eq:0 -o save:stdout -o match:"${v}" -e empty \ 72*d780102eSjmmv atf-config "${v}" 73*d780102eSjmmv atf_check -s eq:0 -o empty -e empty \ 74*d780102eSjmmv test "$(wc -l stdout | awk '{ print $1 }')" = 1 75*d780102eSjmmv done 76*d780102eSjmmv} 77*d780102eSjmmv 78*d780102eSjmmvatf_test_case query_one_terse 79*d780102eSjmmvquery_one_terse_head() 80*d780102eSjmmv{ 81*d780102eSjmmv atf_set "descr" "Tests that querying a single variable in terse mode" \ 82*d780102eSjmmv "works" 83*d780102eSjmmv} 84*d780102eSjmmvquery_one_terse_body() 85*d780102eSjmmv{ 86*d780102eSjmmv for v in ${all_vars}; do 87*d780102eSjmmv atf_check -s eq:0 -o save:stdout -o match:"${v}" -e empty \ 88*d780102eSjmmv atf-config "${v}" 89*d780102eSjmmv atf_check -s eq:0 -o empty -e empty \ 90*d780102eSjmmv test "$(wc -l stdout | awk '{ print $1 }')" = 1 91*d780102eSjmmv atf_check -s eq:0 -o save:stdout -e empty cut -d ' ' -f 3- stdout 92*d780102eSjmmv atf_check -s eq:0 -o empty -e empty mv stdout expout 93*d780102eSjmmv atf_check -s eq:0 -o file:expout -e empty atf-config -t "${v}" 94*d780102eSjmmv done 95*d780102eSjmmv} 96*d780102eSjmmv 97*d780102eSjmmvatf_test_case query_multiple 98*d780102eSjmmvquery_multiple_head() 99*d780102eSjmmv{ 100*d780102eSjmmv atf_set "descr" "Tests that querying multiple variables works" 101*d780102eSjmmv} 102*d780102eSjmmvquery_multiple_body() 103*d780102eSjmmv{ 104*d780102eSjmmv atf_check -s eq:0 -o save:stdout -o match:'atf_libexecdir' \ 105*d780102eSjmmv -o match:'atf_shell' -e empty atf-config atf_libexecdir atf_shell 106*d780102eSjmmv atf_check -s eq:0 -o empty -e empty \ 107*d780102eSjmmv test "$(wc -l stdout | awk '{ print $1 }')" = 2 108*d780102eSjmmv} 109*d780102eSjmmv 110*d780102eSjmmvatf_test_case query_unknown 111*d780102eSjmmvquery_unknown_head() 112*d780102eSjmmv{ 113*d780102eSjmmv atf_set "descr" "Tests that querying an unknown variable delivers" \ 114*d780102eSjmmv "the correct error" 115*d780102eSjmmv} 116*d780102eSjmmvquery_unknown_body() 117*d780102eSjmmv{ 118*d780102eSjmmv atf_check -s eq:1 -o empty -e match:'Unknown variable.*non_existent' \ 119*d780102eSjmmv atf-config non_existent 120*d780102eSjmmv} 121*d780102eSjmmv 122*d780102eSjmmvatf_test_case query_mixture 123*d780102eSjmmvquery_mixture_head() 124*d780102eSjmmv{ 125*d780102eSjmmv atf_set "descr" "Tests that querying a known and an unknown variable" \ 126*d780102eSjmmv "delivers the correct error" 127*d780102eSjmmv} 128*d780102eSjmmvquery_mixture_body() 129*d780102eSjmmv{ 130*d780102eSjmmv for v in ${all_vars}; do 131*d780102eSjmmv atf_check -s eq:1 -o empty -e match:'Unknown variable.*non_existent' \ 132*d780102eSjmmv atf-config "${v}" non_existent 133*d780102eSjmmv atf_check -s eq:1 -o empty -e match:'Unknown variable.*non_existent' \ 134*d780102eSjmmv atf-config non_existent "${v}" 135*d780102eSjmmv done 136*d780102eSjmmv} 137*d780102eSjmmv 138*d780102eSjmmvatf_test_case override_env 139*d780102eSjmmvoverride_env_head() 140*d780102eSjmmv{ 141*d780102eSjmmv atf_set "descr" "Tests that build-time variables can be overriden" \ 142*d780102eSjmmv "through their corresponding environment variables" 143*d780102eSjmmv} 144*d780102eSjmmvoverride_env_body() 145*d780102eSjmmv{ 146*d780102eSjmmv for v in ${all_vars}; do 147*d780102eSjmmv V=$(echo ${v} | tr '[a-z]' '[A-Z]') 148*d780102eSjmmv atf_check -s eq:0 -o save:stdout -e empty -x "${V}=testval atf-config" 149*d780102eSjmmv atf_check -s eq:0 -o empty -e empty mv stdout all 150*d780102eSjmmv 151*d780102eSjmmv atf_check -s eq:0 -o save:stdout -e empty grep "^${v} : " all 152*d780102eSjmmv atf_check -s eq:0 -o empty -e empty mv stdout affected 153*d780102eSjmmv atf_check -s eq:0 -o save:stdout -e empty grep -v "^${v} : " all 154*d780102eSjmmv atf_check -s eq:0 -o empty -e empty mv stdout unaffected 155*d780102eSjmmv 156*d780102eSjmmv atf_check -s eq:0 -o empty -e empty \ 157*d780102eSjmmv test "$(wc -l affected | awk '{ print $1 }')" = 1 158*d780102eSjmmv atf_check -s eq:0 -o empty -e empty \ 159*d780102eSjmmv test "$(wc -l unaffected | awk '{ print $1 }')" = \ 160*d780102eSjmmv "$((${all_vars_no} -1))" 161*d780102eSjmmv 162*d780102eSjmmv atf_check -s eq:0 -o ignore -e empty grep "^${v} : testval$" affected 163*d780102eSjmmv atf_check -s eq:1 -o empty -e empty grep ' : testval$' unaffected 164*d780102eSjmmv done 165*d780102eSjmmv} 166*d780102eSjmmv 167*d780102eSjmmvatf_init_test_cases() 168*d780102eSjmmv{ 169*d780102eSjmmv atf_add_test_case list_all 170*d780102eSjmmv 171*d780102eSjmmv atf_add_test_case query_one 172*d780102eSjmmv atf_add_test_case query_one_terse 173*d780102eSjmmv atf_add_test_case query_multiple 174*d780102eSjmmv atf_add_test_case query_unknown 175*d780102eSjmmv atf_add_test_case query_mixture 176*d780102eSjmmv 177*d780102eSjmmv atf_add_test_case override_env 178*d780102eSjmmv} 179*d780102eSjmmv 180*d780102eSjmmv# vim: syntax=sh:expandtab:shiftwidth=4:softtabstop=4 181