xref: /freebsd/contrib/atf/atf-sh/misc_helpers.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# -------------------------------------------------------------------------
27c243e490SMarcel Moolenaar# Helper tests for "t_atf_check".
28c243e490SMarcel Moolenaar# -------------------------------------------------------------------------
29c243e490SMarcel Moolenaar
30c243e490SMarcel Moolenaaratf_test_case atf_check_info_ok
31c243e490SMarcel Moolenaaratf_check_info_ok_head()
32c243e490SMarcel Moolenaar{
33c243e490SMarcel Moolenaar    atf_set "descr" "Helper test case for the t_atf_check test program"
34c243e490SMarcel Moolenaar}
35c243e490SMarcel Moolenaaratf_check_info_ok_body()
36c243e490SMarcel Moolenaar{
37c243e490SMarcel Moolenaar    atf_check -s eq:0 -o empty -e empty true
38c243e490SMarcel Moolenaar}
39c243e490SMarcel Moolenaar
40c243e490SMarcel Moolenaaratf_test_case atf_check_info_fail
41c243e490SMarcel Moolenaaratf_check_info_fail_head()
42c243e490SMarcel Moolenaar{
43c243e490SMarcel Moolenaar    atf_set "descr" "Helper test case for the t_atf_check test program"
44c243e490SMarcel Moolenaar}
45c243e490SMarcel Moolenaaratf_check_info_fail_body()
46c243e490SMarcel Moolenaar{
47c243e490SMarcel Moolenaar    # In Solaris, /usr/bin/false returns 255 rather than 1.  Use the
48c243e490SMarcel Moolenaar    # built-in version for the check.
49c243e490SMarcel Moolenaar    atf_check -s eq:1 -o empty -e empty sh -c "false"
50c243e490SMarcel Moolenaar}
51c243e490SMarcel Moolenaar
52c243e490SMarcel Moolenaaratf_test_case atf_check_expout_mismatch
53c243e490SMarcel Moolenaaratf_check_expout_mismatch_head()
54c243e490SMarcel Moolenaar{
55c243e490SMarcel Moolenaar    atf_set "descr" "Helper test case for the t_atf_check test program"
56c243e490SMarcel Moolenaar}
57c243e490SMarcel Moolenaaratf_check_expout_mismatch_body()
58c243e490SMarcel Moolenaar{
59c243e490SMarcel Moolenaar    cat >expout <<SECONDEOF
60c243e490SMarcel Moolenaarfoo
61c243e490SMarcel MoolenaarSECONDEOF
62c243e490SMarcel Moolenaar    atf_check -s eq:0 -o file:expout -e empty echo bar
63c243e490SMarcel Moolenaar}
64c243e490SMarcel Moolenaar
65c243e490SMarcel Moolenaaratf_test_case atf_check_experr_mismatch
66c243e490SMarcel Moolenaaratf_check_experr_mismatch_head()
67c243e490SMarcel Moolenaar{
68c243e490SMarcel Moolenaar    atf_set "descr" "Helper test case for the t_atf_check test program"
69c243e490SMarcel Moolenaar}
70c243e490SMarcel Moolenaaratf_check_experr_mismatch_body()
71c243e490SMarcel Moolenaar{
72c243e490SMarcel Moolenaar    cat >experr <<SECONDEOF
73c243e490SMarcel Moolenaarfoo
74c243e490SMarcel MoolenaarSECONDEOF
75c243e490SMarcel Moolenaar    atf_check -s eq:0 -o empty -e file:experr -x 'echo bar 1>&2'
76c243e490SMarcel Moolenaar}
77c243e490SMarcel Moolenaar
78c243e490SMarcel Moolenaaratf_test_case atf_check_null_stdout
79c243e490SMarcel Moolenaaratf_check_null_stdout_head()
80c243e490SMarcel Moolenaar{
81c243e490SMarcel Moolenaar    atf_set "descr" "Helper test case for the t_atf_check test program"
82c243e490SMarcel Moolenaar}
83c243e490SMarcel Moolenaaratf_check_null_stdout_body()
84c243e490SMarcel Moolenaar{
85c243e490SMarcel Moolenaar    atf_check -s eq:0 -o empty -e empty echo "These are the contents"
86c243e490SMarcel Moolenaar}
87c243e490SMarcel Moolenaar
88c243e490SMarcel Moolenaaratf_test_case atf_check_null_stderr
89c243e490SMarcel Moolenaaratf_check_null_stderr_head()
90c243e490SMarcel Moolenaar{
91c243e490SMarcel Moolenaar    atf_set "descr" "Helper test case for the t_atf_check test program"
92c243e490SMarcel Moolenaar}
93c243e490SMarcel Moolenaaratf_check_null_stderr_body()
94c243e490SMarcel Moolenaar{
95c243e490SMarcel Moolenaar    atf_check -s eq:0 -o empty -e empty -x 'echo "These are the contents" 1>&2'
96c243e490SMarcel Moolenaar}
97c243e490SMarcel Moolenaar
98c243e490SMarcel Moolenaaratf_test_case atf_check_equal_ok
99c243e490SMarcel Moolenaaratf_check_equal_ok_head()
100c243e490SMarcel Moolenaar{
101c243e490SMarcel Moolenaar    atf_set "descr" "Helper test case for the t_atf_check test program"
102c243e490SMarcel Moolenaar}
103c243e490SMarcel Moolenaaratf_check_equal_ok_body()
104c243e490SMarcel Moolenaar{
105c243e490SMarcel Moolenaar    atf_check_equal a a
106c243e490SMarcel Moolenaar}
107c243e490SMarcel Moolenaar
108c243e490SMarcel Moolenaaratf_test_case atf_check_equal_fail
109c243e490SMarcel Moolenaaratf_check_equal_fail_head()
110c243e490SMarcel Moolenaar{
111c243e490SMarcel Moolenaar    atf_set "descr" "Helper test case for the t_atf_check test program"
112c243e490SMarcel Moolenaar}
113c243e490SMarcel Moolenaaratf_check_equal_fail_body()
114c243e490SMarcel Moolenaar{
115c243e490SMarcel Moolenaar    atf_check_equal a b
116c243e490SMarcel Moolenaar}
117c243e490SMarcel Moolenaar
118c243e490SMarcel Moolenaaratf_test_case atf_check_equal_eval_ok
119c243e490SMarcel Moolenaaratf_check_equal_eval_ok_head()
120c243e490SMarcel Moolenaar{
121c243e490SMarcel Moolenaar    atf_set "descr" "Helper test case for the t_atf_check test program"
122c243e490SMarcel Moolenaar}
123c243e490SMarcel Moolenaaratf_check_equal_eval_ok_body()
124c243e490SMarcel Moolenaar{
125c243e490SMarcel Moolenaar    x=a
126c243e490SMarcel Moolenaar    y=a
127c243e490SMarcel Moolenaar    atf_check_equal '${x}' '${y}'
128c243e490SMarcel Moolenaar}
129c243e490SMarcel Moolenaar
130c243e490SMarcel Moolenaaratf_test_case atf_check_equal_eval_fail
131c243e490SMarcel Moolenaaratf_check_equal_eval_fail_head()
132c243e490SMarcel Moolenaar{
133c243e490SMarcel Moolenaar    atf_set "descr" "Helper test case for the t_atf_check test program"
134c243e490SMarcel Moolenaar}
135c243e490SMarcel Moolenaaratf_check_equal_eval_fail_body()
136c243e490SMarcel Moolenaar{
137c243e490SMarcel Moolenaar    x=a
138c243e490SMarcel Moolenaar    y=b
139c243e490SMarcel Moolenaar    atf_check_equal '${x}' '${y}'
140c243e490SMarcel Moolenaar}
141c243e490SMarcel Moolenaar
142*c203bd70SAlex Richardsonatf_test_case atf_check_not_equal_ok
143*c203bd70SAlex Richardsonatf_check_not_equal_ok_head()
144*c203bd70SAlex Richardson{
145*c203bd70SAlex Richardson    atf_set "descr" "Helper test case for the t_atf_check test program"
146*c203bd70SAlex Richardson}
147*c203bd70SAlex Richardsonatf_check_not_equal_ok_body()
148*c203bd70SAlex Richardson{
149*c203bd70SAlex Richardson    atf_check_not_equal a b
150*c203bd70SAlex Richardson}
151*c203bd70SAlex Richardson
152*c203bd70SAlex Richardsonatf_test_case atf_check_not_equal_fail
153*c203bd70SAlex Richardsonatf_check_not_equal_fail_head()
154*c203bd70SAlex Richardson{
155*c203bd70SAlex Richardson    atf_set "descr" "Helper test case for the t_atf_check test program"
156*c203bd70SAlex Richardson}
157*c203bd70SAlex Richardsonatf_check_not_equal_fail_body()
158*c203bd70SAlex Richardson{
159*c203bd70SAlex Richardson    atf_check_not_equal a a
160*c203bd70SAlex Richardson}
161*c203bd70SAlex Richardson
162*c203bd70SAlex Richardsonatf_test_case atf_check_not_equal_eval_ok
163*c203bd70SAlex Richardsonatf_check_not_equal_eval_ok_head()
164*c203bd70SAlex Richardson{
165*c203bd70SAlex Richardson    atf_set "descr" "Helper test case for the t_atf_check test program"
166*c203bd70SAlex Richardson}
167*c203bd70SAlex Richardsonatf_check_not_equal_eval_ok_body()
168*c203bd70SAlex Richardson{
169*c203bd70SAlex Richardson    x=a
170*c203bd70SAlex Richardson    y=b
171*c203bd70SAlex Richardson    atf_check_not_equal '${x}' '${y}'
172*c203bd70SAlex Richardson}
173*c203bd70SAlex Richardson
174*c203bd70SAlex Richardsonatf_test_case atf_check_not_equal_eval_fail
175*c203bd70SAlex Richardsonatf_check_not_equal_eval_fail_head()
176*c203bd70SAlex Richardson{
177*c203bd70SAlex Richardson    atf_set "descr" "Helper test case for the t_atf_check test program"
178*c203bd70SAlex Richardson}
179*c203bd70SAlex Richardsonatf_check_not_equal_eval_fail_body()
180*c203bd70SAlex Richardson{
181*c203bd70SAlex Richardson    x=a
182*c203bd70SAlex Richardson    y=a
183*c203bd70SAlex Richardson    atf_check_not_equal '${x}' '${y}'
184*c203bd70SAlex Richardson}
185*c203bd70SAlex Richardson
186da3067c1SEnji Cooperatf_test_case atf_check_flush_stdout
187da3067c1SEnji Cooperatf_check_flush_stdout_head()
188a18eacbeSJulio Merino{
189a18eacbeSJulio Merino    atf_set "descr" "Helper test case for the t_atf_check test program"
190da3067c1SEnji Cooper    atf_set "timeout" "30"
191a18eacbeSJulio Merino}
192da3067c1SEnji Cooperatf_check_flush_stdout_body()
193a18eacbeSJulio Merino{
194a18eacbeSJulio Merino    atf_check true
195da3067c1SEnji Cooper    atf_check -s exit:1 false
196da3067c1SEnji Cooper    touch "${CONTROL_FILE:-done}"
197da3067c1SEnji Cooper    while :; do
198da3067c1SEnji Cooper        sleep 1
199da3067c1SEnji Cooper    done
200a18eacbeSJulio Merino}
201a18eacbeSJulio Merino
202c243e490SMarcel Moolenaar# -------------------------------------------------------------------------
203c243e490SMarcel Moolenaar# Helper tests for "t_config".
204c243e490SMarcel Moolenaar# -------------------------------------------------------------------------
205c243e490SMarcel Moolenaar
206c243e490SMarcel Moolenaaratf_test_case config_get
207c243e490SMarcel Moolenaarconfig_get_head()
208c243e490SMarcel Moolenaar{
209c243e490SMarcel Moolenaar    atf_set "descr" "Helper test case for the t_config test program"
210c243e490SMarcel Moolenaar}
211c243e490SMarcel Moolenaarconfig_get_body()
212c243e490SMarcel Moolenaar{
213c243e490SMarcel Moolenaar    if atf_config_has ${TEST_VARIABLE}; then
214c243e490SMarcel Moolenaar        echo "${TEST_VARIABLE} = $(atf_config_get ${TEST_VARIABLE})"
215c243e490SMarcel Moolenaar    fi
216c243e490SMarcel Moolenaar}
217c243e490SMarcel Moolenaar
218c243e490SMarcel Moolenaaratf_test_case config_has
219c243e490SMarcel Moolenaarconfig_has_head()
220c243e490SMarcel Moolenaar{
221c243e490SMarcel Moolenaar    atf_set "descr" "Helper test case for the t_config test program"
222c243e490SMarcel Moolenaar}
223c243e490SMarcel Moolenaarconfig_has_body()
224c243e490SMarcel Moolenaar{
225c243e490SMarcel Moolenaar    if atf_config_has ${TEST_VARIABLE}; then
226c243e490SMarcel Moolenaar        echo "${TEST_VARIABLE} found"
227c243e490SMarcel Moolenaar    else
228c243e490SMarcel Moolenaar        echo "${TEST_VARIABLE} not found"
229c243e490SMarcel Moolenaar    fi
230c243e490SMarcel Moolenaar}
231c243e490SMarcel Moolenaar
232c243e490SMarcel Moolenaar# -------------------------------------------------------------------------
233c243e490SMarcel Moolenaar# Helper tests for "t_normalize".
234c243e490SMarcel Moolenaar# -------------------------------------------------------------------------
235c243e490SMarcel Moolenaar
236c243e490SMarcel Moolenaaratf_test_case normalize
237c243e490SMarcel Moolenaarnormalize_head()
238c243e490SMarcel Moolenaar{
239c243e490SMarcel Moolenaar    atf_set "descr" "Helper test case for the t_normalize test program"
240c243e490SMarcel Moolenaar    atf_set "a.b" "test value 1"
241c243e490SMarcel Moolenaar    atf_set "c-d" "test value 2"
242c243e490SMarcel Moolenaar}
243c243e490SMarcel Moolenaarnormalize_body()
244c243e490SMarcel Moolenaar{
245c243e490SMarcel Moolenaar    echo "a.b: $(atf_get a.b)"
246c243e490SMarcel Moolenaar    echo "c-d: $(atf_get c-d)"
247c243e490SMarcel Moolenaar}
248c243e490SMarcel Moolenaar
249c243e490SMarcel Moolenaar# -------------------------------------------------------------------------
250c243e490SMarcel Moolenaar# Helper tests for "t_tc".
251c243e490SMarcel Moolenaar# -------------------------------------------------------------------------
252c243e490SMarcel Moolenaar
253c243e490SMarcel Moolenaaratf_test_case tc_pass_true
254c243e490SMarcel Moolenaartc_pass_true_head()
255c243e490SMarcel Moolenaar{
256c243e490SMarcel Moolenaar    atf_set "descr" "Helper test case for the t_tc test program"
257c243e490SMarcel Moolenaar}
258c243e490SMarcel Moolenaartc_pass_true_body()
259c243e490SMarcel Moolenaar{
260c243e490SMarcel Moolenaar    true
261c243e490SMarcel Moolenaar}
262c243e490SMarcel Moolenaar
263c243e490SMarcel Moolenaaratf_test_case tc_pass_false
264c243e490SMarcel Moolenaartc_pass_false_head()
265c243e490SMarcel Moolenaar{
266c243e490SMarcel Moolenaar    atf_set "descr" "Helper test case for the t_tc test program"
267c243e490SMarcel Moolenaar}
268c243e490SMarcel Moolenaartc_pass_false_body()
269c243e490SMarcel Moolenaar{
270c243e490SMarcel Moolenaar    false
271c243e490SMarcel Moolenaar}
272c243e490SMarcel Moolenaar
273c243e490SMarcel Moolenaaratf_test_case tc_pass_return_error
274c243e490SMarcel Moolenaartc_pass_return_error_head()
275c243e490SMarcel Moolenaar{
276c243e490SMarcel Moolenaar    atf_set "descr" "Helper test case for the t_tc test program"
277c243e490SMarcel Moolenaar}
278c243e490SMarcel Moolenaartc_pass_return_error_body()
279c243e490SMarcel Moolenaar{
280c243e490SMarcel Moolenaar    return 1
281c243e490SMarcel Moolenaar}
282c243e490SMarcel Moolenaar
283c243e490SMarcel Moolenaaratf_test_case tc_fail
284c243e490SMarcel Moolenaartc_fail_head()
285c243e490SMarcel Moolenaar{
286c243e490SMarcel Moolenaar    atf_set "descr" "Helper test case for the t_tc test program"
287c243e490SMarcel Moolenaar}
288c243e490SMarcel Moolenaartc_fail_body()
289c243e490SMarcel Moolenaar{
290c243e490SMarcel Moolenaar    echo "An error" 1>&2
291c243e490SMarcel Moolenaar    exit 1
292c243e490SMarcel Moolenaar}
293c243e490SMarcel Moolenaar
294c243e490SMarcel Moolenaaratf_test_case tc_missing_body
295c243e490SMarcel Moolenaartc_missing_body_head()
296c243e490SMarcel Moolenaar{
297c243e490SMarcel Moolenaar    atf_set "descr" "Helper test case for the t_tc test program"
298c243e490SMarcel Moolenaar}
299c243e490SMarcel Moolenaar
300c243e490SMarcel Moolenaar# -------------------------------------------------------------------------
301c243e490SMarcel Moolenaar# Helper tests for "t_tp".
302c243e490SMarcel Moolenaar# -------------------------------------------------------------------------
303c243e490SMarcel Moolenaar
304c243e490SMarcel Moolenaaratf_test_case tp_srcdir
305c243e490SMarcel Moolenaartp_srcdir_head()
306c243e490SMarcel Moolenaar{
307c243e490SMarcel Moolenaar    atf_set "descr" "Helper test case for the t_tp test program"
308c243e490SMarcel Moolenaar}
309c243e490SMarcel Moolenaartp_srcdir_body()
310c243e490SMarcel Moolenaar{
311c243e490SMarcel Moolenaar    echo "Calling helper"
312c243e490SMarcel Moolenaar    helper_subr || atf_fail "Could not call helper subroutine"
313c243e490SMarcel Moolenaar}
314c243e490SMarcel Moolenaar
315c243e490SMarcel Moolenaar# -------------------------------------------------------------------------
316c243e490SMarcel Moolenaar# Main.
317c243e490SMarcel Moolenaar# -------------------------------------------------------------------------
318c243e490SMarcel Moolenaar
319c243e490SMarcel Moolenaaratf_init_test_cases()
320c243e490SMarcel Moolenaar{
321c243e490SMarcel Moolenaar    # Add helper tests for t_atf_check.
322c243e490SMarcel Moolenaar    atf_add_test_case atf_check_info_ok
323c243e490SMarcel Moolenaar    atf_add_test_case atf_check_info_fail
324c243e490SMarcel Moolenaar    atf_add_test_case atf_check_expout_mismatch
325c243e490SMarcel Moolenaar    atf_add_test_case atf_check_experr_mismatch
326c243e490SMarcel Moolenaar    atf_add_test_case atf_check_null_stdout
327c243e490SMarcel Moolenaar    atf_add_test_case atf_check_null_stderr
328c243e490SMarcel Moolenaar    atf_add_test_case atf_check_equal_ok
329c243e490SMarcel Moolenaar    atf_add_test_case atf_check_equal_fail
330c243e490SMarcel Moolenaar    atf_add_test_case atf_check_equal_eval_ok
331c243e490SMarcel Moolenaar    atf_add_test_case atf_check_equal_eval_fail
332*c203bd70SAlex Richardson    atf_add_test_case atf_check_not_equal_ok
333*c203bd70SAlex Richardson    atf_add_test_case atf_check_not_equal_fail
334*c203bd70SAlex Richardson    atf_add_test_case atf_check_not_equal_eval_ok
335*c203bd70SAlex Richardson    atf_add_test_case atf_check_not_equal_eval_fail
336da3067c1SEnji Cooper    atf_add_test_case atf_check_flush_stdout
337c243e490SMarcel Moolenaar
338c243e490SMarcel Moolenaar    # Add helper tests for t_config.
339c243e490SMarcel Moolenaar    atf_add_test_case config_get
340c243e490SMarcel Moolenaar    atf_add_test_case config_has
341c243e490SMarcel Moolenaar
342c243e490SMarcel Moolenaar    # Add helper tests for t_normalize.
343c243e490SMarcel Moolenaar    atf_add_test_case normalize
344c243e490SMarcel Moolenaar
345c243e490SMarcel Moolenaar    # Add helper tests for t_tc.
346c243e490SMarcel Moolenaar    atf_add_test_case tc_pass_true
347c243e490SMarcel Moolenaar    atf_add_test_case tc_pass_false
348c243e490SMarcel Moolenaar    atf_add_test_case tc_pass_return_error
349c243e490SMarcel Moolenaar    atf_add_test_case tc_fail
350c243e490SMarcel Moolenaar    atf_add_test_case tc_missing_body
351c243e490SMarcel Moolenaar
352c243e490SMarcel Moolenaar    # Add helper tests for t_tp.
353c243e490SMarcel Moolenaar    [ -f $(atf_get_srcdir)/subrs ] && . $(atf_get_srcdir)/subrs
354c243e490SMarcel Moolenaar    atf_add_test_case tp_srcdir
355c243e490SMarcel Moolenaar}
356c243e490SMarcel Moolenaar
357c243e490SMarcel Moolenaar# vim: syntax=sh:expandtab:shiftwidth=4:softtabstop=4
358