xref: /netbsd-src/external/bsd/atf/dist/test-programs/sh_helpers.sh (revision 0659fc670c1f32aa49ff1d817af283a035107f2d)
1edebbb8eSjmmv#
2edebbb8eSjmmv# Automated Testing Framework (atf)
3edebbb8eSjmmv#
4*a551a20fSjmmv# 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_cleanup".
32edebbb8eSjmmv# -------------------------------------------------------------------------
33edebbb8eSjmmv
34edebbb8eSjmmvatf_test_case cleanup_pass cleanup
35edebbb8eSjmmvcleanup_pass_head()
36edebbb8eSjmmv{
37edebbb8eSjmmv    atf_set "descr" "Helper test case for the t_cleanup test program"
38edebbb8eSjmmv}
39edebbb8eSjmmvcleanup_pass_body()
40edebbb8eSjmmv{
41edebbb8eSjmmv    touch $(atf_config_get tmpfile)
42edebbb8eSjmmv}
43edebbb8eSjmmvcleanup_pass_cleanup()
44edebbb8eSjmmv{
45edebbb8eSjmmv    if [ $(atf_config_get cleanup no) = yes ]; then
46edebbb8eSjmmv        rm $(atf_config_get tmpfile)
47edebbb8eSjmmv    fi
48edebbb8eSjmmv}
49edebbb8eSjmmv
50edebbb8eSjmmvatf_test_case cleanup_fail cleanup
51edebbb8eSjmmvcleanup_fail_head()
52edebbb8eSjmmv{
53edebbb8eSjmmv    atf_set "descr" "Helper test case for the t_cleanup test program"
54edebbb8eSjmmv}
55edebbb8eSjmmvcleanup_fail_body()
56edebbb8eSjmmv{
57edebbb8eSjmmv    touch $(atf_config_get tmpfile)
58edebbb8eSjmmv    atf_fail "On purpose"
59edebbb8eSjmmv}
60edebbb8eSjmmvcleanup_fail_cleanup()
61edebbb8eSjmmv{
62edebbb8eSjmmv    if [ $(atf_config_get cleanup no) = yes ]; then
63edebbb8eSjmmv        rm $(atf_config_get tmpfile)
64edebbb8eSjmmv    fi
65edebbb8eSjmmv}
66edebbb8eSjmmv
67edebbb8eSjmmvatf_test_case cleanup_skip cleanup
68edebbb8eSjmmvcleanup_skip_head()
69edebbb8eSjmmv{
70edebbb8eSjmmv    atf_set "descr" "Helper test case for the t_cleanup test program"
71edebbb8eSjmmv}
72edebbb8eSjmmvcleanup_skip_body()
73edebbb8eSjmmv{
74edebbb8eSjmmv    touch $(atf_config_get tmpfile)
75edebbb8eSjmmv    atf_skip "On purpose"
76edebbb8eSjmmv}
77edebbb8eSjmmvcleanup_skip_cleanup()
78edebbb8eSjmmv{
79edebbb8eSjmmv    if [ $(atf_config_get cleanup no) = yes ]; then
80edebbb8eSjmmv        rm $(atf_config_get tmpfile)
81edebbb8eSjmmv    fi
82edebbb8eSjmmv}
83edebbb8eSjmmv
84edebbb8eSjmmvatf_test_case cleanup_curdir cleanup
85edebbb8eSjmmvcleanup_curdir_head()
86edebbb8eSjmmv{
87edebbb8eSjmmv    atf_set "descr" "Helper test case for the t_cleanup test program"
88edebbb8eSjmmv}
89edebbb8eSjmmvcleanup_curdir_body()
90edebbb8eSjmmv{
91edebbb8eSjmmv    echo 1234 >oldvalue
92edebbb8eSjmmv}
93edebbb8eSjmmvcleanup_curdir_cleanup()
94edebbb8eSjmmv{
95edebbb8eSjmmv    test -f oldvalue && echo "Old value: $(cat oldvalue)"
96edebbb8eSjmmv}
97edebbb8eSjmmv
98edebbb8eSjmmvatf_test_case cleanup_sigterm cleanup
99edebbb8eSjmmvcleanup_sigterm_head()
100edebbb8eSjmmv{
101edebbb8eSjmmv    atf_set "descr" "Helper test case for the t_cleanup test program"
102edebbb8eSjmmv}
103edebbb8eSjmmvcleanup_sigterm_body()
104edebbb8eSjmmv{
105edebbb8eSjmmv    touch $(atf_config_get tmpfile)
106edebbb8eSjmmv    kill $$
107edebbb8eSjmmv    touch $(atf_config_get tmpfile).no
108edebbb8eSjmmv}
109edebbb8eSjmmvcleanup_sigterm_cleanup()
110edebbb8eSjmmv{
111edebbb8eSjmmv    rm $(atf_config_get tmpfile)
112edebbb8eSjmmv}
113edebbb8eSjmmv
114edebbb8eSjmmv# -------------------------------------------------------------------------
115edebbb8eSjmmv# Helper tests for "t_config".
116edebbb8eSjmmv# -------------------------------------------------------------------------
117edebbb8eSjmmv
118edebbb8eSjmmvatf_test_case config_unset
119edebbb8eSjmmvconfig_unset_head()
120edebbb8eSjmmv{
121edebbb8eSjmmv    atf_set "descr" "Helper test case for the t_config test program"
122edebbb8eSjmmv}
123edebbb8eSjmmvconfig_unset_body()
124edebbb8eSjmmv{
125895f502bSjmmv    if atf_config_has 'test'; then
126895f502bSjmmv        atf_fail "Test variable already defined"
127895f502bSjmmv    fi
128edebbb8eSjmmv}
129edebbb8eSjmmv
130edebbb8eSjmmvatf_test_case config_empty
131edebbb8eSjmmvconfig_empty_head()
132edebbb8eSjmmv{
133edebbb8eSjmmv    atf_set "descr" "Helper test case for the t_config test program"
134edebbb8eSjmmv}
135edebbb8eSjmmvconfig_empty_body()
136edebbb8eSjmmv{
137edebbb8eSjmmv    atf_check_equal "$(atf_config_get 'test')" ""
138edebbb8eSjmmv}
139edebbb8eSjmmv
140edebbb8eSjmmvatf_test_case config_value
141edebbb8eSjmmvconfig_value_head()
142edebbb8eSjmmv{
143edebbb8eSjmmv    atf_set "descr" "Helper test case for the t_config test program"
144edebbb8eSjmmv}
145edebbb8eSjmmvconfig_value_body()
146edebbb8eSjmmv{
147edebbb8eSjmmv    atf_check_equal "$(atf_config_get 'test')" "foo"
148edebbb8eSjmmv}
149edebbb8eSjmmv
150edebbb8eSjmmvatf_test_case config_multi_value
151edebbb8eSjmmvconfig_multi_value_head()
152edebbb8eSjmmv{
153edebbb8eSjmmv    atf_set "descr" "Helper test case for the t_config test program"
154edebbb8eSjmmv}
155edebbb8eSjmmvconfig_multi_value_body()
156edebbb8eSjmmv{
157edebbb8eSjmmv    atf_check_equal "$(atf_config_get 'test')" "foo bar"
158edebbb8eSjmmv}
159edebbb8eSjmmv
160edebbb8eSjmmv# -------------------------------------------------------------------------
161edebbb8eSjmmv# Helper tests for "t_expect".
162edebbb8eSjmmv# -------------------------------------------------------------------------
163edebbb8eSjmmv
164edebbb8eSjmmvatf_test_case expect_pass_and_pass
165edebbb8eSjmmvexpect_pass_and_pass_body()
166edebbb8eSjmmv{
167edebbb8eSjmmv    atf_expect_pass
168edebbb8eSjmmv}
169edebbb8eSjmmv
170edebbb8eSjmmvatf_test_case expect_pass_but_fail_requirement
171edebbb8eSjmmvexpect_pass_but_fail_requirement_body()
172edebbb8eSjmmv{
173edebbb8eSjmmv    atf_expect_pass
174edebbb8eSjmmv    atf_fail "Some reason"
175edebbb8eSjmmv}
176edebbb8eSjmmv
177edebbb8eSjmmvatf_test_case expect_pass_but_fail_check
178edebbb8eSjmmvexpect_pass_but_fail_check_body()
179edebbb8eSjmmv{
180edebbb8eSjmmv    atf_fail "Non-fatal failures not implemented"
181edebbb8eSjmmv}
182edebbb8eSjmmv
183edebbb8eSjmmvatf_test_case expect_fail_and_fail_requirement
184edebbb8eSjmmvexpect_fail_and_fail_requirement_body()
185edebbb8eSjmmv{
186edebbb8eSjmmv    atf_expect_fail "Fail reason"
187edebbb8eSjmmv    atf_fail "The failure"
188edebbb8eSjmmv    atf_expect_pass
189edebbb8eSjmmv}
190edebbb8eSjmmv
191edebbb8eSjmmvatf_test_case expect_fail_and_fail_check
192edebbb8eSjmmvexpect_fail_and_fail_check_body()
193edebbb8eSjmmv{
194edebbb8eSjmmv    atf_fail "Non-fatal failures not implemented"
195edebbb8eSjmmv}
196edebbb8eSjmmv
197edebbb8eSjmmvatf_test_case expect_fail_but_pass
198edebbb8eSjmmvexpect_fail_but_pass_body()
199edebbb8eSjmmv{
200edebbb8eSjmmv    atf_expect_fail "Fail first"
201edebbb8eSjmmv    atf_expect_pass
202edebbb8eSjmmv}
203edebbb8eSjmmv
204edebbb8eSjmmvatf_test_case expect_exit_any_and_exit
205edebbb8eSjmmvexpect_exit_any_and_exit_body()
206edebbb8eSjmmv{
207edebbb8eSjmmv    atf_expect_exit -1 "Call will exit"
208edebbb8eSjmmv    exit 0
209edebbb8eSjmmv}
210edebbb8eSjmmv
211edebbb8eSjmmvatf_test_case expect_exit_code_and_exit
212edebbb8eSjmmvexpect_exit_code_and_exit_body()
213edebbb8eSjmmv{
214edebbb8eSjmmv    atf_expect_exit 123 "Call will exit"
215edebbb8eSjmmv    exit 123
216edebbb8eSjmmv}
217edebbb8eSjmmv
218edebbb8eSjmmvatf_test_case expect_exit_but_pass
219edebbb8eSjmmvexpect_exit_but_pass_body()
220edebbb8eSjmmv{
221edebbb8eSjmmv    atf_expect_exit -1 "Call won't exit"
222edebbb8eSjmmv}
223edebbb8eSjmmv
224edebbb8eSjmmvatf_test_case expect_signal_any_and_signal
225edebbb8eSjmmvexpect_signal_any_and_signal_body()
226edebbb8eSjmmv{
227edebbb8eSjmmv    atf_expect_signal -1 "Call will signal"
228edebbb8eSjmmv    kill -9 $$
229edebbb8eSjmmv}
230edebbb8eSjmmv
231edebbb8eSjmmvatf_test_case expect_signal_no_and_signal
232edebbb8eSjmmvexpect_signal_no_and_signal_body()
233edebbb8eSjmmv{
234edebbb8eSjmmv    atf_expect_signal 1 "Call will signal"
235edebbb8eSjmmv    kill -1 $$
236edebbb8eSjmmv}
237edebbb8eSjmmv
238edebbb8eSjmmvatf_test_case expect_signal_but_pass
239edebbb8eSjmmvexpect_signal_but_pass_body()
240edebbb8eSjmmv{
241edebbb8eSjmmv    atf_expect_signal -1 "Call won't signal"
242edebbb8eSjmmv}
243edebbb8eSjmmv
244edebbb8eSjmmvatf_test_case expect_death_and_exit
245edebbb8eSjmmvexpect_death_and_exit_body()
246edebbb8eSjmmv{
247edebbb8eSjmmv    atf_expect_death "Exit case"
248edebbb8eSjmmv    exit 123
249edebbb8eSjmmv}
250edebbb8eSjmmv
251edebbb8eSjmmvatf_test_case expect_death_and_signal
252edebbb8eSjmmvexpect_death_and_signal_body()
253edebbb8eSjmmv{
254edebbb8eSjmmv    atf_expect_death "Signal case"
255edebbb8eSjmmv    kill -9 $$
256edebbb8eSjmmv}
257edebbb8eSjmmv
258edebbb8eSjmmvatf_test_case expect_death_but_pass
259edebbb8eSjmmvexpect_death_but_pass_body()
260edebbb8eSjmmv{
261edebbb8eSjmmv    atf_expect_death "Call won't die"
262edebbb8eSjmmv}
263edebbb8eSjmmv
264edebbb8eSjmmvatf_test_case expect_timeout_and_hang
265edebbb8eSjmmvexpect_timeout_and_hang_head()
266edebbb8eSjmmv{
267edebbb8eSjmmv    atf_set "timeout" "1"
268edebbb8eSjmmv}
269edebbb8eSjmmvexpect_timeout_and_hang_body()
270edebbb8eSjmmv{
271edebbb8eSjmmv    atf_expect_timeout "Will overrun"
272edebbb8eSjmmv    sleep 5
273edebbb8eSjmmv}
274edebbb8eSjmmv
275edebbb8eSjmmvatf_test_case expect_timeout_but_pass
276edebbb8eSjmmvexpect_timeout_but_pass_head()
277edebbb8eSjmmv{
278edebbb8eSjmmv    atf_set "timeout" "1"
279edebbb8eSjmmv}
280edebbb8eSjmmvexpect_timeout_but_pass_body()
281edebbb8eSjmmv{
282edebbb8eSjmmv    atf_expect_timeout "Will just exit"
283edebbb8eSjmmv}
284edebbb8eSjmmv
285edebbb8eSjmmv# -------------------------------------------------------------------------
286edebbb8eSjmmv# Helper tests for "t_meta_data".
287edebbb8eSjmmv# -------------------------------------------------------------------------
288edebbb8eSjmmv
289edebbb8eSjmmvatf_test_case metadata_no_descr
290edebbb8eSjmmvmetadata_no_descr_head()
291edebbb8eSjmmv{
292edebbb8eSjmmv    :
293edebbb8eSjmmv}
294edebbb8eSjmmvmetadata_no_descr_body()
295edebbb8eSjmmv{
296edebbb8eSjmmv    :
297edebbb8eSjmmv}
298edebbb8eSjmmv
299edebbb8eSjmmvatf_test_case metadata_no_head
300edebbb8eSjmmvmetadata_no_head_body()
301edebbb8eSjmmv{
302edebbb8eSjmmv    :
303edebbb8eSjmmv}
304edebbb8eSjmmv
305edebbb8eSjmmv# -------------------------------------------------------------------------
306edebbb8eSjmmv# Helper tests for "t_srcdir".
307edebbb8eSjmmv# -------------------------------------------------------------------------
308edebbb8eSjmmv
309edebbb8eSjmmvatf_test_case srcdir_exists
310edebbb8eSjmmvsrcdir_exists_head()
311edebbb8eSjmmv{
312edebbb8eSjmmv    atf_set "descr" "Helper test case for the t_srcdir test program"
313edebbb8eSjmmv}
314edebbb8eSjmmvsrcdir_exists_body()
315edebbb8eSjmmv{
316edebbb8eSjmmv    [ -f "$(atf_get_srcdir)/datafile" ] || atf_fail "Cannot find datafile"
317edebbb8eSjmmv}
318edebbb8eSjmmv
319edebbb8eSjmmv# -------------------------------------------------------------------------
320edebbb8eSjmmv# Helper tests for "t_result".
321edebbb8eSjmmv# -------------------------------------------------------------------------
322edebbb8eSjmmv
323edebbb8eSjmmvatf_test_case result_pass
324edebbb8eSjmmvresult_pass_body()
325edebbb8eSjmmv{
326edebbb8eSjmmv    echo "msg"
327edebbb8eSjmmv}
328edebbb8eSjmmv
329edebbb8eSjmmvatf_test_case result_fail
330edebbb8eSjmmvresult_fail_body()
331edebbb8eSjmmv{
332edebbb8eSjmmv    echo "msg"
333edebbb8eSjmmv    atf_fail "Failure reason"
334edebbb8eSjmmv}
335edebbb8eSjmmv
336edebbb8eSjmmvatf_test_case result_skip
337edebbb8eSjmmvresult_skip_body()
338edebbb8eSjmmv{
339edebbb8eSjmmv    echo "msg"
340edebbb8eSjmmv    atf_skip "Skipped reason"
341edebbb8eSjmmv}
342edebbb8eSjmmv
343edebbb8eSjmmv# -------------------------------------------------------------------------
344edebbb8eSjmmv# Main.
345edebbb8eSjmmv# -------------------------------------------------------------------------
346edebbb8eSjmmv
347edebbb8eSjmmvatf_init_test_cases()
348edebbb8eSjmmv{
349edebbb8eSjmmv    # Add helper tests for t_cleanup.
350edebbb8eSjmmv    atf_add_test_case cleanup_pass
351edebbb8eSjmmv    atf_add_test_case cleanup_fail
352edebbb8eSjmmv    atf_add_test_case cleanup_skip
353edebbb8eSjmmv    atf_add_test_case cleanup_curdir
354edebbb8eSjmmv    atf_add_test_case cleanup_sigterm
355edebbb8eSjmmv
356edebbb8eSjmmv    # Add helper tests for t_config.
357edebbb8eSjmmv    atf_add_test_case config_unset
358edebbb8eSjmmv    atf_add_test_case config_empty
359edebbb8eSjmmv    atf_add_test_case config_value
360edebbb8eSjmmv    atf_add_test_case config_multi_value
361edebbb8eSjmmv
362edebbb8eSjmmv    # Add helper tests for t_expect.
363edebbb8eSjmmv    atf_add_test_case expect_pass_and_pass
364edebbb8eSjmmv    atf_add_test_case expect_pass_but_fail_requirement
365edebbb8eSjmmv    atf_add_test_case expect_pass_but_fail_check
366edebbb8eSjmmv    atf_add_test_case expect_fail_and_fail_requirement
367edebbb8eSjmmv    atf_add_test_case expect_fail_and_fail_check
368edebbb8eSjmmv    atf_add_test_case expect_fail_but_pass
369edebbb8eSjmmv    atf_add_test_case expect_exit_any_and_exit
370edebbb8eSjmmv    atf_add_test_case expect_exit_code_and_exit
371edebbb8eSjmmv    atf_add_test_case expect_exit_but_pass
372edebbb8eSjmmv    atf_add_test_case expect_signal_any_and_signal
373edebbb8eSjmmv    atf_add_test_case expect_signal_no_and_signal
374edebbb8eSjmmv    atf_add_test_case expect_signal_but_pass
375edebbb8eSjmmv    atf_add_test_case expect_death_and_exit
376edebbb8eSjmmv    atf_add_test_case expect_death_and_signal
377edebbb8eSjmmv    atf_add_test_case expect_death_but_pass
378edebbb8eSjmmv    atf_add_test_case expect_timeout_and_hang
379edebbb8eSjmmv    atf_add_test_case expect_timeout_but_pass
380edebbb8eSjmmv
381edebbb8eSjmmv    # Add helper tests for t_meta_data.
382edebbb8eSjmmv    atf_add_test_case metadata_no_descr
383edebbb8eSjmmv    atf_add_test_case metadata_no_head
384edebbb8eSjmmv
385edebbb8eSjmmv    # Add helper tests for t_srcdir.
386edebbb8eSjmmv    atf_add_test_case srcdir_exists
387edebbb8eSjmmv
388edebbb8eSjmmv    # Add helper tests for t_result.
389edebbb8eSjmmv    atf_add_test_case result_pass
390edebbb8eSjmmv    atf_add_test_case result_fail
391edebbb8eSjmmv    atf_add_test_case result_skip
392edebbb8eSjmmv}
393edebbb8eSjmmv
394edebbb8eSjmmv# vim: syntax=sh:expandtab:shiftwidth=4:softtabstop=4
395