xref: /freebsd/contrib/atf/atf-sh/misc_helpers.sh (revision 0e97acdf58fe27b09c4824a474b0344daf997c5f)
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_timeout
143atf_check_timeout_head()
144{
145    atf_set "descr" "Helper test case for the t_atf_check test program"
146    atf_set "timeout" 1
147}
148atf_check_timeout_body()
149{
150    atf_check true
151    atf_check sleep 42
152}
153
154# -------------------------------------------------------------------------
155# Helper tests for "t_config".
156# -------------------------------------------------------------------------
157
158atf_test_case config_get
159config_get_head()
160{
161    atf_set "descr" "Helper test case for the t_config test program"
162}
163config_get_body()
164{
165    if atf_config_has ${TEST_VARIABLE}; then
166        echo "${TEST_VARIABLE} = $(atf_config_get ${TEST_VARIABLE})"
167    fi
168}
169
170atf_test_case config_has
171config_has_head()
172{
173    atf_set "descr" "Helper test case for the t_config test program"
174}
175config_has_body()
176{
177    if atf_config_has ${TEST_VARIABLE}; then
178        echo "${TEST_VARIABLE} found"
179    else
180        echo "${TEST_VARIABLE} not found"
181    fi
182}
183
184# -------------------------------------------------------------------------
185# Helper tests for "t_normalize".
186# -------------------------------------------------------------------------
187
188atf_test_case normalize
189normalize_head()
190{
191    atf_set "descr" "Helper test case for the t_normalize test program"
192    atf_set "a.b" "test value 1"
193    atf_set "c-d" "test value 2"
194}
195normalize_body()
196{
197    echo "a.b: $(atf_get a.b)"
198    echo "c-d: $(atf_get c-d)"
199}
200
201# -------------------------------------------------------------------------
202# Helper tests for "t_tc".
203# -------------------------------------------------------------------------
204
205atf_test_case tc_pass_true
206tc_pass_true_head()
207{
208    atf_set "descr" "Helper test case for the t_tc test program"
209}
210tc_pass_true_body()
211{
212    true
213}
214
215atf_test_case tc_pass_false
216tc_pass_false_head()
217{
218    atf_set "descr" "Helper test case for the t_tc test program"
219}
220tc_pass_false_body()
221{
222    false
223}
224
225atf_test_case tc_pass_return_error
226tc_pass_return_error_head()
227{
228    atf_set "descr" "Helper test case for the t_tc test program"
229}
230tc_pass_return_error_body()
231{
232    return 1
233}
234
235atf_test_case tc_fail
236tc_fail_head()
237{
238    atf_set "descr" "Helper test case for the t_tc test program"
239}
240tc_fail_body()
241{
242    echo "An error" 1>&2
243    exit 1
244}
245
246atf_test_case tc_missing_body
247tc_missing_body_head()
248{
249    atf_set "descr" "Helper test case for the t_tc test program"
250}
251
252# -------------------------------------------------------------------------
253# Helper tests for "t_tp".
254# -------------------------------------------------------------------------
255
256atf_test_case tp_srcdir
257tp_srcdir_head()
258{
259    atf_set "descr" "Helper test case for the t_tp test program"
260}
261tp_srcdir_body()
262{
263    echo "Calling helper"
264    helper_subr || atf_fail "Could not call helper subroutine"
265}
266
267# -------------------------------------------------------------------------
268# Main.
269# -------------------------------------------------------------------------
270
271atf_init_test_cases()
272{
273    # Add helper tests for t_atf_check.
274    atf_add_test_case atf_check_info_ok
275    atf_add_test_case atf_check_info_fail
276    atf_add_test_case atf_check_expout_mismatch
277    atf_add_test_case atf_check_experr_mismatch
278    atf_add_test_case atf_check_null_stdout
279    atf_add_test_case atf_check_null_stderr
280    atf_add_test_case atf_check_equal_ok
281    atf_add_test_case atf_check_equal_fail
282    atf_add_test_case atf_check_equal_eval_ok
283    atf_add_test_case atf_check_equal_eval_fail
284    atf_add_test_case atf_check_timeout
285
286    # Add helper tests for t_config.
287    atf_add_test_case config_get
288    atf_add_test_case config_has
289
290    # Add helper tests for t_normalize.
291    atf_add_test_case normalize
292
293    # Add helper tests for t_tc.
294    atf_add_test_case tc_pass_true
295    atf_add_test_case tc_pass_false
296    atf_add_test_case tc_pass_return_error
297    atf_add_test_case tc_fail
298    atf_add_test_case tc_missing_body
299
300    # Add helper tests for t_tp.
301    [ -f $(atf_get_srcdir)/subrs ] && . $(atf_get_srcdir)/subrs
302    atf_add_test_case tp_srcdir
303}
304
305# vim: syntax=sh:expandtab:shiftwidth=4:softtabstop=4
306