1240116Smarcel# Copyright (c) 2007 The NetBSD Foundation, Inc.
2240116Smarcel# All rights reserved.
3240116Smarcel#
4240116Smarcel# Redistribution and use in source and binary forms, with or without
5240116Smarcel# modification, are permitted provided that the following conditions
6240116Smarcel# are met:
7240116Smarcel# 1. Redistributions of source code must retain the above copyright
8240116Smarcel#    notice, this list of conditions and the following disclaimer.
9240116Smarcel# 2. Redistributions in binary form must reproduce the above copyright
10240116Smarcel#    notice, this list of conditions and the following disclaimer in the
11240116Smarcel#    documentation and/or other materials provided with the distribution.
12240116Smarcel#
13240116Smarcel# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND
14240116Smarcel# CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
15240116Smarcel# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
16240116Smarcel# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
17240116Smarcel# IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY
18240116Smarcel# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19240116Smarcel# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
20240116Smarcel# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
21240116Smarcel# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
22240116Smarcel# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
23240116Smarcel# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
24240116Smarcel# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25240116Smarcel
26240116Smarcel# -------------------------------------------------------------------------
27240116Smarcel# Helper tests for "t_cleanup".
28240116Smarcel# -------------------------------------------------------------------------
29240116Smarcel
30240116Smarcelatf_test_case cleanup_pass cleanup
31240116Smarcelcleanup_pass_head()
32240116Smarcel{
33240116Smarcel    atf_set "descr" "Helper test case for the t_cleanup test program"
34240116Smarcel}
35240116Smarcelcleanup_pass_body()
36240116Smarcel{
37240116Smarcel    touch $(atf_config_get tmpfile)
38240116Smarcel}
39240116Smarcelcleanup_pass_cleanup()
40240116Smarcel{
41240116Smarcel    if [ $(atf_config_get cleanup no) = yes ]; then
42240116Smarcel        rm $(atf_config_get tmpfile)
43240116Smarcel    fi
44240116Smarcel}
45240116Smarcel
46240116Smarcelatf_test_case cleanup_fail cleanup
47240116Smarcelcleanup_fail_head()
48240116Smarcel{
49240116Smarcel    atf_set "descr" "Helper test case for the t_cleanup test program"
50240116Smarcel}
51240116Smarcelcleanup_fail_body()
52240116Smarcel{
53240116Smarcel    touch $(atf_config_get tmpfile)
54240116Smarcel    atf_fail "On purpose"
55240116Smarcel}
56240116Smarcelcleanup_fail_cleanup()
57240116Smarcel{
58240116Smarcel    if [ $(atf_config_get cleanup no) = yes ]; then
59240116Smarcel        rm $(atf_config_get tmpfile)
60240116Smarcel    fi
61240116Smarcel}
62240116Smarcel
63240116Smarcelatf_test_case cleanup_skip cleanup
64240116Smarcelcleanup_skip_head()
65240116Smarcel{
66240116Smarcel    atf_set "descr" "Helper test case for the t_cleanup test program"
67240116Smarcel}
68240116Smarcelcleanup_skip_body()
69240116Smarcel{
70240116Smarcel    touch $(atf_config_get tmpfile)
71240116Smarcel    atf_skip "On purpose"
72240116Smarcel}
73240116Smarcelcleanup_skip_cleanup()
74240116Smarcel{
75240116Smarcel    if [ $(atf_config_get cleanup no) = yes ]; then
76240116Smarcel        rm $(atf_config_get tmpfile)
77240116Smarcel    fi
78240116Smarcel}
79240116Smarcel
80240116Smarcelatf_test_case cleanup_curdir cleanup
81240116Smarcelcleanup_curdir_head()
82240116Smarcel{
83240116Smarcel    atf_set "descr" "Helper test case for the t_cleanup test program"
84240116Smarcel}
85240116Smarcelcleanup_curdir_body()
86240116Smarcel{
87240116Smarcel    echo 1234 >oldvalue
88240116Smarcel}
89240116Smarcelcleanup_curdir_cleanup()
90240116Smarcel{
91240116Smarcel    test -f oldvalue && echo "Old value: $(cat oldvalue)"
92240116Smarcel}
93240116Smarcel
94240116Smarcelatf_test_case cleanup_sigterm cleanup
95240116Smarcelcleanup_sigterm_head()
96240116Smarcel{
97240116Smarcel    atf_set "descr" "Helper test case for the t_cleanup test program"
98240116Smarcel}
99240116Smarcelcleanup_sigterm_body()
100240116Smarcel{
101240116Smarcel    touch $(atf_config_get tmpfile)
102240116Smarcel    kill $$
103240116Smarcel    touch $(atf_config_get tmpfile).no
104240116Smarcel}
105240116Smarcelcleanup_sigterm_cleanup()
106240116Smarcel{
107240116Smarcel    rm $(atf_config_get tmpfile)
108240116Smarcel}
109240116Smarcel
110240116Smarcel# -------------------------------------------------------------------------
111240116Smarcel# Helper tests for "t_config".
112240116Smarcel# -------------------------------------------------------------------------
113240116Smarcel
114240116Smarcelatf_test_case config_unset
115240116Smarcelconfig_unset_head()
116240116Smarcel{
117240116Smarcel    atf_set "descr" "Helper test case for the t_config test program"
118240116Smarcel}
119240116Smarcelconfig_unset_body()
120240116Smarcel{
121240116Smarcel    if atf_config_has 'test'; then
122240116Smarcel        atf_fail "Test variable already defined"
123240116Smarcel    fi
124240116Smarcel}
125240116Smarcel
126240116Smarcelatf_test_case config_empty
127240116Smarcelconfig_empty_head()
128240116Smarcel{
129240116Smarcel    atf_set "descr" "Helper test case for the t_config test program"
130240116Smarcel}
131240116Smarcelconfig_empty_body()
132240116Smarcel{
133240116Smarcel    atf_check_equal "$(atf_config_get 'test')" ""
134240116Smarcel}
135240116Smarcel
136240116Smarcelatf_test_case config_value
137240116Smarcelconfig_value_head()
138240116Smarcel{
139240116Smarcel    atf_set "descr" "Helper test case for the t_config test program"
140240116Smarcel}
141240116Smarcelconfig_value_body()
142240116Smarcel{
143240116Smarcel    atf_check_equal "$(atf_config_get 'test')" "foo"
144240116Smarcel}
145240116Smarcel
146240116Smarcelatf_test_case config_multi_value
147240116Smarcelconfig_multi_value_head()
148240116Smarcel{
149240116Smarcel    atf_set "descr" "Helper test case for the t_config test program"
150240116Smarcel}
151240116Smarcelconfig_multi_value_body()
152240116Smarcel{
153240116Smarcel    atf_check_equal "$(atf_config_get 'test')" "foo bar"
154240116Smarcel}
155240116Smarcel
156240116Smarcel# -------------------------------------------------------------------------
157240116Smarcel# Helper tests for "t_expect".
158240116Smarcel# -------------------------------------------------------------------------
159240116Smarcel
160240116Smarcelatf_test_case expect_pass_and_pass
161240116Smarcelexpect_pass_and_pass_body()
162240116Smarcel{
163240116Smarcel    atf_expect_pass
164240116Smarcel}
165240116Smarcel
166240116Smarcelatf_test_case expect_pass_but_fail_requirement
167240116Smarcelexpect_pass_but_fail_requirement_body()
168240116Smarcel{
169240116Smarcel    atf_expect_pass
170240116Smarcel    atf_fail "Some reason"
171240116Smarcel}
172240116Smarcel
173240116Smarcelatf_test_case expect_pass_but_fail_check
174240116Smarcelexpect_pass_but_fail_check_body()
175240116Smarcel{
176240116Smarcel    atf_fail "Non-fatal failures not implemented"
177240116Smarcel}
178240116Smarcel
179240116Smarcelatf_test_case expect_fail_and_fail_requirement
180240116Smarcelexpect_fail_and_fail_requirement_body()
181240116Smarcel{
182240116Smarcel    atf_expect_fail "Fail reason"
183240116Smarcel    atf_fail "The failure"
184240116Smarcel    atf_expect_pass
185240116Smarcel}
186240116Smarcel
187240116Smarcelatf_test_case expect_fail_and_fail_check
188240116Smarcelexpect_fail_and_fail_check_body()
189240116Smarcel{
190240116Smarcel    atf_fail "Non-fatal failures not implemented"
191240116Smarcel}
192240116Smarcel
193240116Smarcelatf_test_case expect_fail_but_pass
194240116Smarcelexpect_fail_but_pass_body()
195240116Smarcel{
196240116Smarcel    atf_expect_fail "Fail first"
197240116Smarcel    atf_expect_pass
198240116Smarcel}
199240116Smarcel
200240116Smarcelatf_test_case expect_exit_any_and_exit
201240116Smarcelexpect_exit_any_and_exit_body()
202240116Smarcel{
203240116Smarcel    atf_expect_exit -1 "Call will exit"
204240116Smarcel    exit 0
205240116Smarcel}
206240116Smarcel
207240116Smarcelatf_test_case expect_exit_code_and_exit
208240116Smarcelexpect_exit_code_and_exit_body()
209240116Smarcel{
210240116Smarcel    atf_expect_exit 123 "Call will exit"
211240116Smarcel    exit 123
212240116Smarcel}
213240116Smarcel
214240116Smarcelatf_test_case expect_exit_but_pass
215240116Smarcelexpect_exit_but_pass_body()
216240116Smarcel{
217240116Smarcel    atf_expect_exit -1 "Call won't exit"
218240116Smarcel}
219240116Smarcel
220240116Smarcelatf_test_case expect_signal_any_and_signal
221240116Smarcelexpect_signal_any_and_signal_body()
222240116Smarcel{
223240116Smarcel    atf_expect_signal -1 "Call will signal"
224240116Smarcel    kill -9 $$
225240116Smarcel}
226240116Smarcel
227240116Smarcelatf_test_case expect_signal_no_and_signal
228240116Smarcelexpect_signal_no_and_signal_body()
229240116Smarcel{
230240116Smarcel    atf_expect_signal 1 "Call will signal"
231240116Smarcel    kill -1 $$
232240116Smarcel}
233240116Smarcel
234240116Smarcelatf_test_case expect_signal_but_pass
235240116Smarcelexpect_signal_but_pass_body()
236240116Smarcel{
237240116Smarcel    atf_expect_signal -1 "Call won't signal"
238240116Smarcel}
239240116Smarcel
240240116Smarcelatf_test_case expect_death_and_exit
241240116Smarcelexpect_death_and_exit_body()
242240116Smarcel{
243240116Smarcel    atf_expect_death "Exit case"
244240116Smarcel    exit 123
245240116Smarcel}
246240116Smarcel
247240116Smarcelatf_test_case expect_death_and_signal
248240116Smarcelexpect_death_and_signal_body()
249240116Smarcel{
250240116Smarcel    atf_expect_death "Signal case"
251240116Smarcel    kill -9 $$
252240116Smarcel}
253240116Smarcel
254240116Smarcelatf_test_case expect_death_but_pass
255240116Smarcelexpect_death_but_pass_body()
256240116Smarcel{
257240116Smarcel    atf_expect_death "Call won't die"
258240116Smarcel}
259240116Smarcel
260240116Smarcelatf_test_case expect_timeout_and_hang
261240116Smarcelexpect_timeout_and_hang_head()
262240116Smarcel{
263240116Smarcel    atf_set "timeout" "1"
264240116Smarcel}
265240116Smarcelexpect_timeout_and_hang_body()
266240116Smarcel{
267240116Smarcel    atf_expect_timeout "Will overrun"
268240116Smarcel    sleep 5
269240116Smarcel}
270240116Smarcel
271240116Smarcelatf_test_case expect_timeout_but_pass
272240116Smarcelexpect_timeout_but_pass_head()
273240116Smarcel{
274240116Smarcel    atf_set "timeout" "1"
275240116Smarcel}
276240116Smarcelexpect_timeout_but_pass_body()
277240116Smarcel{
278240116Smarcel    atf_expect_timeout "Will just exit"
279240116Smarcel}
280240116Smarcel
281240116Smarcel# -------------------------------------------------------------------------
282240116Smarcel# Helper tests for "t_meta_data".
283240116Smarcel# -------------------------------------------------------------------------
284240116Smarcel
285240116Smarcelatf_test_case metadata_no_descr
286240116Smarcelmetadata_no_descr_head()
287240116Smarcel{
288240116Smarcel    :
289240116Smarcel}
290240116Smarcelmetadata_no_descr_body()
291240116Smarcel{
292240116Smarcel    :
293240116Smarcel}
294240116Smarcel
295240116Smarcelatf_test_case metadata_no_head
296240116Smarcelmetadata_no_head_body()
297240116Smarcel{
298240116Smarcel    :
299240116Smarcel}
300240116Smarcel
301240116Smarcel# -------------------------------------------------------------------------
302240116Smarcel# Helper tests for "t_srcdir".
303240116Smarcel# -------------------------------------------------------------------------
304240116Smarcel
305240116Smarcelatf_test_case srcdir_exists
306240116Smarcelsrcdir_exists_head()
307240116Smarcel{
308240116Smarcel    atf_set "descr" "Helper test case for the t_srcdir test program"
309240116Smarcel}
310240116Smarcelsrcdir_exists_body()
311240116Smarcel{
312240116Smarcel    [ -f "$(atf_get_srcdir)/datafile" ] || atf_fail "Cannot find datafile"
313240116Smarcel}
314240116Smarcel
315240116Smarcel# -------------------------------------------------------------------------
316240116Smarcel# Helper tests for "t_result".
317240116Smarcel# -------------------------------------------------------------------------
318240116Smarcel
319240116Smarcelatf_test_case result_pass
320240116Smarcelresult_pass_body()
321240116Smarcel{
322240116Smarcel    echo "msg"
323240116Smarcel}
324240116Smarcel
325240116Smarcelatf_test_case result_fail
326240116Smarcelresult_fail_body()
327240116Smarcel{
328240116Smarcel    echo "msg"
329240116Smarcel    atf_fail "Failure reason"
330240116Smarcel}
331240116Smarcel
332240116Smarcelatf_test_case result_skip
333240116Smarcelresult_skip_body()
334240116Smarcel{
335240116Smarcel    echo "msg"
336240116Smarcel    atf_skip "Skipped reason"
337240116Smarcel}
338240116Smarcel
339240116Smarcel# -------------------------------------------------------------------------
340240116Smarcel# Main.
341240116Smarcel# -------------------------------------------------------------------------
342240116Smarcel
343240116Smarcelatf_init_test_cases()
344240116Smarcel{
345240116Smarcel    # Add helper tests for t_cleanup.
346240116Smarcel    atf_add_test_case cleanup_pass
347240116Smarcel    atf_add_test_case cleanup_fail
348240116Smarcel    atf_add_test_case cleanup_skip
349240116Smarcel    atf_add_test_case cleanup_curdir
350240116Smarcel    atf_add_test_case cleanup_sigterm
351240116Smarcel
352240116Smarcel    # Add helper tests for t_config.
353240116Smarcel    atf_add_test_case config_unset
354240116Smarcel    atf_add_test_case config_empty
355240116Smarcel    atf_add_test_case config_value
356240116Smarcel    atf_add_test_case config_multi_value
357240116Smarcel
358240116Smarcel    # Add helper tests for t_expect.
359240116Smarcel    atf_add_test_case expect_pass_and_pass
360240116Smarcel    atf_add_test_case expect_pass_but_fail_requirement
361240116Smarcel    atf_add_test_case expect_pass_but_fail_check
362240116Smarcel    atf_add_test_case expect_fail_and_fail_requirement
363240116Smarcel    atf_add_test_case expect_fail_and_fail_check
364240116Smarcel    atf_add_test_case expect_fail_but_pass
365240116Smarcel    atf_add_test_case expect_exit_any_and_exit
366240116Smarcel    atf_add_test_case expect_exit_code_and_exit
367240116Smarcel    atf_add_test_case expect_exit_but_pass
368240116Smarcel    atf_add_test_case expect_signal_any_and_signal
369240116Smarcel    atf_add_test_case expect_signal_no_and_signal
370240116Smarcel    atf_add_test_case expect_signal_but_pass
371240116Smarcel    atf_add_test_case expect_death_and_exit
372240116Smarcel    atf_add_test_case expect_death_and_signal
373240116Smarcel    atf_add_test_case expect_death_but_pass
374240116Smarcel    atf_add_test_case expect_timeout_and_hang
375240116Smarcel    atf_add_test_case expect_timeout_but_pass
376240116Smarcel
377240116Smarcel    # Add helper tests for t_meta_data.
378240116Smarcel    atf_add_test_case metadata_no_descr
379240116Smarcel    atf_add_test_case metadata_no_head
380240116Smarcel
381240116Smarcel    # Add helper tests for t_srcdir.
382240116Smarcel    atf_add_test_case srcdir_exists
383240116Smarcel
384240116Smarcel    # Add helper tests for t_result.
385240116Smarcel    atf_add_test_case result_pass
386240116Smarcel    atf_add_test_case result_fail
387240116Smarcel    atf_add_test_case result_skip
388240116Smarcel}
389240116Smarcel
390240116Smarcel# vim: syntax=sh:expandtab:shiftwidth=4:softtabstop=4
391