sh_helpers.sh revision 240116
1240116Smarcel# 2240116Smarcel# Automated Testing Framework (atf) 3240116Smarcel# 4240116Smarcel# Copyright (c) 2007 The NetBSD Foundation, Inc. 5240116Smarcel# All rights reserved. 6240116Smarcel# 7240116Smarcel# Redistribution and use in source and binary forms, with or without 8240116Smarcel# modification, are permitted provided that the following conditions 9240116Smarcel# are met: 10240116Smarcel# 1. Redistributions of source code must retain the above copyright 11240116Smarcel# notice, this list of conditions and the following disclaimer. 12240116Smarcel# 2. Redistributions in binary form must reproduce the above copyright 13240116Smarcel# notice, this list of conditions and the following disclaimer in the 14240116Smarcel# documentation and/or other materials provided with the distribution. 15240116Smarcel# 16240116Smarcel# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND 17240116Smarcel# CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, 18240116Smarcel# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 19240116Smarcel# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 20240116Smarcel# IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY 21240116Smarcel# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 22240116Smarcel# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 23240116Smarcel# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24240116Smarcel# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 25240116Smarcel# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 26240116Smarcel# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN 27240116Smarcel# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28240116Smarcel# 29240116Smarcel 30240116Smarcel# ------------------------------------------------------------------------- 31240116Smarcel# Helper tests for "t_cleanup". 32240116Smarcel# ------------------------------------------------------------------------- 33240116Smarcel 34240116Smarcelatf_test_case cleanup_pass cleanup 35240116Smarcelcleanup_pass_head() 36240116Smarcel{ 37240116Smarcel atf_set "descr" "Helper test case for the t_cleanup test program" 38240116Smarcel} 39240116Smarcelcleanup_pass_body() 40240116Smarcel{ 41240116Smarcel touch $(atf_config_get tmpfile) 42240116Smarcel} 43240116Smarcelcleanup_pass_cleanup() 44240116Smarcel{ 45240116Smarcel if [ $(atf_config_get cleanup no) = yes ]; then 46240116Smarcel rm $(atf_config_get tmpfile) 47240116Smarcel fi 48240116Smarcel} 49240116Smarcel 50240116Smarcelatf_test_case cleanup_fail cleanup 51240116Smarcelcleanup_fail_head() 52240116Smarcel{ 53240116Smarcel atf_set "descr" "Helper test case for the t_cleanup test program" 54240116Smarcel} 55240116Smarcelcleanup_fail_body() 56240116Smarcel{ 57240116Smarcel touch $(atf_config_get tmpfile) 58240116Smarcel atf_fail "On purpose" 59240116Smarcel} 60240116Smarcelcleanup_fail_cleanup() 61240116Smarcel{ 62240116Smarcel if [ $(atf_config_get cleanup no) = yes ]; then 63240116Smarcel rm $(atf_config_get tmpfile) 64240116Smarcel fi 65240116Smarcel} 66240116Smarcel 67240116Smarcelatf_test_case cleanup_skip cleanup 68240116Smarcelcleanup_skip_head() 69240116Smarcel{ 70240116Smarcel atf_set "descr" "Helper test case for the t_cleanup test program" 71240116Smarcel} 72240116Smarcelcleanup_skip_body() 73240116Smarcel{ 74240116Smarcel touch $(atf_config_get tmpfile) 75240116Smarcel atf_skip "On purpose" 76240116Smarcel} 77240116Smarcelcleanup_skip_cleanup() 78240116Smarcel{ 79240116Smarcel if [ $(atf_config_get cleanup no) = yes ]; then 80240116Smarcel rm $(atf_config_get tmpfile) 81240116Smarcel fi 82240116Smarcel} 83240116Smarcel 84240116Smarcelatf_test_case cleanup_curdir cleanup 85240116Smarcelcleanup_curdir_head() 86240116Smarcel{ 87240116Smarcel atf_set "descr" "Helper test case for the t_cleanup test program" 88240116Smarcel} 89240116Smarcelcleanup_curdir_body() 90240116Smarcel{ 91240116Smarcel echo 1234 >oldvalue 92240116Smarcel} 93240116Smarcelcleanup_curdir_cleanup() 94240116Smarcel{ 95240116Smarcel test -f oldvalue && echo "Old value: $(cat oldvalue)" 96240116Smarcel} 97240116Smarcel 98240116Smarcelatf_test_case cleanup_sigterm cleanup 99240116Smarcelcleanup_sigterm_head() 100240116Smarcel{ 101240116Smarcel atf_set "descr" "Helper test case for the t_cleanup test program" 102240116Smarcel} 103240116Smarcelcleanup_sigterm_body() 104240116Smarcel{ 105240116Smarcel touch $(atf_config_get tmpfile) 106240116Smarcel kill $$ 107240116Smarcel touch $(atf_config_get tmpfile).no 108240116Smarcel} 109240116Smarcelcleanup_sigterm_cleanup() 110240116Smarcel{ 111240116Smarcel rm $(atf_config_get tmpfile) 112240116Smarcel} 113240116Smarcel 114240116Smarcelatf_test_case cleanup_fork cleanup 115240116Smarcelcleanup_fork_head() 116240116Smarcel{ 117240116Smarcel atf_set "descr" "Helper test case for the t_cleanup test program" 118240116Smarcel} 119240116Smarcelcleanup_fork_body() 120240116Smarcel{ 121240116Smarcel : 122240116Smarcel} 123240116Smarcelcleanup_fork_cleanup() 124240116Smarcel{ 125240116Smarcel exec 1>out 126240116Smarcel exec 2>err 127240116Smarcel exec 3>res 128240116Smarcel rm -f out err res 129240116Smarcel} 130240116Smarcel 131240116Smarcel# ------------------------------------------------------------------------- 132240116Smarcel# Helper tests for "t_config". 133240116Smarcel# ------------------------------------------------------------------------- 134240116Smarcel 135240116Smarcelatf_test_case config_unset 136240116Smarcelconfig_unset_head() 137240116Smarcel{ 138240116Smarcel atf_set "descr" "Helper test case for the t_config test program" 139240116Smarcel} 140240116Smarcelconfig_unset_body() 141240116Smarcel{ 142240116Smarcel if atf_config_has 'test'; then 143240116Smarcel atf_fail "Test variable already defined" 144240116Smarcel fi 145240116Smarcel} 146240116Smarcel 147240116Smarcelatf_test_case config_empty 148240116Smarcelconfig_empty_head() 149240116Smarcel{ 150240116Smarcel atf_set "descr" "Helper test case for the t_config test program" 151240116Smarcel} 152240116Smarcelconfig_empty_body() 153240116Smarcel{ 154240116Smarcel atf_check_equal "$(atf_config_get 'test')" "" 155240116Smarcel} 156240116Smarcel 157240116Smarcelatf_test_case config_value 158240116Smarcelconfig_value_head() 159240116Smarcel{ 160240116Smarcel atf_set "descr" "Helper test case for the t_config test program" 161240116Smarcel} 162240116Smarcelconfig_value_body() 163240116Smarcel{ 164240116Smarcel atf_check_equal "$(atf_config_get 'test')" "foo" 165240116Smarcel} 166240116Smarcel 167240116Smarcelatf_test_case config_multi_value 168240116Smarcelconfig_multi_value_head() 169240116Smarcel{ 170240116Smarcel atf_set "descr" "Helper test case for the t_config test program" 171240116Smarcel} 172240116Smarcelconfig_multi_value_body() 173240116Smarcel{ 174240116Smarcel atf_check_equal "$(atf_config_get 'test')" "foo bar" 175240116Smarcel} 176240116Smarcel 177240116Smarcel# ------------------------------------------------------------------------- 178240116Smarcel# Helper tests for "t_fork". 179240116Smarcel# ------------------------------------------------------------------------- 180240116Smarcel 181240116Smarcelatf_test_case fork_stop 182240116Smarcelfork_stop_head() 183240116Smarcel{ 184240116Smarcel atf_set "descr" "Helper test case for the t_fork test program" 185240116Smarcel} 186240116Smarcelfork_stop_body() 187240116Smarcel{ 188240116Smarcel echo ${$} >$(atf_config_get pidfile) 189240116Smarcel echo "Wrote pid file" 190240116Smarcel echo "Waiting for done file" 191240116Smarcel while ! test -f $(atf_config_get donefile); do sleep 1; done 192240116Smarcel echo "Exiting" 193240116Smarcel} 194240116Smarcel 195240116Smarcel# ------------------------------------------------------------------------- 196240116Smarcel# Helper tests for "t_expect". 197240116Smarcel# ------------------------------------------------------------------------- 198240116Smarcel 199240116Smarcelatf_test_case expect_pass_and_pass 200240116Smarcelexpect_pass_and_pass_body() 201240116Smarcel{ 202240116Smarcel atf_expect_pass 203240116Smarcel} 204240116Smarcel 205240116Smarcelatf_test_case expect_pass_but_fail_requirement 206240116Smarcelexpect_pass_but_fail_requirement_body() 207240116Smarcel{ 208240116Smarcel atf_expect_pass 209240116Smarcel atf_fail "Some reason" 210240116Smarcel} 211240116Smarcel 212240116Smarcelatf_test_case expect_pass_but_fail_check 213240116Smarcelexpect_pass_but_fail_check_body() 214240116Smarcel{ 215240116Smarcel atf_fail "Non-fatal failures not implemented" 216240116Smarcel} 217240116Smarcel 218240116Smarcelatf_test_case expect_fail_and_fail_requirement 219240116Smarcelexpect_fail_and_fail_requirement_body() 220240116Smarcel{ 221240116Smarcel atf_expect_fail "Fail reason" 222240116Smarcel atf_fail "The failure" 223240116Smarcel atf_expect_pass 224240116Smarcel} 225240116Smarcel 226240116Smarcelatf_test_case expect_fail_and_fail_check 227240116Smarcelexpect_fail_and_fail_check_body() 228240116Smarcel{ 229240116Smarcel atf_fail "Non-fatal failures not implemented" 230240116Smarcel} 231240116Smarcel 232240116Smarcelatf_test_case expect_fail_but_pass 233240116Smarcelexpect_fail_but_pass_body() 234240116Smarcel{ 235240116Smarcel atf_expect_fail "Fail first" 236240116Smarcel atf_expect_pass 237240116Smarcel} 238240116Smarcel 239240116Smarcelatf_test_case expect_exit_any_and_exit 240240116Smarcelexpect_exit_any_and_exit_body() 241240116Smarcel{ 242240116Smarcel atf_expect_exit -1 "Call will exit" 243240116Smarcel exit 0 244240116Smarcel} 245240116Smarcel 246240116Smarcelatf_test_case expect_exit_code_and_exit 247240116Smarcelexpect_exit_code_and_exit_body() 248240116Smarcel{ 249240116Smarcel atf_expect_exit 123 "Call will exit" 250240116Smarcel exit 123 251240116Smarcel} 252240116Smarcel 253240116Smarcelatf_test_case expect_exit_but_pass 254240116Smarcelexpect_exit_but_pass_body() 255240116Smarcel{ 256240116Smarcel atf_expect_exit -1 "Call won't exit" 257240116Smarcel} 258240116Smarcel 259240116Smarcelatf_test_case expect_signal_any_and_signal 260240116Smarcelexpect_signal_any_and_signal_body() 261240116Smarcel{ 262240116Smarcel atf_expect_signal -1 "Call will signal" 263240116Smarcel kill -9 $$ 264240116Smarcel} 265240116Smarcel 266240116Smarcelatf_test_case expect_signal_no_and_signal 267240116Smarcelexpect_signal_no_and_signal_body() 268240116Smarcel{ 269240116Smarcel atf_expect_signal 1 "Call will signal" 270240116Smarcel kill -1 $$ 271240116Smarcel} 272240116Smarcel 273240116Smarcelatf_test_case expect_signal_but_pass 274240116Smarcelexpect_signal_but_pass_body() 275240116Smarcel{ 276240116Smarcel atf_expect_signal -1 "Call won't signal" 277240116Smarcel} 278240116Smarcel 279240116Smarcelatf_test_case expect_death_and_exit 280240116Smarcelexpect_death_and_exit_body() 281240116Smarcel{ 282240116Smarcel atf_expect_death "Exit case" 283240116Smarcel exit 123 284240116Smarcel} 285240116Smarcel 286240116Smarcelatf_test_case expect_death_and_signal 287240116Smarcelexpect_death_and_signal_body() 288240116Smarcel{ 289240116Smarcel atf_expect_death "Signal case" 290240116Smarcel kill -9 $$ 291240116Smarcel} 292240116Smarcel 293240116Smarcelatf_test_case expect_death_but_pass 294240116Smarcelexpect_death_but_pass_body() 295240116Smarcel{ 296240116Smarcel atf_expect_death "Call won't die" 297240116Smarcel} 298240116Smarcel 299240116Smarcelatf_test_case expect_timeout_and_hang 300240116Smarcelexpect_timeout_and_hang_head() 301240116Smarcel{ 302240116Smarcel atf_set "timeout" "1" 303240116Smarcel} 304240116Smarcelexpect_timeout_and_hang_body() 305240116Smarcel{ 306240116Smarcel atf_expect_timeout "Will overrun" 307240116Smarcel sleep 5 308240116Smarcel} 309240116Smarcel 310240116Smarcelatf_test_case expect_timeout_but_pass 311240116Smarcelexpect_timeout_but_pass_head() 312240116Smarcel{ 313240116Smarcel atf_set "timeout" "1" 314240116Smarcel} 315240116Smarcelexpect_timeout_but_pass_body() 316240116Smarcel{ 317240116Smarcel atf_expect_timeout "Will just exit" 318240116Smarcel} 319240116Smarcel 320240116Smarcel# ------------------------------------------------------------------------- 321240116Smarcel# Helper tests for "t_meta_data". 322240116Smarcel# ------------------------------------------------------------------------- 323240116Smarcel 324240116Smarcelatf_test_case metadata_no_descr 325240116Smarcelmetadata_no_descr_head() 326240116Smarcel{ 327240116Smarcel : 328240116Smarcel} 329240116Smarcelmetadata_no_descr_body() 330240116Smarcel{ 331240116Smarcel : 332240116Smarcel} 333240116Smarcel 334240116Smarcelatf_test_case metadata_no_head 335240116Smarcelmetadata_no_head_body() 336240116Smarcel{ 337240116Smarcel : 338240116Smarcel} 339240116Smarcel 340240116Smarcel# ------------------------------------------------------------------------- 341240116Smarcel# Helper tests for "t_srcdir". 342240116Smarcel# ------------------------------------------------------------------------- 343240116Smarcel 344240116Smarcelatf_test_case srcdir_exists 345240116Smarcelsrcdir_exists_head() 346240116Smarcel{ 347240116Smarcel atf_set "descr" "Helper test case for the t_srcdir test program" 348240116Smarcel} 349240116Smarcelsrcdir_exists_body() 350240116Smarcel{ 351240116Smarcel [ -f "$(atf_get_srcdir)/datafile" ] || atf_fail "Cannot find datafile" 352240116Smarcel} 353240116Smarcel 354240116Smarcel# ------------------------------------------------------------------------- 355240116Smarcel# Helper tests for "t_result". 356240116Smarcel# ------------------------------------------------------------------------- 357240116Smarcel 358240116Smarcelatf_test_case result_pass 359240116Smarcelresult_pass_body() 360240116Smarcel{ 361240116Smarcel echo "msg" 362240116Smarcel} 363240116Smarcel 364240116Smarcelatf_test_case result_fail 365240116Smarcelresult_fail_body() 366240116Smarcel{ 367240116Smarcel echo "msg" 368240116Smarcel atf_fail "Failure reason" 369240116Smarcel} 370240116Smarcel 371240116Smarcelatf_test_case result_skip 372240116Smarcelresult_skip_body() 373240116Smarcel{ 374240116Smarcel echo "msg" 375240116Smarcel atf_skip "Skipped reason" 376240116Smarcel} 377240116Smarcel 378240116Smarcel# ------------------------------------------------------------------------- 379240116Smarcel# Main. 380240116Smarcel# ------------------------------------------------------------------------- 381240116Smarcel 382240116Smarcelatf_init_test_cases() 383240116Smarcel{ 384240116Smarcel # Add helper tests for t_cleanup. 385240116Smarcel atf_add_test_case cleanup_pass 386240116Smarcel atf_add_test_case cleanup_fail 387240116Smarcel atf_add_test_case cleanup_skip 388240116Smarcel atf_add_test_case cleanup_curdir 389240116Smarcel atf_add_test_case cleanup_sigterm 390240116Smarcel atf_add_test_case cleanup_fork 391240116Smarcel 392240116Smarcel # Add helper tests for t_config. 393240116Smarcel atf_add_test_case config_unset 394240116Smarcel atf_add_test_case config_empty 395240116Smarcel atf_add_test_case config_value 396240116Smarcel atf_add_test_case config_multi_value 397240116Smarcel 398240116Smarcel # Add helper tests for t_expect. 399240116Smarcel atf_add_test_case expect_pass_and_pass 400240116Smarcel atf_add_test_case expect_pass_but_fail_requirement 401240116Smarcel atf_add_test_case expect_pass_but_fail_check 402240116Smarcel atf_add_test_case expect_fail_and_fail_requirement 403240116Smarcel atf_add_test_case expect_fail_and_fail_check 404240116Smarcel atf_add_test_case expect_fail_but_pass 405240116Smarcel atf_add_test_case expect_exit_any_and_exit 406240116Smarcel atf_add_test_case expect_exit_code_and_exit 407240116Smarcel atf_add_test_case expect_exit_but_pass 408240116Smarcel atf_add_test_case expect_signal_any_and_signal 409240116Smarcel atf_add_test_case expect_signal_no_and_signal 410240116Smarcel atf_add_test_case expect_signal_but_pass 411240116Smarcel atf_add_test_case expect_death_and_exit 412240116Smarcel atf_add_test_case expect_death_and_signal 413240116Smarcel atf_add_test_case expect_death_but_pass 414240116Smarcel atf_add_test_case expect_timeout_and_hang 415240116Smarcel atf_add_test_case expect_timeout_but_pass 416240116Smarcel 417240116Smarcel # Add helper tests for t_fork. 418240116Smarcel atf_add_test_case fork_stop 419240116Smarcel 420240116Smarcel # Add helper tests for t_meta_data. 421240116Smarcel atf_add_test_case metadata_no_descr 422240116Smarcel atf_add_test_case metadata_no_head 423240116Smarcel 424240116Smarcel # Add helper tests for t_srcdir. 425240116Smarcel atf_add_test_case srcdir_exists 426240116Smarcel 427240116Smarcel # Add helper tests for t_result. 428240116Smarcel atf_add_test_case result_pass 429240116Smarcel atf_add_test_case result_fail 430240116Smarcel atf_add_test_case result_skip 431240116Smarcel} 432240116Smarcel 433240116Smarcel# vim: syntax=sh:expandtab:shiftwidth=4:softtabstop=4 434