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 Moolenbroek# ------------------------------------------------------------------------- 31*00b67f09SDavid van Moolenbroek# Helper tests for "t_atf_check". 32*00b67f09SDavid van Moolenbroek# ------------------------------------------------------------------------- 33*00b67f09SDavid van Moolenbroek 34*00b67f09SDavid van Moolenbroekatf_test_case atf_check_info_ok 35*00b67f09SDavid van Moolenbroekatf_check_info_ok_head() 36*00b67f09SDavid van Moolenbroek{ 37*00b67f09SDavid van Moolenbroek atf_set "descr" "Helper test case for the t_atf_check test program" 38*00b67f09SDavid van Moolenbroek} 39*00b67f09SDavid van Moolenbroekatf_check_info_ok_body() 40*00b67f09SDavid van Moolenbroek{ 41*00b67f09SDavid van Moolenbroek atf_check -s eq:0 -o empty -e empty true 42*00b67f09SDavid van Moolenbroek} 43*00b67f09SDavid van Moolenbroek 44*00b67f09SDavid van Moolenbroekatf_test_case atf_check_info_fail 45*00b67f09SDavid van Moolenbroekatf_check_info_fail_head() 46*00b67f09SDavid van Moolenbroek{ 47*00b67f09SDavid van Moolenbroek atf_set "descr" "Helper test case for the t_atf_check test program" 48*00b67f09SDavid van Moolenbroek} 49*00b67f09SDavid van Moolenbroekatf_check_info_fail_body() 50*00b67f09SDavid van Moolenbroek{ 51*00b67f09SDavid van Moolenbroek # In Solaris, /usr/bin/false returns 255 rather than 1. Use the 52*00b67f09SDavid van Moolenbroek # built-in version for the check. 53*00b67f09SDavid van Moolenbroek atf_check -s eq:1 -o empty -e empty sh -c "false" 54*00b67f09SDavid van Moolenbroek} 55*00b67f09SDavid van Moolenbroek 56*00b67f09SDavid van Moolenbroekatf_test_case atf_check_expout_mismatch 57*00b67f09SDavid van Moolenbroekatf_check_expout_mismatch_head() 58*00b67f09SDavid van Moolenbroek{ 59*00b67f09SDavid van Moolenbroek atf_set "descr" "Helper test case for the t_atf_check test program" 60*00b67f09SDavid van Moolenbroek} 61*00b67f09SDavid van Moolenbroekatf_check_expout_mismatch_body() 62*00b67f09SDavid van Moolenbroek{ 63*00b67f09SDavid van Moolenbroek cat >expout <<SECONDEOF 64*00b67f09SDavid van Moolenbroekfoo 65*00b67f09SDavid van MoolenbroekSECONDEOF 66*00b67f09SDavid van Moolenbroek atf_check -s eq:0 -o file:expout -e empty echo bar 67*00b67f09SDavid van Moolenbroek} 68*00b67f09SDavid van Moolenbroek 69*00b67f09SDavid van Moolenbroekatf_test_case atf_check_experr_mismatch 70*00b67f09SDavid van Moolenbroekatf_check_experr_mismatch_head() 71*00b67f09SDavid van Moolenbroek{ 72*00b67f09SDavid van Moolenbroek atf_set "descr" "Helper test case for the t_atf_check test program" 73*00b67f09SDavid van Moolenbroek} 74*00b67f09SDavid van Moolenbroekatf_check_experr_mismatch_body() 75*00b67f09SDavid van Moolenbroek{ 76*00b67f09SDavid van Moolenbroek cat >experr <<SECONDEOF 77*00b67f09SDavid van Moolenbroekfoo 78*00b67f09SDavid van MoolenbroekSECONDEOF 79*00b67f09SDavid van Moolenbroek atf_check -s eq:0 -o empty -e file:experr -x 'echo bar 1>&2' 80*00b67f09SDavid van Moolenbroek} 81*00b67f09SDavid van Moolenbroek 82*00b67f09SDavid van Moolenbroekatf_test_case atf_check_null_stdout 83*00b67f09SDavid van Moolenbroekatf_check_null_stdout_head() 84*00b67f09SDavid van Moolenbroek{ 85*00b67f09SDavid van Moolenbroek atf_set "descr" "Helper test case for the t_atf_check test program" 86*00b67f09SDavid van Moolenbroek} 87*00b67f09SDavid van Moolenbroekatf_check_null_stdout_body() 88*00b67f09SDavid van Moolenbroek{ 89*00b67f09SDavid van Moolenbroek atf_check -s eq:0 -o empty -e empty echo "These are the contents" 90*00b67f09SDavid van Moolenbroek} 91*00b67f09SDavid van Moolenbroek 92*00b67f09SDavid van Moolenbroekatf_test_case atf_check_null_stderr 93*00b67f09SDavid van Moolenbroekatf_check_null_stderr_head() 94*00b67f09SDavid van Moolenbroek{ 95*00b67f09SDavid van Moolenbroek atf_set "descr" "Helper test case for the t_atf_check test program" 96*00b67f09SDavid van Moolenbroek} 97*00b67f09SDavid van Moolenbroekatf_check_null_stderr_body() 98*00b67f09SDavid van Moolenbroek{ 99*00b67f09SDavid van Moolenbroek atf_check -s eq:0 -o empty -e empty -x 'echo "These are the contents" 1>&2' 100*00b67f09SDavid van Moolenbroek} 101*00b67f09SDavid van Moolenbroek 102*00b67f09SDavid van Moolenbroekatf_test_case atf_check_equal_ok 103*00b67f09SDavid van Moolenbroekatf_check_equal_ok_head() 104*00b67f09SDavid van Moolenbroek{ 105*00b67f09SDavid van Moolenbroek atf_set "descr" "Helper test case for the t_atf_check test program" 106*00b67f09SDavid van Moolenbroek} 107*00b67f09SDavid van Moolenbroekatf_check_equal_ok_body() 108*00b67f09SDavid van Moolenbroek{ 109*00b67f09SDavid van Moolenbroek atf_check_equal a a 110*00b67f09SDavid van Moolenbroek} 111*00b67f09SDavid van Moolenbroek 112*00b67f09SDavid van Moolenbroekatf_test_case atf_check_equal_fail 113*00b67f09SDavid van Moolenbroekatf_check_equal_fail_head() 114*00b67f09SDavid van Moolenbroek{ 115*00b67f09SDavid van Moolenbroek atf_set "descr" "Helper test case for the t_atf_check test program" 116*00b67f09SDavid van Moolenbroek} 117*00b67f09SDavid van Moolenbroekatf_check_equal_fail_body() 118*00b67f09SDavid van Moolenbroek{ 119*00b67f09SDavid van Moolenbroek atf_check_equal a b 120*00b67f09SDavid van Moolenbroek} 121*00b67f09SDavid van Moolenbroek 122*00b67f09SDavid van Moolenbroekatf_test_case atf_check_equal_eval_ok 123*00b67f09SDavid van Moolenbroekatf_check_equal_eval_ok_head() 124*00b67f09SDavid van Moolenbroek{ 125*00b67f09SDavid van Moolenbroek atf_set "descr" "Helper test case for the t_atf_check test program" 126*00b67f09SDavid van Moolenbroek} 127*00b67f09SDavid van Moolenbroekatf_check_equal_eval_ok_body() 128*00b67f09SDavid van Moolenbroek{ 129*00b67f09SDavid van Moolenbroek x=a 130*00b67f09SDavid van Moolenbroek y=a 131*00b67f09SDavid van Moolenbroek atf_check_equal '${x}' '${y}' 132*00b67f09SDavid van Moolenbroek} 133*00b67f09SDavid van Moolenbroek 134*00b67f09SDavid van Moolenbroekatf_test_case atf_check_equal_eval_fail 135*00b67f09SDavid van Moolenbroekatf_check_equal_eval_fail_head() 136*00b67f09SDavid van Moolenbroek{ 137*00b67f09SDavid van Moolenbroek atf_set "descr" "Helper test case for the t_atf_check test program" 138*00b67f09SDavid van Moolenbroek} 139*00b67f09SDavid van Moolenbroekatf_check_equal_eval_fail_body() 140*00b67f09SDavid van Moolenbroek{ 141*00b67f09SDavid van Moolenbroek x=a 142*00b67f09SDavid van Moolenbroek y=b 143*00b67f09SDavid van Moolenbroek atf_check_equal '${x}' '${y}' 144*00b67f09SDavid van Moolenbroek} 145*00b67f09SDavid van Moolenbroek 146*00b67f09SDavid van Moolenbroek# ------------------------------------------------------------------------- 147*00b67f09SDavid van Moolenbroek# Helper tests for "t_config". 148*00b67f09SDavid van Moolenbroek# ------------------------------------------------------------------------- 149*00b67f09SDavid van Moolenbroek 150*00b67f09SDavid van Moolenbroekatf_test_case config_get 151*00b67f09SDavid van Moolenbroekconfig_get_head() 152*00b67f09SDavid van Moolenbroek{ 153*00b67f09SDavid van Moolenbroek atf_set "descr" "Helper test case for the t_config test program" 154*00b67f09SDavid van Moolenbroek} 155*00b67f09SDavid van Moolenbroekconfig_get_body() 156*00b67f09SDavid van Moolenbroek{ 157*00b67f09SDavid van Moolenbroek if atf_config_has ${TEST_VARIABLE}; then 158*00b67f09SDavid van Moolenbroek echo "${TEST_VARIABLE} = $(atf_config_get ${TEST_VARIABLE})" 159*00b67f09SDavid van Moolenbroek fi 160*00b67f09SDavid van Moolenbroek} 161*00b67f09SDavid van Moolenbroek 162*00b67f09SDavid van Moolenbroekatf_test_case config_has 163*00b67f09SDavid van Moolenbroekconfig_has_head() 164*00b67f09SDavid van Moolenbroek{ 165*00b67f09SDavid van Moolenbroek atf_set "descr" "Helper test case for the t_config test program" 166*00b67f09SDavid van Moolenbroek} 167*00b67f09SDavid van Moolenbroekconfig_has_body() 168*00b67f09SDavid van Moolenbroek{ 169*00b67f09SDavid van Moolenbroek if atf_config_has ${TEST_VARIABLE}; then 170*00b67f09SDavid van Moolenbroek echo "${TEST_VARIABLE} found" 171*00b67f09SDavid van Moolenbroek else 172*00b67f09SDavid van Moolenbroek echo "${TEST_VARIABLE} not found" 173*00b67f09SDavid van Moolenbroek fi 174*00b67f09SDavid van Moolenbroek} 175*00b67f09SDavid van Moolenbroek 176*00b67f09SDavid van Moolenbroek# ------------------------------------------------------------------------- 177*00b67f09SDavid van Moolenbroek# Helper tests for "t_normalize". 178*00b67f09SDavid van Moolenbroek# ------------------------------------------------------------------------- 179*00b67f09SDavid van Moolenbroek 180*00b67f09SDavid van Moolenbroekatf_test_case normalize 181*00b67f09SDavid van Moolenbroeknormalize_head() 182*00b67f09SDavid van Moolenbroek{ 183*00b67f09SDavid van Moolenbroek atf_set "descr" "Helper test case for the t_normalize test program" 184*00b67f09SDavid van Moolenbroek atf_set "a.b" "test value 1" 185*00b67f09SDavid van Moolenbroek atf_set "c-d" "test value 2" 186*00b67f09SDavid van Moolenbroek} 187*00b67f09SDavid van Moolenbroeknormalize_body() 188*00b67f09SDavid van Moolenbroek{ 189*00b67f09SDavid van Moolenbroek echo "a.b: $(atf_get a.b)" 190*00b67f09SDavid van Moolenbroek echo "c-d: $(atf_get c-d)" 191*00b67f09SDavid van Moolenbroek} 192*00b67f09SDavid van Moolenbroek 193*00b67f09SDavid van Moolenbroek# ------------------------------------------------------------------------- 194*00b67f09SDavid van Moolenbroek# Helper tests for "t_tc". 195*00b67f09SDavid van Moolenbroek# ------------------------------------------------------------------------- 196*00b67f09SDavid van Moolenbroek 197*00b67f09SDavid van Moolenbroekatf_test_case tc_pass_true 198*00b67f09SDavid van Moolenbroektc_pass_true_head() 199*00b67f09SDavid van Moolenbroek{ 200*00b67f09SDavid van Moolenbroek atf_set "descr" "Helper test case for the t_tc test program" 201*00b67f09SDavid van Moolenbroek} 202*00b67f09SDavid van Moolenbroektc_pass_true_body() 203*00b67f09SDavid van Moolenbroek{ 204*00b67f09SDavid van Moolenbroek true 205*00b67f09SDavid van Moolenbroek} 206*00b67f09SDavid van Moolenbroek 207*00b67f09SDavid van Moolenbroekatf_test_case tc_pass_false 208*00b67f09SDavid van Moolenbroektc_pass_false_head() 209*00b67f09SDavid van Moolenbroek{ 210*00b67f09SDavid van Moolenbroek atf_set "descr" "Helper test case for the t_tc test program" 211*00b67f09SDavid van Moolenbroek} 212*00b67f09SDavid van Moolenbroektc_pass_false_body() 213*00b67f09SDavid van Moolenbroek{ 214*00b67f09SDavid van Moolenbroek false 215*00b67f09SDavid van Moolenbroek} 216*00b67f09SDavid van Moolenbroek 217*00b67f09SDavid van Moolenbroekatf_test_case tc_pass_return_error 218*00b67f09SDavid van Moolenbroektc_pass_return_error_head() 219*00b67f09SDavid van Moolenbroek{ 220*00b67f09SDavid van Moolenbroek atf_set "descr" "Helper test case for the t_tc test program" 221*00b67f09SDavid van Moolenbroek} 222*00b67f09SDavid van Moolenbroektc_pass_return_error_body() 223*00b67f09SDavid van Moolenbroek{ 224*00b67f09SDavid van Moolenbroek return 1 225*00b67f09SDavid van Moolenbroek} 226*00b67f09SDavid van Moolenbroek 227*00b67f09SDavid van Moolenbroekatf_test_case tc_fail 228*00b67f09SDavid van Moolenbroektc_fail_head() 229*00b67f09SDavid van Moolenbroek{ 230*00b67f09SDavid van Moolenbroek atf_set "descr" "Helper test case for the t_tc test program" 231*00b67f09SDavid van Moolenbroek} 232*00b67f09SDavid van Moolenbroektc_fail_body() 233*00b67f09SDavid van Moolenbroek{ 234*00b67f09SDavid van Moolenbroek echo "An error" 1>&2 235*00b67f09SDavid van Moolenbroek exit 1 236*00b67f09SDavid van Moolenbroek} 237*00b67f09SDavid van Moolenbroek 238*00b67f09SDavid van Moolenbroekatf_test_case tc_missing_body 239*00b67f09SDavid van Moolenbroektc_missing_body_head() 240*00b67f09SDavid van Moolenbroek{ 241*00b67f09SDavid van Moolenbroek atf_set "descr" "Helper test case for the t_tc test program" 242*00b67f09SDavid van Moolenbroek} 243*00b67f09SDavid van Moolenbroek 244*00b67f09SDavid van Moolenbroek# ------------------------------------------------------------------------- 245*00b67f09SDavid van Moolenbroek# Helper tests for "t_tp". 246*00b67f09SDavid van Moolenbroek# ------------------------------------------------------------------------- 247*00b67f09SDavid van Moolenbroek 248*00b67f09SDavid van Moolenbroekatf_test_case tp_srcdir 249*00b67f09SDavid van Moolenbroektp_srcdir_head() 250*00b67f09SDavid van Moolenbroek{ 251*00b67f09SDavid van Moolenbroek atf_set "descr" "Helper test case for the t_tp test program" 252*00b67f09SDavid van Moolenbroek} 253*00b67f09SDavid van Moolenbroektp_srcdir_body() 254*00b67f09SDavid van Moolenbroek{ 255*00b67f09SDavid van Moolenbroek echo "Calling helper" 256*00b67f09SDavid van Moolenbroek helper_subr || atf_fail "Could not call helper subroutine" 257*00b67f09SDavid van Moolenbroek} 258*00b67f09SDavid van Moolenbroek 259*00b67f09SDavid van Moolenbroek# ------------------------------------------------------------------------- 260*00b67f09SDavid van Moolenbroek# Main. 261*00b67f09SDavid van Moolenbroek# ------------------------------------------------------------------------- 262*00b67f09SDavid van Moolenbroek 263*00b67f09SDavid van Moolenbroekatf_init_test_cases() 264*00b67f09SDavid van Moolenbroek{ 265*00b67f09SDavid van Moolenbroek # Add helper tests for t_atf_check. 266*00b67f09SDavid van Moolenbroek atf_add_test_case atf_check_info_ok 267*00b67f09SDavid van Moolenbroek atf_add_test_case atf_check_info_fail 268*00b67f09SDavid van Moolenbroek atf_add_test_case atf_check_expout_mismatch 269*00b67f09SDavid van Moolenbroek atf_add_test_case atf_check_experr_mismatch 270*00b67f09SDavid van Moolenbroek atf_add_test_case atf_check_null_stdout 271*00b67f09SDavid van Moolenbroek atf_add_test_case atf_check_null_stderr 272*00b67f09SDavid van Moolenbroek atf_add_test_case atf_check_equal_ok 273*00b67f09SDavid van Moolenbroek atf_add_test_case atf_check_equal_fail 274*00b67f09SDavid van Moolenbroek atf_add_test_case atf_check_equal_eval_ok 275*00b67f09SDavid van Moolenbroek atf_add_test_case atf_check_equal_eval_fail 276*00b67f09SDavid van Moolenbroek 277*00b67f09SDavid van Moolenbroek # Add helper tests for t_config. 278*00b67f09SDavid van Moolenbroek atf_add_test_case config_get 279*00b67f09SDavid van Moolenbroek atf_add_test_case config_has 280*00b67f09SDavid van Moolenbroek 281*00b67f09SDavid van Moolenbroek # Add helper tests for t_normalize. 282*00b67f09SDavid van Moolenbroek atf_add_test_case normalize 283*00b67f09SDavid van Moolenbroek 284*00b67f09SDavid van Moolenbroek # Add helper tests for t_tc. 285*00b67f09SDavid van Moolenbroek atf_add_test_case tc_pass_true 286*00b67f09SDavid van Moolenbroek atf_add_test_case tc_pass_false 287*00b67f09SDavid van Moolenbroek atf_add_test_case tc_pass_return_error 288*00b67f09SDavid van Moolenbroek atf_add_test_case tc_fail 289*00b67f09SDavid van Moolenbroek atf_add_test_case tc_missing_body 290*00b67f09SDavid van Moolenbroek 291*00b67f09SDavid van Moolenbroek # Add helper tests for t_tp. 292*00b67f09SDavid van Moolenbroek [ -f $(atf_get_srcdir)/subrs ] && . $(atf_get_srcdir)/subrs 293*00b67f09SDavid van Moolenbroek atf_add_test_case tp_srcdir 294*00b67f09SDavid van Moolenbroek} 295*00b67f09SDavid van Moolenbroek 296*00b67f09SDavid van Moolenbroek# vim: syntax=sh:expandtab:shiftwidth=4:softtabstop=4 297