1c243e490SMarcel Moolenaar# Copyright (c) 2008 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# The Atf_Check and Atf-Shell variables are set by atf-sh. 27c243e490SMarcel Moolenaar 28c243e490SMarcel Moolenaarh_pass() 29c243e490SMarcel Moolenaar{ 30c243e490SMarcel Moolenaar cmd="$1"; shift 31c243e490SMarcel Moolenaar 32c243e490SMarcel Moolenaar echo "Running [atf-check $*] against [${cmd}]" 33c243e490SMarcel Moolenaar 34c243e490SMarcel Moolenaar cat >script.sh <<EOF 35c243e490SMarcel Moolenaar#! ${Atf_Shell} 36c243e490SMarcel Moolenaar${cmd} 37c243e490SMarcel MoolenaarEOF 38c243e490SMarcel Moolenaar chmod +x script.sh 39c243e490SMarcel Moolenaar 40c243e490SMarcel Moolenaar if ! ${Atf_Check} "${@}" ./script.sh >tmp; then 41c243e490SMarcel Moolenaar cat tmp 42c243e490SMarcel Moolenaar atf_fail "atf-check failed" 43c243e490SMarcel Moolenaar fi 44c243e490SMarcel Moolenaar} 45c243e490SMarcel Moolenaar 46c243e490SMarcel Moolenaarh_fail() 47c243e490SMarcel Moolenaar{ 48c243e490SMarcel Moolenaar cmd="$1"; shift 49c243e490SMarcel Moolenaar 50c243e490SMarcel Moolenaar echo "Running [atf-check $*] against [${cmd}]" 51c243e490SMarcel Moolenaar 52c243e490SMarcel Moolenaar cat >script.sh <<EOF 53c243e490SMarcel Moolenaar#! ${Atf_Shell} 54c243e490SMarcel Moolenaar${cmd} 55c243e490SMarcel MoolenaarEOF 56c243e490SMarcel Moolenaar chmod +x script.sh 57c243e490SMarcel Moolenaar 58c243e490SMarcel Moolenaar if ${Atf_Check} "${@}" ./script.sh 2>tmp; then 59c243e490SMarcel Moolenaar cat tmp 60c243e490SMarcel Moolenaar atf_fail "atf-check succeeded but should fail" 61c243e490SMarcel Moolenaar fi 62c243e490SMarcel Moolenaar} 63c243e490SMarcel Moolenaar 64c243e490SMarcel Moolenaaratf_test_case sflag_eq_ne 65c243e490SMarcel Moolenaarsflag_eq_ne_head() 66c243e490SMarcel Moolenaar{ 67c243e490SMarcel Moolenaar atf_set "descr" "Tests for the -s option using the 'eq' and 'ne' qualifiers" 68c243e490SMarcel Moolenaar} 69c243e490SMarcel Moolenaarsflag_eq_ne_body() 70c243e490SMarcel Moolenaar{ 71c243e490SMarcel Moolenaar h_pass "true" -s eq:0 72c243e490SMarcel Moolenaar h_pass "false" -s ne:0 73c243e490SMarcel Moolenaar h_pass "exit 255" -s eq:255 74c243e490SMarcel Moolenaar h_pass "exit 0" -s ne:255 75c243e490SMarcel Moolenaar 76c243e490SMarcel Moolenaar h_fail "exit 256" -s eq:256 77c243e490SMarcel Moolenaar h_fail "exit -1" -s eq:-1 78c243e490SMarcel Moolenaar h_fail "true" -s ne:256 79c243e490SMarcel Moolenaar h_fail "true" -s ne:-1 80c243e490SMarcel Moolenaar} 81c243e490SMarcel Moolenaar 82c243e490SMarcel Moolenaaratf_test_case sflag_exit 83c243e490SMarcel Moolenaarsflag_exit_head() 84c243e490SMarcel Moolenaar{ 85c243e490SMarcel Moolenaar atf_set "descr" "Tests for the -s option using the 'exit' qualifier" 86c243e490SMarcel Moolenaar} 87c243e490SMarcel Moolenaarsflag_exit_body() 88c243e490SMarcel Moolenaar{ 89c243e490SMarcel Moolenaar h_pass 'true' -s exit:0 90c243e490SMarcel Moolenaar h_pass 'false' -s not-exit:0 91c243e490SMarcel Moolenaar h_pass 'exit 255' -s exit:255 92c243e490SMarcel Moolenaar h_pass 'exit 0' -s not-exit:255 93c243e490SMarcel Moolenaar 94c243e490SMarcel Moolenaar h_fail 'exit 256' -s exit:256 95c243e490SMarcel Moolenaar h_fail 'exit -1' -s exit:-1 96c243e490SMarcel Moolenaar h_fail 'true' -s not-exit:256 97c243e490SMarcel Moolenaar h_fail 'true' -s not-exit:-1 98c243e490SMarcel Moolenaar 99c243e490SMarcel Moolenaar h_pass 'true' -s exit 100c243e490SMarcel Moolenaar h_pass 'false' -s exit 101c243e490SMarcel Moolenaar if ${Atf_Check} -s exit -x 'kill $$'; then 102c243e490SMarcel Moolenaar atf_fail "Signal detected as clean exit" 103c243e490SMarcel Moolenaar fi 104c243e490SMarcel Moolenaar} 105c243e490SMarcel Moolenaar 106c243e490SMarcel Moolenaaratf_test_case sflag_ignore 107c243e490SMarcel Moolenaarsflag_ignore_head() 108c243e490SMarcel Moolenaar{ 109c243e490SMarcel Moolenaar atf_set "descr" "Tests for the -s option using the 'ignore' qualifier" 110c243e490SMarcel Moolenaar} 111c243e490SMarcel Moolenaarsflag_ignore_body() 112c243e490SMarcel Moolenaar{ 113c243e490SMarcel Moolenaar h_pass 'true' -s ignore 114c243e490SMarcel Moolenaar h_pass 'false' -s ignore 115c243e490SMarcel Moolenaar if ${Atf_Check} -s ignored -x 'kill $$'; then 116c243e490SMarcel Moolenaar atf_fail "Signal not ignored" 117c243e490SMarcel Moolenaar fi 118c243e490SMarcel Moolenaar} 119c243e490SMarcel Moolenaar 120c243e490SMarcel Moolenaaratf_test_case sflag_signal 121c243e490SMarcel Moolenaarsflag_signal_head() 122c243e490SMarcel Moolenaar{ 123c243e490SMarcel Moolenaar atf_set "descr" "Tests for the -s option using the 'signal' qualifier" 124c243e490SMarcel Moolenaar} 125c243e490SMarcel Moolenaarsflag_signal_body() 126c243e490SMarcel Moolenaar{ 127c243e490SMarcel Moolenaar ${Atf_Check} -s signal:hup -x 'kill -1 $$' || atf_fail "Signal not detected" 128c243e490SMarcel Moolenaar ${Atf_Check} -s signal:sighup -x 'kill -1 $$' || atf_fail "Signal not" \ 129c243e490SMarcel Moolenaar "detected" 130c243e490SMarcel Moolenaar ${Atf_Check} -s signal:1 -x 'kill -1 $$' || atf_fail "Signal not detected" 131c243e490SMarcel Moolenaar ${Atf_Check} -s signal -x 'kill -1 $$' || atf_fail "Signal not detected" 132c243e490SMarcel Moolenaar 133c243e490SMarcel Moolenaar ${Atf_Check} -s not-signal:kill -x 'kill -9 $$' && \ 134c243e490SMarcel Moolenaar atf_fail "not-signal:kill matched kill -9" 135c243e490SMarcel Moolenaar ${Atf_Check} -s not-signal:kill -x 'kill -1 $$' || \ 136c243e490SMarcel Moolenaar atf_fail "not-signal:kill did not match kill -1" 137c243e490SMarcel Moolenaar 138c243e490SMarcel Moolenaar h_fail 'true' -s signal 139c243e490SMarcel Moolenaar h_fail 'false' -s signal 140c243e490SMarcel Moolenaar} 141c243e490SMarcel Moolenaar 142c243e490SMarcel Moolenaaratf_test_case xflag 143c243e490SMarcel Moolenaarxflag_head() 144c243e490SMarcel Moolenaar{ 145c243e490SMarcel Moolenaar atf_set "descr" "Tests for the -x option" 146c243e490SMarcel Moolenaar} 147c243e490SMarcel Moolenaarxflag_body() 148c243e490SMarcel Moolenaar{ 149c243e490SMarcel Moolenaar ${Atf_Check} -s ne:0 -o ignore -e ignore "echo foo 2>&1" || \ 150c243e490SMarcel Moolenaar atf_fail "Shell command succeeded without -x" 151c243e490SMarcel Moolenaar 152c243e490SMarcel Moolenaar ${Atf_Check} -e inline:"foo\n" -x "echo foo 1>&2" || \ 153c243e490SMarcel Moolenaar atf_fail "Cannot run command with -x" 154c243e490SMarcel Moolenaar 155c243e490SMarcel Moolenaar ${Atf_Check} -o inline:"foo\n" -x echo foo || \ 156c243e490SMarcel Moolenaar atf_fail "Using -x does not respect all provided arguments" 157c243e490SMarcel Moolenaar} 158c243e490SMarcel Moolenaar 159c243e490SMarcel Moolenaaratf_test_case oflag_empty 160c243e490SMarcel Moolenaaroflag_empty_head() 161c243e490SMarcel Moolenaar{ 162c243e490SMarcel Moolenaar atf_set "descr" "Tests for the -o option using the 'empty' argument" 163c243e490SMarcel Moolenaar} 164c243e490SMarcel Moolenaaroflag_empty_body() 165c243e490SMarcel Moolenaar{ 166c243e490SMarcel Moolenaar h_pass "true" -o empty 167c243e490SMarcel Moolenaar h_fail "echo foo" -o empty 168c243e490SMarcel Moolenaar} 169c243e490SMarcel Moolenaar 170c243e490SMarcel Moolenaaratf_test_case oflag_ignore 171c243e490SMarcel Moolenaaroflag_ignore_head() 172c243e490SMarcel Moolenaar{ 173c243e490SMarcel Moolenaar atf_set "descr" "Tests for the -o option using the 'ignore' argument" 174c243e490SMarcel Moolenaar} 175c243e490SMarcel Moolenaaroflag_ignore_body() 176c243e490SMarcel Moolenaar{ 177c243e490SMarcel Moolenaar h_pass "true" -o ignore 178c243e490SMarcel Moolenaar h_pass "echo foo" -o ignore 179c243e490SMarcel Moolenaar} 180c243e490SMarcel Moolenaar 181c243e490SMarcel Moolenaaratf_test_case oflag_file 182c243e490SMarcel Moolenaaroflag_file_head() 183c243e490SMarcel Moolenaar{ 184c243e490SMarcel Moolenaar atf_set "descr" "Tests for the -o option using the 'file:' argument" 185c243e490SMarcel Moolenaar} 186c243e490SMarcel Moolenaaroflag_file_body() 187c243e490SMarcel Moolenaar{ 188c243e490SMarcel Moolenaar touch empty 189c243e490SMarcel Moolenaar h_pass "true" -o file:empty 190c243e490SMarcel Moolenaar 191c243e490SMarcel Moolenaar echo foo >text 192c243e490SMarcel Moolenaar h_pass "echo foo" -o file:text 193c243e490SMarcel Moolenaar h_fail "echo bar" -o file:text 194c243e490SMarcel Moolenaar 195c243e490SMarcel Moolenaar dd if=/dev/urandom of=bin bs=1k count=10 196c243e490SMarcel Moolenaar h_pass "cat bin" -o file:bin 197c243e490SMarcel Moolenaar} 198c243e490SMarcel Moolenaar 199c243e490SMarcel Moolenaaratf_test_case oflag_inline 200c243e490SMarcel Moolenaaroflag_inline_head() 201c243e490SMarcel Moolenaar{ 202c243e490SMarcel Moolenaar atf_set "descr" "Tests for the -o option using the 'inline:' argument" 203c243e490SMarcel Moolenaar} 204c243e490SMarcel Moolenaaroflag_inline_body() 205c243e490SMarcel Moolenaar{ 206c243e490SMarcel Moolenaar h_pass "true" -o inline: 207c243e490SMarcel Moolenaar h_pass "echo foo bar" -o inline:"foo bar\n" 208c243e490SMarcel Moolenaar h_pass "printf 'foo bar'" -o inline:"foo bar" 209c243e490SMarcel Moolenaar h_pass "printf '\t\n\t\n'" -o inline:"\t\n\t\n" 2100677dfd1SJulio Merino h_pass "printf '\a\b\033\f\n\r\t\v'" -o inline:"\a\b\e\f\n\r\t\v" 211c243e490SMarcel Moolenaar h_pass "printf '\011\022\033\012'" -o inline:"\011\022\033\012" 212c243e490SMarcel Moolenaar 213c243e490SMarcel Moolenaar h_fail "echo foo bar" -o inline:"foo bar" 214c243e490SMarcel Moolenaar h_fail "echo -n foo bar" -o inline:"foo bar\n" 215c243e490SMarcel Moolenaar} 216c243e490SMarcel Moolenaar 217c243e490SMarcel Moolenaaratf_test_case oflag_match 218c243e490SMarcel Moolenaaroflag_match_head() 219c243e490SMarcel Moolenaar{ 220c243e490SMarcel Moolenaar atf_set "descr" "Tests for the -o option using the 'match:' argument" 221c243e490SMarcel Moolenaar} 222c243e490SMarcel Moolenaaroflag_match_body() 223c243e490SMarcel Moolenaar{ 224c243e490SMarcel Moolenaar h_pass "printf no-newline" -o "match:^no-newline" 225c243e490SMarcel Moolenaar h_pass "echo line1; echo foo bar" -o "match:^foo" 226c243e490SMarcel Moolenaar h_pass "echo foo bar" -o "match:o b" 227c243e490SMarcel Moolenaar h_fail "echo foo bar" -o "match:baz" 228c243e490SMarcel Moolenaar h_fail "echo foo bar" -o "match:^bar" 229c243e490SMarcel Moolenaar} 230c243e490SMarcel Moolenaar 231c243e490SMarcel Moolenaaratf_test_case oflag_save 232c243e490SMarcel Moolenaaroflag_save_head() 233c243e490SMarcel Moolenaar{ 234c243e490SMarcel Moolenaar atf_set "descr" "Tests for the -o option using the 'save:' argument" 235c243e490SMarcel Moolenaar} 236c243e490SMarcel Moolenaaroflag_save_body() 237c243e490SMarcel Moolenaar{ 238c243e490SMarcel Moolenaar h_pass "echo foo" -o save:out 239c243e490SMarcel Moolenaar echo foo >exp 240c243e490SMarcel Moolenaar cmp -s out exp || atf_fail "Saved output does not match expected results" 241c243e490SMarcel Moolenaar} 242c243e490SMarcel Moolenaar 243c243e490SMarcel Moolenaaratf_test_case oflag_multiple 244c243e490SMarcel Moolenaaroflag_multiple_head() 245c243e490SMarcel Moolenaar{ 246c243e490SMarcel Moolenaar atf_set "descr" "Tests for multiple occurrences of the -o option" 247c243e490SMarcel Moolenaar} 248c243e490SMarcel Moolenaaroflag_multiple_body() 249c243e490SMarcel Moolenaar{ 250c243e490SMarcel Moolenaar h_pass "echo foo bar" -o match:foo -o match:bar 251c243e490SMarcel Moolenaar h_pass "echo foo; echo bar" -o match:foo -o match:bar 252c243e490SMarcel Moolenaar h_fail "echo foo baz" -o match:bar -o match:foo 253c243e490SMarcel Moolenaar h_fail "echo foo; echo baz" -o match:bar -o match:foo 254c243e490SMarcel Moolenaar} 255c243e490SMarcel Moolenaar 256c243e490SMarcel Moolenaaratf_test_case oflag_negated 257c243e490SMarcel Moolenaaroflag_negated_head() 258c243e490SMarcel Moolenaar{ 259c243e490SMarcel Moolenaar atf_set "descr" "Tests for negated occurrences of the -o option" 260c243e490SMarcel Moolenaar} 261c243e490SMarcel Moolenaaroflag_negated_body() 262c243e490SMarcel Moolenaar{ 263c243e490SMarcel Moolenaar h_fail "echo foo" -o empty 264c243e490SMarcel Moolenaar h_pass "echo foo" -o not-empty 265c243e490SMarcel Moolenaar 266c243e490SMarcel Moolenaar h_pass "echo foo bar" -o match:foo 267c243e490SMarcel Moolenaar h_fail "echo foo bar" -o not-match:foo 268c243e490SMarcel Moolenaar} 269c243e490SMarcel Moolenaar 270c243e490SMarcel Moolenaaratf_test_case eflag_empty 271c243e490SMarcel Moolenaareflag_empty_head() 272c243e490SMarcel Moolenaar{ 273c243e490SMarcel Moolenaar atf_set "descr" "Tests for the -e option using the 'empty' argument" 274c243e490SMarcel Moolenaar} 275c243e490SMarcel Moolenaareflag_empty_body() 276c243e490SMarcel Moolenaar{ 277c243e490SMarcel Moolenaar h_pass "true 1>&2" -e empty 278c243e490SMarcel Moolenaar h_fail "echo foo 1>&2" -e empty 279c243e490SMarcel Moolenaar} 280c243e490SMarcel Moolenaar 281c243e490SMarcel Moolenaaratf_test_case eflag_ignore 282c243e490SMarcel Moolenaareflag_ignore_head() 283c243e490SMarcel Moolenaar{ 284c243e490SMarcel Moolenaar atf_set "descr" "Tests for the -e option using the 'ignore' argument" 285c243e490SMarcel Moolenaar} 286c243e490SMarcel Moolenaareflag_ignore_body() 287c243e490SMarcel Moolenaar{ 288c243e490SMarcel Moolenaar h_pass "true 1>&2" -e ignore 289c243e490SMarcel Moolenaar h_pass "echo foo 1>&2" -e ignore 290c243e490SMarcel Moolenaar} 291c243e490SMarcel Moolenaar 292c243e490SMarcel Moolenaaratf_test_case eflag_file 293c243e490SMarcel Moolenaareflag_file_head() 294c243e490SMarcel Moolenaar{ 295c243e490SMarcel Moolenaar atf_set "descr" "Tests for the -e option using the 'file:' argument" 296c243e490SMarcel Moolenaar} 297c243e490SMarcel Moolenaareflag_file_body() 298c243e490SMarcel Moolenaar{ 299c243e490SMarcel Moolenaar touch empty 300c243e490SMarcel Moolenaar h_pass "true 1>&2" -e file:empty 301c243e490SMarcel Moolenaar 302c243e490SMarcel Moolenaar echo foo >text 303c243e490SMarcel Moolenaar h_pass "echo foo 1>&2" -e file:text 304c243e490SMarcel Moolenaar h_fail "echo bar 1>&2" -e file:text 305c243e490SMarcel Moolenaar 306c243e490SMarcel Moolenaar dd if=/dev/urandom of=bin bs=1k count=10 307c243e490SMarcel Moolenaar h_pass "cat bin 1>&2" -e file:bin 308c243e490SMarcel Moolenaar} 309c243e490SMarcel Moolenaar 310c243e490SMarcel Moolenaaratf_test_case eflag_inline 311c243e490SMarcel Moolenaareflag_inline_head() 312c243e490SMarcel Moolenaar{ 313c243e490SMarcel Moolenaar atf_set "descr" "Tests for the -e option using the 'inline:' argument" 314c243e490SMarcel Moolenaar} 315c243e490SMarcel Moolenaareflag_inline_body() 316c243e490SMarcel Moolenaar{ 317c243e490SMarcel Moolenaar h_pass "true 1>&2" -e inline: 318c243e490SMarcel Moolenaar h_pass "echo foo bar 1>&2" -e inline:"foo bar\n" 319c243e490SMarcel Moolenaar h_pass "printf 'foo bar' 1>&2" -e inline:"foo bar" 320c243e490SMarcel Moolenaar h_pass "printf '\t\n\t\n' 1>&2" -e inline:"\t\n\t\n" 3210677dfd1SJulio Merino h_pass "printf '\a\b\033\f\n\r\t\v' 1>&2" -e inline:"\a\b\e\f\n\r\t\v" 322c243e490SMarcel Moolenaar h_pass "printf '\011\022\033\012' 1>&2" -e inline:"\011\022\033\012" 323c243e490SMarcel Moolenaar 324c243e490SMarcel Moolenaar h_fail "echo foo bar 1>&2" -e inline:"foo bar" 325c243e490SMarcel Moolenaar h_fail "echo -n foo bar 1>&2" -e inline:"foo bar\n" 326c243e490SMarcel Moolenaar} 327c243e490SMarcel Moolenaar 328c243e490SMarcel Moolenaaratf_test_case eflag_save 329c243e490SMarcel Moolenaareflag_save_head() 330c243e490SMarcel Moolenaar{ 331c243e490SMarcel Moolenaar atf_set "descr" "Tests for the -e option using the 'save:' argument" 332c243e490SMarcel Moolenaar} 333c243e490SMarcel Moolenaareflag_save_body() 334c243e490SMarcel Moolenaar{ 335c243e490SMarcel Moolenaar h_pass "echo foo 1>&2" -e save:out 336c243e490SMarcel Moolenaar echo foo >exp 337c243e490SMarcel Moolenaar cmp -s out exp || atf_fail "Saved output does not match expected results" 338c243e490SMarcel Moolenaar} 339c243e490SMarcel Moolenaar 340c243e490SMarcel Moolenaaratf_test_case eflag_match 341c243e490SMarcel Moolenaareflag_match_head() 342c243e490SMarcel Moolenaar{ 343c243e490SMarcel Moolenaar atf_set "descr" "Tests for the -e option using the 'match:' argument" 344c243e490SMarcel Moolenaar} 345c243e490SMarcel Moolenaareflag_match_body() 346c243e490SMarcel Moolenaar{ 347c243e490SMarcel Moolenaar h_pass "printf no-newline 1>&2" -e "match:^no-newline" 348c243e490SMarcel Moolenaar h_pass "echo line1 1>&2; echo foo bar 1>&2" -e "match:^foo" 349c243e490SMarcel Moolenaar h_pass "echo foo bar 1>&2" -e "match:o b" 350c243e490SMarcel Moolenaar h_fail "echo foo bar 1>&2" -e "match:baz" 351c243e490SMarcel Moolenaar h_fail "echo foo bar 1>&2" -e "match:^bar" 352c243e490SMarcel Moolenaar} 353c243e490SMarcel Moolenaar 354c243e490SMarcel Moolenaaratf_test_case eflag_multiple 355c243e490SMarcel Moolenaareflag_multiple_head() 356c243e490SMarcel Moolenaar{ 357c243e490SMarcel Moolenaar atf_set "descr" "Tests for multiple occurrences of the -e option" 358c243e490SMarcel Moolenaar} 359c243e490SMarcel Moolenaareflag_multiple_body() 360c243e490SMarcel Moolenaar{ 361c243e490SMarcel Moolenaar h_pass "echo foo bar 1>&2" -e match:foo -e match:bar 362c243e490SMarcel Moolenaar h_pass "echo foo 1>&2; echo bar 1>&2" -e match:foo -e match:bar 363c243e490SMarcel Moolenaar h_fail "echo foo baz 1>&2" -e match:bar -e match:foo 364c243e490SMarcel Moolenaar h_fail "echo foo 1>&2; echo baz 1>&2" -e match:bar -e match:foo 365c243e490SMarcel Moolenaar} 366c243e490SMarcel Moolenaar 367c243e490SMarcel Moolenaaratf_test_case eflag_negated 368c243e490SMarcel Moolenaareflag_negated_head() 369c243e490SMarcel Moolenaar{ 370c243e490SMarcel Moolenaar atf_set "descr" "Tests for negated occurrences of the -e option" 371c243e490SMarcel Moolenaar} 372c243e490SMarcel Moolenaareflag_negated_body() 373c243e490SMarcel Moolenaar{ 374c243e490SMarcel Moolenaar h_fail "echo foo 1>&2" -e empty 375c243e490SMarcel Moolenaar h_pass "echo foo 1>&2" -e not-empty 376c243e490SMarcel Moolenaar 377c243e490SMarcel Moolenaar h_pass "echo foo bar 1>&2" -e match:foo 378c243e490SMarcel Moolenaar h_fail "echo foo bar 1>&2" -e not-match:foo 379c243e490SMarcel Moolenaar} 380c243e490SMarcel Moolenaar 381c243e490SMarcel Moolenaaratf_test_case stdin 382c243e490SMarcel Moolenaarstdin_head() 383c243e490SMarcel Moolenaar{ 384c243e490SMarcel Moolenaar atf_set "descr" "Tests that stdin is preserved" 385c243e490SMarcel Moolenaar} 386c243e490SMarcel Moolenaarstdin_body() 387c243e490SMarcel Moolenaar{ 388c243e490SMarcel Moolenaar echo "hello" | ${Atf_Check} -o match:"hello" cat || \ 389c243e490SMarcel Moolenaar atf_fail "atf-check does not seem to respect stdin" 390c243e490SMarcel Moolenaar} 391c243e490SMarcel Moolenaar 392*1a6a36a9SDag-Erling Smørgravatf_test_case unusual_umask 393*1a6a36a9SDag-Erling Smørgravunusual_umask_head() 394c243e490SMarcel Moolenaar{ 395*1a6a36a9SDag-Erling Smørgrav atf_set "descr" "Tests that atf-check doesn't care about unusual umasks" 396c243e490SMarcel Moolenaar} 397*1a6a36a9SDag-Erling Smørgravunusual_umask_body() 398c243e490SMarcel Moolenaar{ 399*1a6a36a9SDag-Erling Smørgrav for mask in 022 027 0222 0177 0777 ; do 400*1a6a36a9SDag-Erling Smørgrav umask $mask 401*1a6a36a9SDag-Erling Smørgrav ${Atf_Check} true || \ 402*1a6a36a9SDag-Erling Smørgrav atf_fail "atf-check failed with umask $mask" 403*1a6a36a9SDag-Erling Smørgrav done 404*1a6a36a9SDag-Erling Smørgrav umask 022 405c243e490SMarcel Moolenaar} 406c243e490SMarcel Moolenaar 407c243e490SMarcel Moolenaaratf_init_test_cases() 408c243e490SMarcel Moolenaar{ 409c243e490SMarcel Moolenaar atf_add_test_case sflag_eq_ne 410c243e490SMarcel Moolenaar atf_add_test_case sflag_exit 411c243e490SMarcel Moolenaar atf_add_test_case sflag_ignore 412c243e490SMarcel Moolenaar atf_add_test_case sflag_signal 413c243e490SMarcel Moolenaar 414c243e490SMarcel Moolenaar atf_add_test_case xflag 415c243e490SMarcel Moolenaar 416c243e490SMarcel Moolenaar atf_add_test_case oflag_empty 417c243e490SMarcel Moolenaar atf_add_test_case oflag_ignore 418c243e490SMarcel Moolenaar atf_add_test_case oflag_file 419c243e490SMarcel Moolenaar atf_add_test_case oflag_inline 420c243e490SMarcel Moolenaar atf_add_test_case oflag_match 421c243e490SMarcel Moolenaar atf_add_test_case oflag_save 422c243e490SMarcel Moolenaar atf_add_test_case oflag_multiple 423c243e490SMarcel Moolenaar atf_add_test_case oflag_negated 424c243e490SMarcel Moolenaar 425c243e490SMarcel Moolenaar atf_add_test_case eflag_empty 426c243e490SMarcel Moolenaar atf_add_test_case eflag_ignore 427c243e490SMarcel Moolenaar atf_add_test_case eflag_file 428c243e490SMarcel Moolenaar atf_add_test_case eflag_inline 429c243e490SMarcel Moolenaar atf_add_test_case eflag_match 430c243e490SMarcel Moolenaar atf_add_test_case eflag_save 431c243e490SMarcel Moolenaar atf_add_test_case eflag_multiple 432c243e490SMarcel Moolenaar atf_add_test_case eflag_negated 433c243e490SMarcel Moolenaar 434c243e490SMarcel Moolenaar atf_add_test_case stdin 435c243e490SMarcel Moolenaar 436*1a6a36a9SDag-Erling Smørgrav atf_add_test_case unusual_umask 437c243e490SMarcel Moolenaar} 438c243e490SMarcel Moolenaar 439c243e490SMarcel Moolenaar# vim: syntax=sh:expandtab:shiftwidth=4:softtabstop=4 440