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