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 check_result() { 31 file="${1}"; shift 32 33 atf_check -s eq:0 -o match:"${*}" -e empty cat "${file}" 34 rm "${file}" 35 } 36 37 atf_test_case expect_pass 38 expect_pass_body() { 39 for h in $(get_helpers); do 40 atf_check -s eq:0 -e ignore "${h}" -r result expect_pass_and_pass 41 check_result result "passed" 42 43 atf_check -s eq:1 -e ignore "${h}" -r result \ 44 expect_pass_but_fail_requirement 45 check_result result "failed: Some reason" 46 47 # atf-sh does not support non-fatal failures yet; skip checks for 48 # such conditions. 49 case "${h}" in *sh_helpers*) continue ;; esac 50 51 atf_check -s eq:1 -o empty -e match:"Some reason" \ 52 "${h}" -r result expect_pass_but_fail_check 53 check_result result "failed: 1 checks failed" 54 done 55 } 56 57 atf_test_case expect_fail 58 expect_fail_body() { 59 for h in $(get_helpers c_helpers cpp_helpers); do 60 atf_check -s eq:0 "${h}" -r result expect_fail_and_fail_requirement 61 check_result result "expected_failure: Fail reason: The failure" 62 63 atf_check -s eq:1 -e match:"Expected check failure: Fail first: abc" \ 64 -e not-match:"And fail again" "${h}" -r result expect_fail_but_pass 65 check_result result "failed: .*expecting a failure" 66 67 # atf-sh does not support non-fatal failures yet; skip checks for 68 # such conditions. 69 case "${h}" in *sh_helpers*) continue ;; esac 70 71 atf_check -s eq:0 -e match:"Expected check failure: Fail first: abc" \ 72 -e match:"Expected check failure: And fail again: def" \ 73 "${h}" -r result expect_fail_and_fail_check 74 check_result result "expected_failure: And fail again: 2 checks" \ 75 "failed as expected" 76 done 77 78 # atf-sh does not support non-fatal failures yet; skip checks for 79 # such conditions. 80 for h in $(get_helpers sh_helpers); do 81 atf_check -s eq:0 -e ignore "${h}" -r result \ 82 expect_fail_and_fail_requirement 83 check_result result "expected_failure: Fail reason: The failure" 84 85 atf_check -s eq:1 -e ignore "${h}" -r result expect_fail_but_pass 86 check_result result "failed: .*expecting a failure" 87 done 88 } 89 90 atf_test_case expect_exit 91 expect_exit_body() { 92 for h in $(get_helpers); do 93 atf_check -s eq:0 -e ignore "${h}" -r result expect_exit_any_and_exit 94 check_result result "expected_exit: Call will exit" 95 96 atf_check -s eq:123 -e ignore "${h}" -r result expect_exit_code_and_exit 97 check_result result "expected_exit\(123\): Call will exit" 98 99 atf_check -s eq:1 -e ignore "${h}" -r result expect_exit_but_pass 100 check_result result "failed: .*expected to exit" 101 done 102 } 103 104 atf_test_case expect_signal 105 expect_signal_body() { 106 for h in $(get_helpers); do 107 atf_check -s signal:9 -e ignore "${h}" -r result \ 108 expect_signal_any_and_signal 109 check_result result "expected_signal: Call will signal" 110 111 atf_check -s signal:hup -e ignore "${h}" -r result \ 112 expect_signal_no_and_signal 113 check_result result "expected_signal\(1\): Call will signal" 114 115 atf_check -s eq:1 -e ignore "${h}" -r result \ 116 expect_signal_but_pass 117 check_result result "failed: .*termination signal" 118 done 119 } 120 121 atf_test_case expect_death 122 expect_death_body() { 123 for h in $(get_helpers); do 124 atf_check -s eq:123 -e ignore "${h}" -r result expect_death_and_exit 125 check_result result "expected_death: Exit case" 126 127 atf_check -s signal:kill -e ignore "${h}" -r result \ 128 expect_death_and_signal 129 check_result result "expected_death: Signal case" 130 131 atf_check -s eq:1 -e ignore "${h}" -r result expect_death_but_pass 132 check_result result "failed: .*terminate abruptly" 133 done 134 } 135 136 atf_test_case expect_timeout 137 expect_timeout_body() { 138 for h in $(get_helpers); do 139 atf_check -s eq:1 -e ignore "${h}" -r result expect_timeout_but_pass 140 check_result result "failed: Test case was expected to hang but it" \ 141 "continued execution" 142 done 143 } 144 145 atf_init_test_cases() 146 { 147 atf_add_test_case expect_pass 148 atf_add_test_case expect_fail 149 atf_add_test_case expect_exit 150 atf_add_test_case expect_signal 151 atf_add_test_case expect_death 152 atf_add_test_case expect_timeout 153 } 154 155 # vim: syntax=sh:expandtab:shiftwidth=4:softtabstop=4 156