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