xref: /freebsd/contrib/atf/atf-sh/atf_check_test.sh (revision c203bd70b5957f85616424b6fa374479372d06e3)
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