1edebbb8eSjmmv# 2edebbb8eSjmmv# Automated Testing Framework (atf) 3edebbb8eSjmmv# 4*a551a20fSjmmv# Copyright (c) 2007 The NetBSD Foundation, Inc. 5edebbb8eSjmmv# All rights reserved. 6edebbb8eSjmmv# 7edebbb8eSjmmv# Redistribution and use in source and binary forms, with or without 8edebbb8eSjmmv# modification, are permitted provided that the following conditions 9edebbb8eSjmmv# are met: 10edebbb8eSjmmv# 1. Redistributions of source code must retain the above copyright 11edebbb8eSjmmv# notice, this list of conditions and the following disclaimer. 12edebbb8eSjmmv# 2. Redistributions in binary form must reproduce the above copyright 13edebbb8eSjmmv# notice, this list of conditions and the following disclaimer in the 14edebbb8eSjmmv# documentation and/or other materials provided with the distribution. 15edebbb8eSjmmv# 16edebbb8eSjmmv# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND 17edebbb8eSjmmv# CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, 18edebbb8eSjmmv# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 19edebbb8eSjmmv# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 20edebbb8eSjmmv# IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY 21edebbb8eSjmmv# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 22edebbb8eSjmmv# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 23edebbb8eSjmmv# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24edebbb8eSjmmv# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 25edebbb8eSjmmv# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 26edebbb8eSjmmv# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN 27edebbb8eSjmmv# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28edebbb8eSjmmv# 29edebbb8eSjmmv 30edebbb8eSjmmv# ------------------------------------------------------------------------- 31edebbb8eSjmmv# Helper tests for "t_cleanup". 32edebbb8eSjmmv# ------------------------------------------------------------------------- 33edebbb8eSjmmv 34edebbb8eSjmmvatf_test_case cleanup_pass cleanup 35edebbb8eSjmmvcleanup_pass_head() 36edebbb8eSjmmv{ 37edebbb8eSjmmv atf_set "descr" "Helper test case for the t_cleanup test program" 38edebbb8eSjmmv} 39edebbb8eSjmmvcleanup_pass_body() 40edebbb8eSjmmv{ 41edebbb8eSjmmv touch $(atf_config_get tmpfile) 42edebbb8eSjmmv} 43edebbb8eSjmmvcleanup_pass_cleanup() 44edebbb8eSjmmv{ 45edebbb8eSjmmv if [ $(atf_config_get cleanup no) = yes ]; then 46edebbb8eSjmmv rm $(atf_config_get tmpfile) 47edebbb8eSjmmv fi 48edebbb8eSjmmv} 49edebbb8eSjmmv 50edebbb8eSjmmvatf_test_case cleanup_fail cleanup 51edebbb8eSjmmvcleanup_fail_head() 52edebbb8eSjmmv{ 53edebbb8eSjmmv atf_set "descr" "Helper test case for the t_cleanup test program" 54edebbb8eSjmmv} 55edebbb8eSjmmvcleanup_fail_body() 56edebbb8eSjmmv{ 57edebbb8eSjmmv touch $(atf_config_get tmpfile) 58edebbb8eSjmmv atf_fail "On purpose" 59edebbb8eSjmmv} 60edebbb8eSjmmvcleanup_fail_cleanup() 61edebbb8eSjmmv{ 62edebbb8eSjmmv if [ $(atf_config_get cleanup no) = yes ]; then 63edebbb8eSjmmv rm $(atf_config_get tmpfile) 64edebbb8eSjmmv fi 65edebbb8eSjmmv} 66edebbb8eSjmmv 67edebbb8eSjmmvatf_test_case cleanup_skip cleanup 68edebbb8eSjmmvcleanup_skip_head() 69edebbb8eSjmmv{ 70edebbb8eSjmmv atf_set "descr" "Helper test case for the t_cleanup test program" 71edebbb8eSjmmv} 72edebbb8eSjmmvcleanup_skip_body() 73edebbb8eSjmmv{ 74edebbb8eSjmmv touch $(atf_config_get tmpfile) 75edebbb8eSjmmv atf_skip "On purpose" 76edebbb8eSjmmv} 77edebbb8eSjmmvcleanup_skip_cleanup() 78edebbb8eSjmmv{ 79edebbb8eSjmmv if [ $(atf_config_get cleanup no) = yes ]; then 80edebbb8eSjmmv rm $(atf_config_get tmpfile) 81edebbb8eSjmmv fi 82edebbb8eSjmmv} 83edebbb8eSjmmv 84edebbb8eSjmmvatf_test_case cleanup_curdir cleanup 85edebbb8eSjmmvcleanup_curdir_head() 86edebbb8eSjmmv{ 87edebbb8eSjmmv atf_set "descr" "Helper test case for the t_cleanup test program" 88edebbb8eSjmmv} 89edebbb8eSjmmvcleanup_curdir_body() 90edebbb8eSjmmv{ 91edebbb8eSjmmv echo 1234 >oldvalue 92edebbb8eSjmmv} 93edebbb8eSjmmvcleanup_curdir_cleanup() 94edebbb8eSjmmv{ 95edebbb8eSjmmv test -f oldvalue && echo "Old value: $(cat oldvalue)" 96edebbb8eSjmmv} 97edebbb8eSjmmv 98edebbb8eSjmmvatf_test_case cleanup_sigterm cleanup 99edebbb8eSjmmvcleanup_sigterm_head() 100edebbb8eSjmmv{ 101edebbb8eSjmmv atf_set "descr" "Helper test case for the t_cleanup test program" 102edebbb8eSjmmv} 103edebbb8eSjmmvcleanup_sigterm_body() 104edebbb8eSjmmv{ 105edebbb8eSjmmv touch $(atf_config_get tmpfile) 106edebbb8eSjmmv kill $$ 107edebbb8eSjmmv touch $(atf_config_get tmpfile).no 108edebbb8eSjmmv} 109edebbb8eSjmmvcleanup_sigterm_cleanup() 110edebbb8eSjmmv{ 111edebbb8eSjmmv rm $(atf_config_get tmpfile) 112edebbb8eSjmmv} 113edebbb8eSjmmv 114edebbb8eSjmmv# ------------------------------------------------------------------------- 115edebbb8eSjmmv# Helper tests for "t_config". 116edebbb8eSjmmv# ------------------------------------------------------------------------- 117edebbb8eSjmmv 118edebbb8eSjmmvatf_test_case config_unset 119edebbb8eSjmmvconfig_unset_head() 120edebbb8eSjmmv{ 121edebbb8eSjmmv atf_set "descr" "Helper test case for the t_config test program" 122edebbb8eSjmmv} 123edebbb8eSjmmvconfig_unset_body() 124edebbb8eSjmmv{ 125895f502bSjmmv if atf_config_has 'test'; then 126895f502bSjmmv atf_fail "Test variable already defined" 127895f502bSjmmv fi 128edebbb8eSjmmv} 129edebbb8eSjmmv 130edebbb8eSjmmvatf_test_case config_empty 131edebbb8eSjmmvconfig_empty_head() 132edebbb8eSjmmv{ 133edebbb8eSjmmv atf_set "descr" "Helper test case for the t_config test program" 134edebbb8eSjmmv} 135edebbb8eSjmmvconfig_empty_body() 136edebbb8eSjmmv{ 137edebbb8eSjmmv atf_check_equal "$(atf_config_get 'test')" "" 138edebbb8eSjmmv} 139edebbb8eSjmmv 140edebbb8eSjmmvatf_test_case config_value 141edebbb8eSjmmvconfig_value_head() 142edebbb8eSjmmv{ 143edebbb8eSjmmv atf_set "descr" "Helper test case for the t_config test program" 144edebbb8eSjmmv} 145edebbb8eSjmmvconfig_value_body() 146edebbb8eSjmmv{ 147edebbb8eSjmmv atf_check_equal "$(atf_config_get 'test')" "foo" 148edebbb8eSjmmv} 149edebbb8eSjmmv 150edebbb8eSjmmvatf_test_case config_multi_value 151edebbb8eSjmmvconfig_multi_value_head() 152edebbb8eSjmmv{ 153edebbb8eSjmmv atf_set "descr" "Helper test case for the t_config test program" 154edebbb8eSjmmv} 155edebbb8eSjmmvconfig_multi_value_body() 156edebbb8eSjmmv{ 157edebbb8eSjmmv atf_check_equal "$(atf_config_get 'test')" "foo bar" 158edebbb8eSjmmv} 159edebbb8eSjmmv 160edebbb8eSjmmv# ------------------------------------------------------------------------- 161edebbb8eSjmmv# Helper tests for "t_expect". 162edebbb8eSjmmv# ------------------------------------------------------------------------- 163edebbb8eSjmmv 164edebbb8eSjmmvatf_test_case expect_pass_and_pass 165edebbb8eSjmmvexpect_pass_and_pass_body() 166edebbb8eSjmmv{ 167edebbb8eSjmmv atf_expect_pass 168edebbb8eSjmmv} 169edebbb8eSjmmv 170edebbb8eSjmmvatf_test_case expect_pass_but_fail_requirement 171edebbb8eSjmmvexpect_pass_but_fail_requirement_body() 172edebbb8eSjmmv{ 173edebbb8eSjmmv atf_expect_pass 174edebbb8eSjmmv atf_fail "Some reason" 175edebbb8eSjmmv} 176edebbb8eSjmmv 177edebbb8eSjmmvatf_test_case expect_pass_but_fail_check 178edebbb8eSjmmvexpect_pass_but_fail_check_body() 179edebbb8eSjmmv{ 180edebbb8eSjmmv atf_fail "Non-fatal failures not implemented" 181edebbb8eSjmmv} 182edebbb8eSjmmv 183edebbb8eSjmmvatf_test_case expect_fail_and_fail_requirement 184edebbb8eSjmmvexpect_fail_and_fail_requirement_body() 185edebbb8eSjmmv{ 186edebbb8eSjmmv atf_expect_fail "Fail reason" 187edebbb8eSjmmv atf_fail "The failure" 188edebbb8eSjmmv atf_expect_pass 189edebbb8eSjmmv} 190edebbb8eSjmmv 191edebbb8eSjmmvatf_test_case expect_fail_and_fail_check 192edebbb8eSjmmvexpect_fail_and_fail_check_body() 193edebbb8eSjmmv{ 194edebbb8eSjmmv atf_fail "Non-fatal failures not implemented" 195edebbb8eSjmmv} 196edebbb8eSjmmv 197edebbb8eSjmmvatf_test_case expect_fail_but_pass 198edebbb8eSjmmvexpect_fail_but_pass_body() 199edebbb8eSjmmv{ 200edebbb8eSjmmv atf_expect_fail "Fail first" 201edebbb8eSjmmv atf_expect_pass 202edebbb8eSjmmv} 203edebbb8eSjmmv 204edebbb8eSjmmvatf_test_case expect_exit_any_and_exit 205edebbb8eSjmmvexpect_exit_any_and_exit_body() 206edebbb8eSjmmv{ 207edebbb8eSjmmv atf_expect_exit -1 "Call will exit" 208edebbb8eSjmmv exit 0 209edebbb8eSjmmv} 210edebbb8eSjmmv 211edebbb8eSjmmvatf_test_case expect_exit_code_and_exit 212edebbb8eSjmmvexpect_exit_code_and_exit_body() 213edebbb8eSjmmv{ 214edebbb8eSjmmv atf_expect_exit 123 "Call will exit" 215edebbb8eSjmmv exit 123 216edebbb8eSjmmv} 217edebbb8eSjmmv 218edebbb8eSjmmvatf_test_case expect_exit_but_pass 219edebbb8eSjmmvexpect_exit_but_pass_body() 220edebbb8eSjmmv{ 221edebbb8eSjmmv atf_expect_exit -1 "Call won't exit" 222edebbb8eSjmmv} 223edebbb8eSjmmv 224edebbb8eSjmmvatf_test_case expect_signal_any_and_signal 225edebbb8eSjmmvexpect_signal_any_and_signal_body() 226edebbb8eSjmmv{ 227edebbb8eSjmmv atf_expect_signal -1 "Call will signal" 228edebbb8eSjmmv kill -9 $$ 229edebbb8eSjmmv} 230edebbb8eSjmmv 231edebbb8eSjmmvatf_test_case expect_signal_no_and_signal 232edebbb8eSjmmvexpect_signal_no_and_signal_body() 233edebbb8eSjmmv{ 234edebbb8eSjmmv atf_expect_signal 1 "Call will signal" 235edebbb8eSjmmv kill -1 $$ 236edebbb8eSjmmv} 237edebbb8eSjmmv 238edebbb8eSjmmvatf_test_case expect_signal_but_pass 239edebbb8eSjmmvexpect_signal_but_pass_body() 240edebbb8eSjmmv{ 241edebbb8eSjmmv atf_expect_signal -1 "Call won't signal" 242edebbb8eSjmmv} 243edebbb8eSjmmv 244edebbb8eSjmmvatf_test_case expect_death_and_exit 245edebbb8eSjmmvexpect_death_and_exit_body() 246edebbb8eSjmmv{ 247edebbb8eSjmmv atf_expect_death "Exit case" 248edebbb8eSjmmv exit 123 249edebbb8eSjmmv} 250edebbb8eSjmmv 251edebbb8eSjmmvatf_test_case expect_death_and_signal 252edebbb8eSjmmvexpect_death_and_signal_body() 253edebbb8eSjmmv{ 254edebbb8eSjmmv atf_expect_death "Signal case" 255edebbb8eSjmmv kill -9 $$ 256edebbb8eSjmmv} 257edebbb8eSjmmv 258edebbb8eSjmmvatf_test_case expect_death_but_pass 259edebbb8eSjmmvexpect_death_but_pass_body() 260edebbb8eSjmmv{ 261edebbb8eSjmmv atf_expect_death "Call won't die" 262edebbb8eSjmmv} 263edebbb8eSjmmv 264edebbb8eSjmmvatf_test_case expect_timeout_and_hang 265edebbb8eSjmmvexpect_timeout_and_hang_head() 266edebbb8eSjmmv{ 267edebbb8eSjmmv atf_set "timeout" "1" 268edebbb8eSjmmv} 269edebbb8eSjmmvexpect_timeout_and_hang_body() 270edebbb8eSjmmv{ 271edebbb8eSjmmv atf_expect_timeout "Will overrun" 272edebbb8eSjmmv sleep 5 273edebbb8eSjmmv} 274edebbb8eSjmmv 275edebbb8eSjmmvatf_test_case expect_timeout_but_pass 276edebbb8eSjmmvexpect_timeout_but_pass_head() 277edebbb8eSjmmv{ 278edebbb8eSjmmv atf_set "timeout" "1" 279edebbb8eSjmmv} 280edebbb8eSjmmvexpect_timeout_but_pass_body() 281edebbb8eSjmmv{ 282edebbb8eSjmmv atf_expect_timeout "Will just exit" 283edebbb8eSjmmv} 284edebbb8eSjmmv 285edebbb8eSjmmv# ------------------------------------------------------------------------- 286edebbb8eSjmmv# Helper tests for "t_meta_data". 287edebbb8eSjmmv# ------------------------------------------------------------------------- 288edebbb8eSjmmv 289edebbb8eSjmmvatf_test_case metadata_no_descr 290edebbb8eSjmmvmetadata_no_descr_head() 291edebbb8eSjmmv{ 292edebbb8eSjmmv : 293edebbb8eSjmmv} 294edebbb8eSjmmvmetadata_no_descr_body() 295edebbb8eSjmmv{ 296edebbb8eSjmmv : 297edebbb8eSjmmv} 298edebbb8eSjmmv 299edebbb8eSjmmvatf_test_case metadata_no_head 300edebbb8eSjmmvmetadata_no_head_body() 301edebbb8eSjmmv{ 302edebbb8eSjmmv : 303edebbb8eSjmmv} 304edebbb8eSjmmv 305edebbb8eSjmmv# ------------------------------------------------------------------------- 306edebbb8eSjmmv# Helper tests for "t_srcdir". 307edebbb8eSjmmv# ------------------------------------------------------------------------- 308edebbb8eSjmmv 309edebbb8eSjmmvatf_test_case srcdir_exists 310edebbb8eSjmmvsrcdir_exists_head() 311edebbb8eSjmmv{ 312edebbb8eSjmmv atf_set "descr" "Helper test case for the t_srcdir test program" 313edebbb8eSjmmv} 314edebbb8eSjmmvsrcdir_exists_body() 315edebbb8eSjmmv{ 316edebbb8eSjmmv [ -f "$(atf_get_srcdir)/datafile" ] || atf_fail "Cannot find datafile" 317edebbb8eSjmmv} 318edebbb8eSjmmv 319edebbb8eSjmmv# ------------------------------------------------------------------------- 320edebbb8eSjmmv# Helper tests for "t_result". 321edebbb8eSjmmv# ------------------------------------------------------------------------- 322edebbb8eSjmmv 323edebbb8eSjmmvatf_test_case result_pass 324edebbb8eSjmmvresult_pass_body() 325edebbb8eSjmmv{ 326edebbb8eSjmmv echo "msg" 327edebbb8eSjmmv} 328edebbb8eSjmmv 329edebbb8eSjmmvatf_test_case result_fail 330edebbb8eSjmmvresult_fail_body() 331edebbb8eSjmmv{ 332edebbb8eSjmmv echo "msg" 333edebbb8eSjmmv atf_fail "Failure reason" 334edebbb8eSjmmv} 335edebbb8eSjmmv 336edebbb8eSjmmvatf_test_case result_skip 337edebbb8eSjmmvresult_skip_body() 338edebbb8eSjmmv{ 339edebbb8eSjmmv echo "msg" 340edebbb8eSjmmv atf_skip "Skipped reason" 341edebbb8eSjmmv} 342edebbb8eSjmmv 343edebbb8eSjmmv# ------------------------------------------------------------------------- 344edebbb8eSjmmv# Main. 345edebbb8eSjmmv# ------------------------------------------------------------------------- 346edebbb8eSjmmv 347edebbb8eSjmmvatf_init_test_cases() 348edebbb8eSjmmv{ 349edebbb8eSjmmv # Add helper tests for t_cleanup. 350edebbb8eSjmmv atf_add_test_case cleanup_pass 351edebbb8eSjmmv atf_add_test_case cleanup_fail 352edebbb8eSjmmv atf_add_test_case cleanup_skip 353edebbb8eSjmmv atf_add_test_case cleanup_curdir 354edebbb8eSjmmv atf_add_test_case cleanup_sigterm 355edebbb8eSjmmv 356edebbb8eSjmmv # Add helper tests for t_config. 357edebbb8eSjmmv atf_add_test_case config_unset 358edebbb8eSjmmv atf_add_test_case config_empty 359edebbb8eSjmmv atf_add_test_case config_value 360edebbb8eSjmmv atf_add_test_case config_multi_value 361edebbb8eSjmmv 362edebbb8eSjmmv # Add helper tests for t_expect. 363edebbb8eSjmmv atf_add_test_case expect_pass_and_pass 364edebbb8eSjmmv atf_add_test_case expect_pass_but_fail_requirement 365edebbb8eSjmmv atf_add_test_case expect_pass_but_fail_check 366edebbb8eSjmmv atf_add_test_case expect_fail_and_fail_requirement 367edebbb8eSjmmv atf_add_test_case expect_fail_and_fail_check 368edebbb8eSjmmv atf_add_test_case expect_fail_but_pass 369edebbb8eSjmmv atf_add_test_case expect_exit_any_and_exit 370edebbb8eSjmmv atf_add_test_case expect_exit_code_and_exit 371edebbb8eSjmmv atf_add_test_case expect_exit_but_pass 372edebbb8eSjmmv atf_add_test_case expect_signal_any_and_signal 373edebbb8eSjmmv atf_add_test_case expect_signal_no_and_signal 374edebbb8eSjmmv atf_add_test_case expect_signal_but_pass 375edebbb8eSjmmv atf_add_test_case expect_death_and_exit 376edebbb8eSjmmv atf_add_test_case expect_death_and_signal 377edebbb8eSjmmv atf_add_test_case expect_death_but_pass 378edebbb8eSjmmv atf_add_test_case expect_timeout_and_hang 379edebbb8eSjmmv atf_add_test_case expect_timeout_but_pass 380edebbb8eSjmmv 381edebbb8eSjmmv # Add helper tests for t_meta_data. 382edebbb8eSjmmv atf_add_test_case metadata_no_descr 383edebbb8eSjmmv atf_add_test_case metadata_no_head 384edebbb8eSjmmv 385edebbb8eSjmmv # Add helper tests for t_srcdir. 386edebbb8eSjmmv atf_add_test_case srcdir_exists 387edebbb8eSjmmv 388edebbb8eSjmmv # Add helper tests for t_result. 389edebbb8eSjmmv atf_add_test_case result_pass 390edebbb8eSjmmv atf_add_test_case result_fail 391edebbb8eSjmmv atf_add_test_case result_skip 392edebbb8eSjmmv} 393edebbb8eSjmmv 394edebbb8eSjmmv# vim: syntax=sh:expandtab:shiftwidth=4:softtabstop=4 395