xref: /freebsd/contrib/atf/atf-sh/atf-check_test.sh (revision 1a6a36a98ad5dc86862541b91686b00cf88e9f76)
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