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