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