xref: /freebsd/contrib/atf/atf-sh/misc_helpers.sh (revision f126890a)
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_not_equal_ok
143atf_check_not_equal_ok_head()
144{
145    atf_set "descr" "Helper test case for the t_atf_check test program"
146}
147atf_check_not_equal_ok_body()
148{
149    atf_check_not_equal a b
150}
151
152atf_test_case atf_check_not_equal_fail
153atf_check_not_equal_fail_head()
154{
155    atf_set "descr" "Helper test case for the t_atf_check test program"
156}
157atf_check_not_equal_fail_body()
158{
159    atf_check_not_equal a a
160}
161
162atf_test_case atf_check_not_equal_eval_ok
163atf_check_not_equal_eval_ok_head()
164{
165    atf_set "descr" "Helper test case for the t_atf_check test program"
166}
167atf_check_not_equal_eval_ok_body()
168{
169    x=a
170    y=b
171    atf_check_not_equal '${x}' '${y}'
172}
173
174atf_test_case atf_check_not_equal_eval_fail
175atf_check_not_equal_eval_fail_head()
176{
177    atf_set "descr" "Helper test case for the t_atf_check test program"
178}
179atf_check_not_equal_eval_fail_body()
180{
181    x=a
182    y=a
183    atf_check_not_equal '${x}' '${y}'
184}
185
186atf_test_case atf_check_flush_stdout
187atf_check_flush_stdout_head()
188{
189    atf_set "descr" "Helper test case for the t_atf_check test program"
190    atf_set "timeout" "30"
191}
192atf_check_flush_stdout_body()
193{
194    atf_check true
195    atf_check -s exit:1 false
196    touch "${CONTROL_FILE:-done}"
197    while :; do
198        sleep 1
199    done
200}
201
202# -------------------------------------------------------------------------
203# Helper tests for "t_config".
204# -------------------------------------------------------------------------
205
206atf_test_case config_get
207config_get_head()
208{
209    atf_set "descr" "Helper test case for the t_config test program"
210}
211config_get_body()
212{
213    if atf_config_has ${TEST_VARIABLE}; then
214        echo "${TEST_VARIABLE} = $(atf_config_get ${TEST_VARIABLE})"
215    fi
216}
217
218atf_test_case config_has
219config_has_head()
220{
221    atf_set "descr" "Helper test case for the t_config test program"
222}
223config_has_body()
224{
225    if atf_config_has ${TEST_VARIABLE}; then
226        echo "${TEST_VARIABLE} found"
227    else
228        echo "${TEST_VARIABLE} not found"
229    fi
230}
231
232# -------------------------------------------------------------------------
233# Helper tests for "t_normalize".
234# -------------------------------------------------------------------------
235
236atf_test_case normalize
237normalize_head()
238{
239    atf_set "descr" "Helper test case for the t_normalize test program"
240    atf_set "a.b" "test value 1"
241    atf_set "c-d" "test value 2"
242}
243normalize_body()
244{
245    echo "a.b: $(atf_get a.b)"
246    echo "c-d: $(atf_get c-d)"
247}
248
249# -------------------------------------------------------------------------
250# Helper tests for "t_tc".
251# -------------------------------------------------------------------------
252
253atf_test_case tc_pass_true
254tc_pass_true_head()
255{
256    atf_set "descr" "Helper test case for the t_tc test program"
257}
258tc_pass_true_body()
259{
260    true
261}
262
263atf_test_case tc_pass_false
264tc_pass_false_head()
265{
266    atf_set "descr" "Helper test case for the t_tc test program"
267}
268tc_pass_false_body()
269{
270    false
271}
272
273atf_test_case tc_pass_return_error
274tc_pass_return_error_head()
275{
276    atf_set "descr" "Helper test case for the t_tc test program"
277}
278tc_pass_return_error_body()
279{
280    return 1
281}
282
283atf_test_case tc_fail
284tc_fail_head()
285{
286    atf_set "descr" "Helper test case for the t_tc test program"
287}
288tc_fail_body()
289{
290    echo "An error" 1>&2
291    exit 1
292}
293
294atf_test_case tc_missing_body
295tc_missing_body_head()
296{
297    atf_set "descr" "Helper test case for the t_tc test program"
298}
299
300# -------------------------------------------------------------------------
301# Helper tests for "t_tp".
302# -------------------------------------------------------------------------
303
304atf_test_case tp_srcdir
305tp_srcdir_head()
306{
307    atf_set "descr" "Helper test case for the t_tp test program"
308}
309tp_srcdir_body()
310{
311    echo "Calling helper"
312    helper_subr || atf_fail "Could not call helper subroutine"
313}
314
315# -------------------------------------------------------------------------
316# Main.
317# -------------------------------------------------------------------------
318
319atf_init_test_cases()
320{
321    # Add helper tests for t_atf_check.
322    atf_add_test_case atf_check_info_ok
323    atf_add_test_case atf_check_info_fail
324    atf_add_test_case atf_check_expout_mismatch
325    atf_add_test_case atf_check_experr_mismatch
326    atf_add_test_case atf_check_null_stdout
327    atf_add_test_case atf_check_null_stderr
328    atf_add_test_case atf_check_equal_ok
329    atf_add_test_case atf_check_equal_fail
330    atf_add_test_case atf_check_equal_eval_ok
331    atf_add_test_case atf_check_equal_eval_fail
332    atf_add_test_case atf_check_not_equal_ok
333    atf_add_test_case atf_check_not_equal_fail
334    atf_add_test_case atf_check_not_equal_eval_ok
335    atf_add_test_case atf_check_not_equal_eval_fail
336    atf_add_test_case atf_check_flush_stdout
337
338    # Add helper tests for t_config.
339    atf_add_test_case config_get
340    atf_add_test_case config_has
341
342    # Add helper tests for t_normalize.
343    atf_add_test_case normalize
344
345    # Add helper tests for t_tc.
346    atf_add_test_case tc_pass_true
347    atf_add_test_case tc_pass_false
348    atf_add_test_case tc_pass_return_error
349    atf_add_test_case tc_fail
350    atf_add_test_case tc_missing_body
351
352    # Add helper tests for t_tp.
353    [ -f $(atf_get_srcdir)/subrs ] && . $(atf_get_srcdir)/subrs
354    atf_add_test_case tp_srcdir
355}
356
357# vim: syntax=sh:expandtab:shiftwidth=4:softtabstop=4
358