1240116Smarcel# Copyright (c) 2007 The NetBSD Foundation, Inc. 2240116Smarcel# All rights reserved. 3240116Smarcel# 4240116Smarcel# Redistribution and use in source and binary forms, with or without 5240116Smarcel# modification, are permitted provided that the following conditions 6240116Smarcel# are met: 7240116Smarcel# 1. Redistributions of source code must retain the above copyright 8240116Smarcel# notice, this list of conditions and the following disclaimer. 9240116Smarcel# 2. Redistributions in binary form must reproduce the above copyright 10240116Smarcel# notice, this list of conditions and the following disclaimer in the 11240116Smarcel# documentation and/or other materials provided with the distribution. 12240116Smarcel# 13240116Smarcel# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND 14240116Smarcel# CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, 15240116Smarcel# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 16240116Smarcel# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 17240116Smarcel# IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY 18240116Smarcel# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19240116Smarcel# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 20240116Smarcel# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 21240116Smarcel# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 22240116Smarcel# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 23240116Smarcel# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN 24240116Smarcel# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25240116Smarcel 26240116Smarcelcheck_result() { 27240116Smarcel file="${1}"; shift 28240116Smarcel 29240116Smarcel atf_check -s eq:0 -o match:"${*}" -e empty cat "${file}" 30240116Smarcel rm "${file}" 31240116Smarcel} 32240116Smarcel 33240116Smarcelatf_test_case expect_pass 34240116Smarcelexpect_pass_body() { 35240116Smarcel for h in $(get_helpers); do 36240116Smarcel atf_check -s eq:0 -e ignore "${h}" -r result expect_pass_and_pass 37240116Smarcel check_result result "passed" 38240116Smarcel 39240116Smarcel atf_check -s eq:1 -e ignore "${h}" -r result \ 40240116Smarcel expect_pass_but_fail_requirement 41240116Smarcel check_result result "failed: Some reason" 42240116Smarcel 43240116Smarcel # atf-sh does not support non-fatal failures yet; skip checks for 44240116Smarcel # such conditions. 45240116Smarcel case "${h}" in *sh_helpers*) continue ;; esac 46240116Smarcel 47240116Smarcel atf_check -s eq:1 -o empty -e match:"Some reason" \ 48240116Smarcel "${h}" -r result expect_pass_but_fail_check 49240116Smarcel check_result result "failed: 1 checks failed" 50240116Smarcel done 51240116Smarcel} 52240116Smarcel 53240116Smarcelatf_test_case expect_fail 54240116Smarcelexpect_fail_body() { 55240116Smarcel for h in $(get_helpers c_helpers cpp_helpers); do 56240116Smarcel atf_check -s eq:0 "${h}" -r result expect_fail_and_fail_requirement 57240116Smarcel check_result result "expected_failure: Fail reason: The failure" 58240116Smarcel 59240116Smarcel atf_check -s eq:1 -e match:"Expected check failure: Fail first: abc" \ 60240116Smarcel -e not-match:"And fail again" "${h}" -r result expect_fail_but_pass 61240116Smarcel check_result result "failed: .*expecting a failure" 62240116Smarcel 63240116Smarcel # atf-sh does not support non-fatal failures yet; skip checks for 64240116Smarcel # such conditions. 65240116Smarcel case "${h}" in *sh_helpers*) continue ;; esac 66240116Smarcel 67240116Smarcel atf_check -s eq:0 -e match:"Expected check failure: Fail first: abc" \ 68240116Smarcel -e match:"Expected check failure: And fail again: def" \ 69240116Smarcel "${h}" -r result expect_fail_and_fail_check 70240116Smarcel check_result result "expected_failure: And fail again: 2 checks" \ 71240116Smarcel "failed as expected" 72240116Smarcel done 73240116Smarcel 74240116Smarcel # atf-sh does not support non-fatal failures yet; skip checks for 75240116Smarcel # such conditions. 76240116Smarcel for h in $(get_helpers sh_helpers); do 77240116Smarcel atf_check -s eq:0 -e ignore "${h}" -r result \ 78240116Smarcel expect_fail_and_fail_requirement 79240116Smarcel check_result result "expected_failure: Fail reason: The failure" 80240116Smarcel 81240116Smarcel atf_check -s eq:1 -e ignore "${h}" -r result expect_fail_but_pass 82240116Smarcel check_result result "failed: .*expecting a failure" 83240116Smarcel done 84240116Smarcel} 85240116Smarcel 86240116Smarcelatf_test_case expect_exit 87240116Smarcelexpect_exit_body() { 88240116Smarcel for h in $(get_helpers); do 89240116Smarcel atf_check -s eq:0 -e ignore "${h}" -r result expect_exit_any_and_exit 90240116Smarcel check_result result "expected_exit: Call will exit" 91240116Smarcel 92240116Smarcel atf_check -s eq:123 -e ignore "${h}" -r result expect_exit_code_and_exit 93240116Smarcel check_result result "expected_exit\(123\): Call will exit" 94240116Smarcel 95240116Smarcel atf_check -s eq:1 -e ignore "${h}" -r result expect_exit_but_pass 96240116Smarcel check_result result "failed: .*expected to exit" 97240116Smarcel done 98240116Smarcel} 99240116Smarcel 100240116Smarcelatf_test_case expect_signal 101240116Smarcelexpect_signal_body() { 102240116Smarcel for h in $(get_helpers); do 103240116Smarcel atf_check -s signal:9 -e ignore "${h}" -r result \ 104240116Smarcel expect_signal_any_and_signal 105240116Smarcel check_result result "expected_signal: Call will signal" 106240116Smarcel 107240116Smarcel atf_check -s signal:hup -e ignore "${h}" -r result \ 108240116Smarcel expect_signal_no_and_signal 109240116Smarcel check_result result "expected_signal\(1\): Call will signal" 110240116Smarcel 111240116Smarcel atf_check -s eq:1 -e ignore "${h}" -r result \ 112240116Smarcel expect_signal_but_pass 113240116Smarcel check_result result "failed: .*termination signal" 114240116Smarcel done 115240116Smarcel} 116240116Smarcel 117240116Smarcelatf_test_case expect_death 118240116Smarcelexpect_death_body() { 119240116Smarcel for h in $(get_helpers); do 120240116Smarcel atf_check -s eq:123 -e ignore "${h}" -r result expect_death_and_exit 121240116Smarcel check_result result "expected_death: Exit case" 122240116Smarcel 123240116Smarcel atf_check -s signal:kill -e ignore "${h}" -r result \ 124240116Smarcel expect_death_and_signal 125240116Smarcel check_result result "expected_death: Signal case" 126240116Smarcel 127240116Smarcel atf_check -s eq:1 -e ignore "${h}" -r result expect_death_but_pass 128240116Smarcel check_result result "failed: .*terminate abruptly" 129240116Smarcel done 130240116Smarcel} 131240116Smarcel 132240116Smarcelatf_test_case expect_timeout 133240116Smarcelexpect_timeout_body() { 134240116Smarcel for h in $(get_helpers); do 135240116Smarcel atf_check -s eq:1 -e ignore "${h}" -r result expect_timeout_but_pass 136240116Smarcel check_result result "failed: Test case was expected to hang but it" \ 137240116Smarcel "continued execution" 138240116Smarcel done 139240116Smarcel} 140240116Smarcel 141240116Smarcelatf_init_test_cases() 142240116Smarcel{ 143240116Smarcel atf_add_test_case expect_pass 144240116Smarcel atf_add_test_case expect_fail 145240116Smarcel atf_add_test_case expect_exit 146240116Smarcel atf_add_test_case expect_signal 147240116Smarcel atf_add_test_case expect_death 148240116Smarcel atf_add_test_case expect_timeout 149240116Smarcel} 150240116Smarcel 151240116Smarcel# vim: syntax=sh:expandtab:shiftwidth=4:softtabstop=4 152