xref: /freebsd/contrib/atf/atf-sh/misc_helpers.sh (revision a7623790fb345e6dc986dfd31df0ace115e6f2e4)
1# Copyright (c) 2007 The NetBSD Foundation, Inc.
2# All rights reserved.
3#
4# Redistribution and use in source and binary forms, with or without
5# modification, are permitted provided that the following conditions
6# are met:
7# 1. Redistributions of source code must retain the above copyright
8#    notice, this list of conditions and the following disclaimer.
9# 2. Redistributions in binary form must reproduce the above copyright
10#    notice, this list of conditions and the following disclaimer in the
11#    documentation and/or other materials provided with the distribution.
12#
13# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND
14# CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
15# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
16# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
17# IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY
18# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
20# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
21# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
22# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
23# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
24# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25
26# -------------------------------------------------------------------------
27# Helper tests for "t_atf_check".
28# -------------------------------------------------------------------------
29
30atf_test_case atf_check_info_ok
31atf_check_info_ok_head()
32{
33    atf_set "descr" "Helper test case for the t_atf_check test program"
34}
35atf_check_info_ok_body()
36{
37    atf_check -s eq:0 -o empty -e empty true
38}
39
40atf_test_case atf_check_info_fail
41atf_check_info_fail_head()
42{
43    atf_set "descr" "Helper test case for the t_atf_check test program"
44}
45atf_check_info_fail_body()
46{
47    # In Solaris, /usr/bin/false returns 255 rather than 1.  Use the
48    # built-in version for the check.
49    atf_check -s eq:1 -o empty -e empty sh -c "false"
50}
51
52atf_test_case atf_check_expout_mismatch
53atf_check_expout_mismatch_head()
54{
55    atf_set "descr" "Helper test case for the t_atf_check test program"
56}
57atf_check_expout_mismatch_body()
58{
59    cat >expout <<SECONDEOF
60foo
61SECONDEOF
62    atf_check -s eq:0 -o file:expout -e empty echo bar
63}
64
65atf_test_case atf_check_experr_mismatch
66atf_check_experr_mismatch_head()
67{
68    atf_set "descr" "Helper test case for the t_atf_check test program"
69}
70atf_check_experr_mismatch_body()
71{
72    cat >experr <<SECONDEOF
73foo
74SECONDEOF
75    atf_check -s eq:0 -o empty -e file:experr -x 'echo bar 1>&2'
76}
77
78atf_test_case atf_check_null_stdout
79atf_check_null_stdout_head()
80{
81    atf_set "descr" "Helper test case for the t_atf_check test program"
82}
83atf_check_null_stdout_body()
84{
85    atf_check -s eq:0 -o empty -e empty echo "These are the contents"
86}
87
88atf_test_case atf_check_null_stderr
89atf_check_null_stderr_head()
90{
91    atf_set "descr" "Helper test case for the t_atf_check test program"
92}
93atf_check_null_stderr_body()
94{
95    atf_check -s eq:0 -o empty -e empty -x 'echo "These are the contents" 1>&2'
96}
97
98atf_test_case atf_check_equal_ok
99atf_check_equal_ok_head()
100{
101    atf_set "descr" "Helper test case for the t_atf_check test program"
102}
103atf_check_equal_ok_body()
104{
105    atf_check_equal a a
106}
107
108atf_test_case atf_check_equal_fail
109atf_check_equal_fail_head()
110{
111    atf_set "descr" "Helper test case for the t_atf_check test program"
112}
113atf_check_equal_fail_body()
114{
115    atf_check_equal a b
116}
117
118atf_test_case atf_check_equal_eval_ok
119atf_check_equal_eval_ok_head()
120{
121    atf_set "descr" "Helper test case for the t_atf_check test program"
122}
123atf_check_equal_eval_ok_body()
124{
125    x=a
126    y=a
127    atf_check_equal '${x}' '${y}'
128}
129
130atf_test_case atf_check_equal_eval_fail
131atf_check_equal_eval_fail_head()
132{
133    atf_set "descr" "Helper test case for the t_atf_check test program"
134}
135atf_check_equal_eval_fail_body()
136{
137    x=a
138    y=b
139    atf_check_equal '${x}' '${y}'
140}
141
142atf_test_case atf_check_flush_stdout
143atf_check_flush_stdout_head()
144{
145    atf_set "descr" "Helper test case for the t_atf_check test program"
146    atf_set "timeout" "30"
147}
148atf_check_flush_stdout_body()
149{
150    atf_check true
151    atf_check -s exit:1 false
152    touch "${CONTROL_FILE:-done}"
153    while :; do
154        sleep 1
155    done
156}
157
158# -------------------------------------------------------------------------
159# Helper tests for "t_config".
160# -------------------------------------------------------------------------
161
162atf_test_case config_get
163config_get_head()
164{
165    atf_set "descr" "Helper test case for the t_config test program"
166}
167config_get_body()
168{
169    if atf_config_has ${TEST_VARIABLE}; then
170        echo "${TEST_VARIABLE} = $(atf_config_get ${TEST_VARIABLE})"
171    fi
172}
173
174atf_test_case config_has
175config_has_head()
176{
177    atf_set "descr" "Helper test case for the t_config test program"
178}
179config_has_body()
180{
181    if atf_config_has ${TEST_VARIABLE}; then
182        echo "${TEST_VARIABLE} found"
183    else
184        echo "${TEST_VARIABLE} not found"
185    fi
186}
187
188# -------------------------------------------------------------------------
189# Helper tests for "t_normalize".
190# -------------------------------------------------------------------------
191
192atf_test_case normalize
193normalize_head()
194{
195    atf_set "descr" "Helper test case for the t_normalize test program"
196    atf_set "a.b" "test value 1"
197    atf_set "c-d" "test value 2"
198}
199normalize_body()
200{
201    echo "a.b: $(atf_get a.b)"
202    echo "c-d: $(atf_get c-d)"
203}
204
205# -------------------------------------------------------------------------
206# Helper tests for "t_tc".
207# -------------------------------------------------------------------------
208
209atf_test_case tc_pass_true
210tc_pass_true_head()
211{
212    atf_set "descr" "Helper test case for the t_tc test program"
213}
214tc_pass_true_body()
215{
216    true
217}
218
219atf_test_case tc_pass_false
220tc_pass_false_head()
221{
222    atf_set "descr" "Helper test case for the t_tc test program"
223}
224tc_pass_false_body()
225{
226    false
227}
228
229atf_test_case tc_pass_return_error
230tc_pass_return_error_head()
231{
232    atf_set "descr" "Helper test case for the t_tc test program"
233}
234tc_pass_return_error_body()
235{
236    return 1
237}
238
239atf_test_case tc_fail
240tc_fail_head()
241{
242    atf_set "descr" "Helper test case for the t_tc test program"
243}
244tc_fail_body()
245{
246    echo "An error" 1>&2
247    exit 1
248}
249
250atf_test_case tc_missing_body
251tc_missing_body_head()
252{
253    atf_set "descr" "Helper test case for the t_tc test program"
254}
255
256# -------------------------------------------------------------------------
257# Helper tests for "t_tp".
258# -------------------------------------------------------------------------
259
260atf_test_case tp_srcdir
261tp_srcdir_head()
262{
263    atf_set "descr" "Helper test case for the t_tp test program"
264}
265tp_srcdir_body()
266{
267    echo "Calling helper"
268    helper_subr || atf_fail "Could not call helper subroutine"
269}
270
271# -------------------------------------------------------------------------
272# Main.
273# -------------------------------------------------------------------------
274
275atf_init_test_cases()
276{
277    # Add helper tests for t_atf_check.
278    atf_add_test_case atf_check_info_ok
279    atf_add_test_case atf_check_info_fail
280    atf_add_test_case atf_check_expout_mismatch
281    atf_add_test_case atf_check_experr_mismatch
282    atf_add_test_case atf_check_null_stdout
283    atf_add_test_case atf_check_null_stderr
284    atf_add_test_case atf_check_equal_ok
285    atf_add_test_case atf_check_equal_fail
286    atf_add_test_case atf_check_equal_eval_ok
287    atf_add_test_case atf_check_equal_eval_fail
288    atf_add_test_case atf_check_flush_stdout
289
290    # Add helper tests for t_config.
291    atf_add_test_case config_get
292    atf_add_test_case config_has
293
294    # Add helper tests for t_normalize.
295    atf_add_test_case normalize
296
297    # Add helper tests for t_tc.
298    atf_add_test_case tc_pass_true
299    atf_add_test_case tc_pass_false
300    atf_add_test_case tc_pass_return_error
301    atf_add_test_case tc_fail
302    atf_add_test_case tc_missing_body
303
304    # Add helper tests for t_tp.
305    [ -f $(atf_get_srcdir)/subrs ] && . $(atf_get_srcdir)/subrs
306    atf_add_test_case tp_srcdir
307}
308
309# vim: syntax=sh:expandtab:shiftwidth=4:softtabstop=4
310