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