1c243e490SMarcel Moolenaar# Copyright (c) 2007 The NetBSD Foundation, Inc. 2c243e490SMarcel Moolenaar# All rights reserved. 3c243e490SMarcel Moolenaar# 4c243e490SMarcel Moolenaar# Redistribution and use in source and binary forms, with or without 5c243e490SMarcel Moolenaar# modification, are permitted provided that the following conditions 6c243e490SMarcel Moolenaar# are met: 7c243e490SMarcel Moolenaar# 1. Redistributions of source code must retain the above copyright 8c243e490SMarcel Moolenaar# notice, this list of conditions and the following disclaimer. 9c243e490SMarcel Moolenaar# 2. Redistributions in binary form must reproduce the above copyright 10c243e490SMarcel Moolenaar# notice, this list of conditions and the following disclaimer in the 11c243e490SMarcel Moolenaar# documentation and/or other materials provided with the distribution. 12c243e490SMarcel Moolenaar# 13c243e490SMarcel Moolenaar# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND 14c243e490SMarcel Moolenaar# CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, 15c243e490SMarcel Moolenaar# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 16c243e490SMarcel Moolenaar# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 17c243e490SMarcel Moolenaar# IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY 18c243e490SMarcel Moolenaar# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19c243e490SMarcel Moolenaar# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 20c243e490SMarcel Moolenaar# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 21c243e490SMarcel Moolenaar# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 22c243e490SMarcel Moolenaar# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 23c243e490SMarcel Moolenaar# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN 24c243e490SMarcel Moolenaar# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25c243e490SMarcel Moolenaar 26c243e490SMarcel Moolenaar# TODO: Bring in the checks in the bootstrap testsuite for atf_check. 27c243e490SMarcel Moolenaar 28c243e490SMarcel Moolenaaratf_test_case info_ok 29c243e490SMarcel Moolenaarinfo_ok_head() 30c243e490SMarcel Moolenaar{ 31c243e490SMarcel Moolenaar atf_set "descr" "Verifies that atf_check prints an informative" \ 32c243e490SMarcel Moolenaar "message even when the command is successful" 33c243e490SMarcel Moolenaar} 34c243e490SMarcel Moolenaarinfo_ok_body() 35c243e490SMarcel Moolenaar{ 36c243e490SMarcel Moolenaar h="$(atf_get_srcdir)/misc_helpers -s $(atf_get_srcdir)" 37c243e490SMarcel Moolenaar 38c243e490SMarcel Moolenaar atf_check -s eq:0 -o save:stdout -e save:stderr -x \ 39c243e490SMarcel Moolenaar "${h} atf_check_info_ok" 40c243e490SMarcel Moolenaar grep 'Executing command.*true' stdout >/dev/null || \ 41c243e490SMarcel Moolenaar atf_fail "atf_check does not print an informative message" 42c243e490SMarcel Moolenaar 43c243e490SMarcel Moolenaar atf_check -s eq:0 -o save:stdout -e save:stderr -x \ 44c243e490SMarcel Moolenaar "${h} atf_check_info_fail" 45c243e490SMarcel Moolenaar grep 'Executing command.*false' stdout >/dev/null || \ 46c243e490SMarcel Moolenaar atf_fail "atf_check does not print an informative message" 47c243e490SMarcel Moolenaar} 48c243e490SMarcel Moolenaar 49c243e490SMarcel Moolenaaratf_test_case expout_mismatch 50c243e490SMarcel Moolenaarexpout_mismatch_head() 51c243e490SMarcel Moolenaar{ 52c243e490SMarcel Moolenaar atf_set "descr" "Verifies that atf_check prints a diff of the" \ 531a61beb0SJulio Merino "stdout and the expected stdout if the two do not" \ 54c243e490SMarcel Moolenaar "match" 55c243e490SMarcel Moolenaar} 56c243e490SMarcel Moolenaarexpout_mismatch_body() 57c243e490SMarcel Moolenaar{ 58c243e490SMarcel Moolenaar h="$(atf_get_srcdir)/misc_helpers -s $(atf_get_srcdir)" 59c243e490SMarcel Moolenaar 60c243e490SMarcel Moolenaar atf_check -s eq:1 -o save:stdout -e save:stderr -x \ 61c243e490SMarcel Moolenaar "${h} atf_check_expout_mismatch" 62c243e490SMarcel Moolenaar grep 'Executing command.*echo bar' stdout >/dev/null || \ 63c243e490SMarcel Moolenaar atf_fail "atf_check does not print an informative message" 64c243e490SMarcel Moolenaar grep 'stdout does not match golden output' stderr >/dev/null || \ 65c243e490SMarcel Moolenaar atf_fail "atf_check does not print the stdout header" 66c243e490SMarcel Moolenaar grep 'stderr' stderr >/dev/null && \ 67c243e490SMarcel Moolenaar atf_fail "atf_check prints the stderr header" 68c243e490SMarcel Moolenaar grep '^-foo' stderr >/dev/null || \ 69c243e490SMarcel Moolenaar atf_fail "atf_check does not print the stdout's diff" 70c243e490SMarcel Moolenaar grep '^+bar' stderr >/dev/null || \ 71c243e490SMarcel Moolenaar atf_fail "atf_check does not print the stdout's diff" 72c243e490SMarcel Moolenaar} 73c243e490SMarcel Moolenaar 74c243e490SMarcel Moolenaaratf_test_case experr_mismatch 75c243e490SMarcel Moolenaarexperr_mismatch_head() 76c243e490SMarcel Moolenaar{ 77c243e490SMarcel Moolenaar atf_set "descr" "Verifies that atf_check prints a diff of the" \ 781a61beb0SJulio Merino "stderr and the expected stderr if the two do not" \ 79c243e490SMarcel Moolenaar "match" 80c243e490SMarcel Moolenaar} 81c243e490SMarcel Moolenaarexperr_mismatch_body() 82c243e490SMarcel Moolenaar{ 83c243e490SMarcel Moolenaar h="$(atf_get_srcdir)/misc_helpers -s $(atf_get_srcdir)" 84c243e490SMarcel Moolenaar 85c243e490SMarcel Moolenaar atf_check -s eq:1 -o save:stdout -e save:stderr -x \ 86c243e490SMarcel Moolenaar "${h} atf_check_experr_mismatch" 87c243e490SMarcel Moolenaar grep 'Executing command.*echo bar' stdout >/dev/null || \ 88c243e490SMarcel Moolenaar atf_fail "atf_check does not print an informative message" 89c243e490SMarcel Moolenaar grep 'stdout' stderr >/dev/null && \ 90c243e490SMarcel Moolenaar atf_fail "atf_check prints the stdout header" 91c243e490SMarcel Moolenaar grep 'stderr does not match golden output' stderr >/dev/null || \ 92c243e490SMarcel Moolenaar atf_fail "atf_check does not print the stderr header" 93c243e490SMarcel Moolenaar grep '^-foo' stderr >/dev/null || \ 94c243e490SMarcel Moolenaar atf_fail "atf_check does not print the stderr's diff" 95c243e490SMarcel Moolenaar grep '^+bar' stderr >/dev/null || \ 96c243e490SMarcel Moolenaar atf_fail "atf_check does not print the stderr's diff" 97c243e490SMarcel Moolenaar} 98c243e490SMarcel Moolenaar 99c243e490SMarcel Moolenaaratf_test_case null_stdout 100c243e490SMarcel Moolenaarnull_stdout_head() 101c243e490SMarcel Moolenaar{ 102c243e490SMarcel Moolenaar atf_set "descr" "Verifies that atf_check prints a the stdout it got" \ 103c243e490SMarcel Moolenaar "when it was supposed to be null" 104c243e490SMarcel Moolenaar} 105c243e490SMarcel Moolenaarnull_stdout_body() 106c243e490SMarcel Moolenaar{ 107c243e490SMarcel Moolenaar h="$(atf_get_srcdir)/misc_helpers -s $(atf_get_srcdir)" 108c243e490SMarcel Moolenaar 109c243e490SMarcel Moolenaar atf_check -s eq:1 -o save:stdout -e save:stderr -x \ 110c243e490SMarcel Moolenaar "${h} atf_check_null_stdout" 111c243e490SMarcel Moolenaar grep 'Executing command.*echo.*These.*contents' stdout >/dev/null || \ 112c243e490SMarcel Moolenaar atf_fail "atf_check does not print an informative message" 113c243e490SMarcel Moolenaar grep 'stdout not empty' stderr >/dev/null || \ 114c243e490SMarcel Moolenaar atf_fail "atf_check does not print the stdout header" 115c243e490SMarcel Moolenaar grep 'stderr' stderr >/dev/null && \ 116c243e490SMarcel Moolenaar atf_fail "atf_check prints the stderr header" 117c243e490SMarcel Moolenaar grep 'These are the contents' stderr >/dev/null || \ 118c243e490SMarcel Moolenaar atf_fail "atf_check does not print stdout's contents" 119c243e490SMarcel Moolenaar} 120c243e490SMarcel Moolenaar 121c243e490SMarcel Moolenaaratf_test_case null_stderr 122c243e490SMarcel Moolenaarnull_stderr_head() 123c243e490SMarcel Moolenaar{ 124c243e490SMarcel Moolenaar atf_set "descr" "Verifies that atf_check prints a the stderr it got" \ 125c243e490SMarcel Moolenaar "when it was supposed to be null" 126c243e490SMarcel Moolenaar} 127c243e490SMarcel Moolenaarnull_stderr_body() 128c243e490SMarcel Moolenaar{ 129c243e490SMarcel Moolenaar h="$(atf_get_srcdir)/misc_helpers -s $(atf_get_srcdir)" 130c243e490SMarcel Moolenaar 131c243e490SMarcel Moolenaar atf_check -s eq:1 -o save:stdout -e save:stderr -x \ 132c243e490SMarcel Moolenaar "${h} atf_check_null_stderr" 133c243e490SMarcel Moolenaar grep 'Executing command.*echo.*These.*contents' stdout >/dev/null || \ 134c243e490SMarcel Moolenaar atf_fail "atf_check does not print an informative message" 135c243e490SMarcel Moolenaar grep 'stdout' stderr >/dev/null && \ 136c243e490SMarcel Moolenaar atf_fail "atf_check prints the stdout header" 137c243e490SMarcel Moolenaar grep 'stderr not empty' stderr >/dev/null || \ 138c243e490SMarcel Moolenaar atf_fail "atf_check does not print the stderr header" 139c243e490SMarcel Moolenaar grep 'These are the contents' stderr >/dev/null || \ 140c243e490SMarcel Moolenaar atf_fail "atf_check does not print stderr's contents" 141c243e490SMarcel Moolenaar} 142c243e490SMarcel Moolenaar 143c243e490SMarcel Moolenaaratf_test_case equal 144c243e490SMarcel Moolenaarequal_head() 145c243e490SMarcel Moolenaar{ 146c243e490SMarcel Moolenaar atf_set "descr" "Verifies that atf_check_equal works" 147c243e490SMarcel Moolenaar} 148c243e490SMarcel Moolenaarequal_body() 149c243e490SMarcel Moolenaar{ 150c243e490SMarcel Moolenaar h="$(atf_get_srcdir)/misc_helpers -s $(atf_get_srcdir)" 151c243e490SMarcel Moolenaar 152c243e490SMarcel Moolenaar atf_check -s eq:0 -o ignore -e ignore -x "${h} atf_check_equal_ok" 153c243e490SMarcel Moolenaar 154c243e490SMarcel Moolenaar atf_check -s eq:1 -o ignore -e ignore -x \ 155c243e490SMarcel Moolenaar "${h} -r resfile atf_check_equal_fail" 156c243e490SMarcel Moolenaar atf_check -s eq:0 -o ignore -e empty grep '^failed: a != b (a != b)$' \ 157c243e490SMarcel Moolenaar resfile 158c243e490SMarcel Moolenaar 159c243e490SMarcel Moolenaar atf_check -s eq:0 -o ignore -e ignore -x "${h} atf_check_equal_eval_ok" 160c243e490SMarcel Moolenaar 161c243e490SMarcel Moolenaar atf_check -s eq:1 -o ignore -e ignore -x \ 162c243e490SMarcel Moolenaar "${h} -r resfile atf_check_equal_eval_fail" 163c243e490SMarcel Moolenaar atf_check -s eq:0 -o ignore -e empty \ 164c243e490SMarcel Moolenaar grep '^failed: \${x} != \${y} (a != b)$' resfile 165c243e490SMarcel Moolenaar} 166c243e490SMarcel Moolenaar 167*c203bd70SAlex Richardsonatf_test_case not_equal 168*c203bd70SAlex Richardsonnot_equal_head() 169*c203bd70SAlex Richardson{ 170*c203bd70SAlex Richardson atf_set "descr" "Verifies that atf_check_not_equal works" 171*c203bd70SAlex Richardson} 172*c203bd70SAlex Richardsonnot_equal_body() 173*c203bd70SAlex Richardson{ 174*c203bd70SAlex Richardson h="$(atf_get_srcdir)/misc_helpers -s $(atf_get_srcdir)" 175*c203bd70SAlex Richardson 176*c203bd70SAlex Richardson atf_check -s eq:0 -o ignore -e ignore -x "${h} atf_check_not_equal_ok" 177*c203bd70SAlex Richardson 178*c203bd70SAlex Richardson atf_check -s eq:1 -o ignore -e ignore -x \ 179*c203bd70SAlex Richardson "${h} -r resfile atf_check_not_equal_fail" 180*c203bd70SAlex Richardson atf_check -s eq:0 -o ignore -e empty grep '^failed: a == b (a == b)$' \ 181*c203bd70SAlex Richardson resfile 182*c203bd70SAlex Richardson 183*c203bd70SAlex Richardson atf_check -s eq:0 -o ignore -e ignore -x "${h} atf_check_not_equal_eval_ok" 184*c203bd70SAlex Richardson 185*c203bd70SAlex Richardson atf_check -s eq:1 -o ignore -e ignore -x \ 186*c203bd70SAlex Richardson "${h} -r resfile atf_check_not_equal_eval_fail" 187*c203bd70SAlex Richardson atf_check -s eq:0 -o ignore -e empty \ 188*c203bd70SAlex Richardson grep '^failed: \${x} == \${y} (a == b)$' resfile 189*c203bd70SAlex Richardson} 190*c203bd70SAlex Richardson 191da3067c1SEnji Cooperatf_test_case flush_stdout_on_death 192da3067c1SEnji Cooperflush_stdout_on_death_body() 193a18eacbeSJulio Merino{ 194da3067c1SEnji Cooper CONTROL_FILE="$(pwd)/done" "$(atf_get_srcdir)/misc_helpers" \ 195da3067c1SEnji Cooper -s "$(atf_get_srcdir)" atf_check_flush_stdout >out 2>err & 196a18eacbeSJulio Merino pid="${!}" 197da3067c1SEnji Cooper while [ ! -f ./done ]; do 198da3067c1SEnji Cooper echo "Still waiting for helper to create control file" 199da3067c1SEnji Cooper ls 200a18eacbeSJulio Merino sleep 1 201da3067c1SEnji Cooper done 202da3067c1SEnji Cooper kill -9 "${pid}" 203a18eacbeSJulio Merino 204a18eacbeSJulio Merino grep 'Executing command.*true' out \ 205a18eacbeSJulio Merino || atf_fail 'First command not in output' 206da3067c1SEnji Cooper grep 'Executing command.*false' out \ 207a18eacbeSJulio Merino || atf_fail 'Second command not in output' 208a18eacbeSJulio Merino} 209a18eacbeSJulio Merino 210c243e490SMarcel Moolenaaratf_init_test_cases() 211c243e490SMarcel Moolenaar{ 212c243e490SMarcel Moolenaar atf_add_test_case info_ok 213c243e490SMarcel Moolenaar atf_add_test_case expout_mismatch 214c243e490SMarcel Moolenaar atf_add_test_case experr_mismatch 215c243e490SMarcel Moolenaar atf_add_test_case null_stdout 216c243e490SMarcel Moolenaar atf_add_test_case null_stderr 217c243e490SMarcel Moolenaar atf_add_test_case equal 218da3067c1SEnji Cooper atf_add_test_case flush_stdout_on_death 219c243e490SMarcel Moolenaar} 220c243e490SMarcel Moolenaar 221c243e490SMarcel Moolenaar# vim: syntax=sh:expandtab:shiftwidth=4:softtabstop=4 222