xref: /netbsd-src/external/bsd/atf/dist/atf-sh/misc_helpers.sh (revision d780102efefa02003390cc43ea410dbd0ebb4a85)
1edebbb8eSjmmv#
2edebbb8eSjmmv# Automated Testing Framework (atf)
3edebbb8eSjmmv#
4a551a20fSjmmv# Copyright (c) 2007 The NetBSD Foundation, Inc.
5edebbb8eSjmmv# All rights reserved.
6edebbb8eSjmmv#
7edebbb8eSjmmv# Redistribution and use in source and binary forms, with or without
8edebbb8eSjmmv# modification, are permitted provided that the following conditions
9edebbb8eSjmmv# are met:
10edebbb8eSjmmv# 1. Redistributions of source code must retain the above copyright
11edebbb8eSjmmv#    notice, this list of conditions and the following disclaimer.
12edebbb8eSjmmv# 2. Redistributions in binary form must reproduce the above copyright
13edebbb8eSjmmv#    notice, this list of conditions and the following disclaimer in the
14edebbb8eSjmmv#    documentation and/or other materials provided with the distribution.
15edebbb8eSjmmv#
16edebbb8eSjmmv# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND
17edebbb8eSjmmv# CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
18edebbb8eSjmmv# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
19edebbb8eSjmmv# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20edebbb8eSjmmv# IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY
21edebbb8eSjmmv# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22edebbb8eSjmmv# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
23edebbb8eSjmmv# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24edebbb8eSjmmv# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
25edebbb8eSjmmv# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
26edebbb8eSjmmv# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
27edebbb8eSjmmv# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28edebbb8eSjmmv#
29edebbb8eSjmmv
30edebbb8eSjmmv# -------------------------------------------------------------------------
31edebbb8eSjmmv# Helper tests for "t_atf_check".
32edebbb8eSjmmv# -------------------------------------------------------------------------
33edebbb8eSjmmv
34edebbb8eSjmmvatf_test_case atf_check_info_ok
35edebbb8eSjmmvatf_check_info_ok_head()
36edebbb8eSjmmv{
37edebbb8eSjmmv    atf_set "descr" "Helper test case for the t_atf_check test program"
38edebbb8eSjmmv}
39edebbb8eSjmmvatf_check_info_ok_body()
40edebbb8eSjmmv{
41edebbb8eSjmmv    atf_check -s eq:0 -o empty -e empty true
42edebbb8eSjmmv}
43edebbb8eSjmmv
44edebbb8eSjmmvatf_test_case atf_check_info_fail
45edebbb8eSjmmvatf_check_info_fail_head()
46edebbb8eSjmmv{
47edebbb8eSjmmv    atf_set "descr" "Helper test case for the t_atf_check test program"
48edebbb8eSjmmv}
49edebbb8eSjmmvatf_check_info_fail_body()
50edebbb8eSjmmv{
51edebbb8eSjmmv    # In Solaris, /usr/bin/false returns 255 rather than 1.  Use the
52edebbb8eSjmmv    # built-in version for the check.
53edebbb8eSjmmv    atf_check -s eq:1 -o empty -e empty sh -c "false"
54edebbb8eSjmmv}
55edebbb8eSjmmv
56edebbb8eSjmmvatf_test_case atf_check_expout_mismatch
57edebbb8eSjmmvatf_check_expout_mismatch_head()
58edebbb8eSjmmv{
59edebbb8eSjmmv    atf_set "descr" "Helper test case for the t_atf_check test program"
60edebbb8eSjmmv}
61edebbb8eSjmmvatf_check_expout_mismatch_body()
62edebbb8eSjmmv{
63edebbb8eSjmmv    cat >expout <<SECONDEOF
64edebbb8eSjmmvfoo
65edebbb8eSjmmvSECONDEOF
66edebbb8eSjmmv    atf_check -s eq:0 -o file:expout -e empty echo bar
67edebbb8eSjmmv}
68edebbb8eSjmmv
69edebbb8eSjmmvatf_test_case atf_check_experr_mismatch
70edebbb8eSjmmvatf_check_experr_mismatch_head()
71edebbb8eSjmmv{
72edebbb8eSjmmv    atf_set "descr" "Helper test case for the t_atf_check test program"
73edebbb8eSjmmv}
74edebbb8eSjmmvatf_check_experr_mismatch_body()
75edebbb8eSjmmv{
76edebbb8eSjmmv    cat >experr <<SECONDEOF
77edebbb8eSjmmvfoo
78edebbb8eSjmmvSECONDEOF
79edebbb8eSjmmv    atf_check -s eq:0 -o empty -e file:experr -x 'echo bar 1>&2'
80edebbb8eSjmmv}
81edebbb8eSjmmv
82edebbb8eSjmmvatf_test_case atf_check_null_stdout
83edebbb8eSjmmvatf_check_null_stdout_head()
84edebbb8eSjmmv{
85edebbb8eSjmmv    atf_set "descr" "Helper test case for the t_atf_check test program"
86edebbb8eSjmmv}
87edebbb8eSjmmvatf_check_null_stdout_body()
88edebbb8eSjmmv{
89edebbb8eSjmmv    atf_check -s eq:0 -o empty -e empty echo "These are the contents"
90edebbb8eSjmmv}
91edebbb8eSjmmv
92edebbb8eSjmmvatf_test_case atf_check_null_stderr
93edebbb8eSjmmvatf_check_null_stderr_head()
94edebbb8eSjmmv{
95edebbb8eSjmmv    atf_set "descr" "Helper test case for the t_atf_check test program"
96edebbb8eSjmmv}
97edebbb8eSjmmvatf_check_null_stderr_body()
98edebbb8eSjmmv{
99edebbb8eSjmmv    atf_check -s eq:0 -o empty -e empty -x 'echo "These are the contents" 1>&2'
100edebbb8eSjmmv}
101edebbb8eSjmmv
102edebbb8eSjmmvatf_test_case atf_check_equal_ok
103edebbb8eSjmmvatf_check_equal_ok_head()
104edebbb8eSjmmv{
105edebbb8eSjmmv    atf_set "descr" "Helper test case for the t_atf_check test program"
106edebbb8eSjmmv}
107edebbb8eSjmmvatf_check_equal_ok_body()
108edebbb8eSjmmv{
109edebbb8eSjmmv    atf_check_equal a a
110edebbb8eSjmmv}
111edebbb8eSjmmv
112edebbb8eSjmmvatf_test_case atf_check_equal_fail
113edebbb8eSjmmvatf_check_equal_fail_head()
114edebbb8eSjmmv{
115edebbb8eSjmmv    atf_set "descr" "Helper test case for the t_atf_check test program"
116edebbb8eSjmmv}
117edebbb8eSjmmvatf_check_equal_fail_body()
118edebbb8eSjmmv{
119edebbb8eSjmmv    atf_check_equal a b
120edebbb8eSjmmv}
121edebbb8eSjmmv
122edebbb8eSjmmvatf_test_case atf_check_equal_eval_ok
123edebbb8eSjmmvatf_check_equal_eval_ok_head()
124edebbb8eSjmmv{
125edebbb8eSjmmv    atf_set "descr" "Helper test case for the t_atf_check test program"
126edebbb8eSjmmv}
127edebbb8eSjmmvatf_check_equal_eval_ok_body()
128edebbb8eSjmmv{
129edebbb8eSjmmv    x=a
130edebbb8eSjmmv    y=a
131edebbb8eSjmmv    atf_check_equal '${x}' '${y}'
132edebbb8eSjmmv}
133edebbb8eSjmmv
134edebbb8eSjmmvatf_test_case atf_check_equal_eval_fail
135edebbb8eSjmmvatf_check_equal_eval_fail_head()
136edebbb8eSjmmv{
137edebbb8eSjmmv    atf_set "descr" "Helper test case for the t_atf_check test program"
138edebbb8eSjmmv}
139edebbb8eSjmmvatf_check_equal_eval_fail_body()
140edebbb8eSjmmv{
141edebbb8eSjmmv    x=a
142edebbb8eSjmmv    y=b
143edebbb8eSjmmv    atf_check_equal '${x}' '${y}'
144edebbb8eSjmmv}
145edebbb8eSjmmv
146*d780102eSjmmvatf_test_case atf_check_timeout
147*d780102eSjmmvatf_check_timeout_head()
148*d780102eSjmmv{
149*d780102eSjmmv    atf_set "descr" "Helper test case for the t_atf_check test program"
150*d780102eSjmmv    atf_set "timeout" 1
151*d780102eSjmmv}
152*d780102eSjmmvatf_check_timeout_body()
153*d780102eSjmmv{
154*d780102eSjmmv    atf_check true
155*d780102eSjmmv    atf_check sleep 42
156*d780102eSjmmv}
157*d780102eSjmmv
158edebbb8eSjmmv# -------------------------------------------------------------------------
159edebbb8eSjmmv# Helper tests for "t_config".
160edebbb8eSjmmv# -------------------------------------------------------------------------
161edebbb8eSjmmv
162edebbb8eSjmmvatf_test_case config_get
163edebbb8eSjmmvconfig_get_head()
164edebbb8eSjmmv{
165edebbb8eSjmmv    atf_set "descr" "Helper test case for the t_config test program"
166edebbb8eSjmmv}
167edebbb8eSjmmvconfig_get_body()
168edebbb8eSjmmv{
169edebbb8eSjmmv    if atf_config_has ${TEST_VARIABLE}; then
170edebbb8eSjmmv        echo "${TEST_VARIABLE} = $(atf_config_get ${TEST_VARIABLE})"
171edebbb8eSjmmv    fi
172edebbb8eSjmmv}
173edebbb8eSjmmv
174edebbb8eSjmmvatf_test_case config_has
175edebbb8eSjmmvconfig_has_head()
176edebbb8eSjmmv{
177edebbb8eSjmmv    atf_set "descr" "Helper test case for the t_config test program"
178edebbb8eSjmmv}
179edebbb8eSjmmvconfig_has_body()
180edebbb8eSjmmv{
181edebbb8eSjmmv    if atf_config_has ${TEST_VARIABLE}; then
182edebbb8eSjmmv        echo "${TEST_VARIABLE} found"
183edebbb8eSjmmv    else
184edebbb8eSjmmv        echo "${TEST_VARIABLE} not found"
185edebbb8eSjmmv    fi
186edebbb8eSjmmv}
187edebbb8eSjmmv
188edebbb8eSjmmv# -------------------------------------------------------------------------
189edebbb8eSjmmv# Helper tests for "t_normalize".
190edebbb8eSjmmv# -------------------------------------------------------------------------
191edebbb8eSjmmv
192edebbb8eSjmmvatf_test_case normalize
193edebbb8eSjmmvnormalize_head()
194edebbb8eSjmmv{
195edebbb8eSjmmv    atf_set "descr" "Helper test case for the t_normalize test program"
196edebbb8eSjmmv    atf_set "a.b" "test value 1"
197edebbb8eSjmmv    atf_set "c-d" "test value 2"
198edebbb8eSjmmv}
199edebbb8eSjmmvnormalize_body()
200edebbb8eSjmmv{
201edebbb8eSjmmv    echo "a.b: $(atf_get a.b)"
202edebbb8eSjmmv    echo "c-d: $(atf_get c-d)"
203edebbb8eSjmmv}
204edebbb8eSjmmv
205edebbb8eSjmmv# -------------------------------------------------------------------------
206edebbb8eSjmmv# Helper tests for "t_tc".
207edebbb8eSjmmv# -------------------------------------------------------------------------
208edebbb8eSjmmv
209edebbb8eSjmmvatf_test_case tc_pass_true
210edebbb8eSjmmvtc_pass_true_head()
211edebbb8eSjmmv{
212edebbb8eSjmmv    atf_set "descr" "Helper test case for the t_tc test program"
213edebbb8eSjmmv}
214edebbb8eSjmmvtc_pass_true_body()
215edebbb8eSjmmv{
216edebbb8eSjmmv    true
217edebbb8eSjmmv}
218edebbb8eSjmmv
219edebbb8eSjmmvatf_test_case tc_pass_false
220edebbb8eSjmmvtc_pass_false_head()
221edebbb8eSjmmv{
222edebbb8eSjmmv    atf_set "descr" "Helper test case for the t_tc test program"
223edebbb8eSjmmv}
224edebbb8eSjmmvtc_pass_false_body()
225edebbb8eSjmmv{
226edebbb8eSjmmv    false
227edebbb8eSjmmv}
228edebbb8eSjmmv
229895f502bSjmmvatf_test_case tc_pass_return_error
230895f502bSjmmvtc_pass_return_error_head()
231895f502bSjmmv{
232895f502bSjmmv    atf_set "descr" "Helper test case for the t_tc test program"
233895f502bSjmmv}
234895f502bSjmmvtc_pass_return_error_body()
235895f502bSjmmv{
236895f502bSjmmv    return 1
237895f502bSjmmv}
238895f502bSjmmv
239edebbb8eSjmmvatf_test_case tc_fail
240edebbb8eSjmmvtc_fail_head()
241edebbb8eSjmmv{
242edebbb8eSjmmv    atf_set "descr" "Helper test case for the t_tc test program"
243edebbb8eSjmmv}
244edebbb8eSjmmvtc_fail_body()
245edebbb8eSjmmv{
246edebbb8eSjmmv    echo "An error" 1>&2
247edebbb8eSjmmv    exit 1
248edebbb8eSjmmv}
249edebbb8eSjmmv
2505055cfd6Sjmmvatf_test_case tc_missing_body
2515055cfd6Sjmmvtc_missing_body_head()
2525055cfd6Sjmmv{
2535055cfd6Sjmmv    atf_set "descr" "Helper test case for the t_tc test program"
2545055cfd6Sjmmv}
2555055cfd6Sjmmv
256edebbb8eSjmmv# -------------------------------------------------------------------------
257edebbb8eSjmmv# Helper tests for "t_tp".
258edebbb8eSjmmv# -------------------------------------------------------------------------
259edebbb8eSjmmv
260edebbb8eSjmmvatf_test_case tp_srcdir
261edebbb8eSjmmvtp_srcdir_head()
262edebbb8eSjmmv{
263edebbb8eSjmmv    atf_set "descr" "Helper test case for the t_tp test program"
264edebbb8eSjmmv}
265edebbb8eSjmmvtp_srcdir_body()
266edebbb8eSjmmv{
267edebbb8eSjmmv    echo "Calling helper"
268edebbb8eSjmmv    helper_subr || atf_fail "Could not call helper subroutine"
269edebbb8eSjmmv}
270edebbb8eSjmmv
271edebbb8eSjmmv# -------------------------------------------------------------------------
272edebbb8eSjmmv# Main.
273edebbb8eSjmmv# -------------------------------------------------------------------------
274edebbb8eSjmmv
275edebbb8eSjmmvatf_init_test_cases()
276edebbb8eSjmmv{
277edebbb8eSjmmv    # Add helper tests for t_atf_check.
278edebbb8eSjmmv    atf_add_test_case atf_check_info_ok
279edebbb8eSjmmv    atf_add_test_case atf_check_info_fail
280edebbb8eSjmmv    atf_add_test_case atf_check_expout_mismatch
281edebbb8eSjmmv    atf_add_test_case atf_check_experr_mismatch
282edebbb8eSjmmv    atf_add_test_case atf_check_null_stdout
283edebbb8eSjmmv    atf_add_test_case atf_check_null_stderr
284edebbb8eSjmmv    atf_add_test_case atf_check_equal_ok
285edebbb8eSjmmv    atf_add_test_case atf_check_equal_fail
286edebbb8eSjmmv    atf_add_test_case atf_check_equal_eval_ok
287edebbb8eSjmmv    atf_add_test_case atf_check_equal_eval_fail
288*d780102eSjmmv    atf_add_test_case atf_check_timeout
289edebbb8eSjmmv
290edebbb8eSjmmv    # Add helper tests for t_config.
291edebbb8eSjmmv    atf_add_test_case config_get
292edebbb8eSjmmv    atf_add_test_case config_has
293edebbb8eSjmmv
294edebbb8eSjmmv    # Add helper tests for t_normalize.
295edebbb8eSjmmv    atf_add_test_case normalize
296edebbb8eSjmmv
297edebbb8eSjmmv    # Add helper tests for t_tc.
298edebbb8eSjmmv    atf_add_test_case tc_pass_true
299edebbb8eSjmmv    atf_add_test_case tc_pass_false
300895f502bSjmmv    atf_add_test_case tc_pass_return_error
301edebbb8eSjmmv    atf_add_test_case tc_fail
3025055cfd6Sjmmv    atf_add_test_case tc_missing_body
303edebbb8eSjmmv
304edebbb8eSjmmv    # Add helper tests for t_tp.
305edebbb8eSjmmv    [ -f $(atf_get_srcdir)/subrs ] && . $(atf_get_srcdir)/subrs
306edebbb8eSjmmv    atf_add_test_case tp_srcdir
307edebbb8eSjmmv}
308edebbb8eSjmmv
309edebbb8eSjmmv# vim: syntax=sh:expandtab:shiftwidth=4:softtabstop=4
310