]> CyberLeo.Net >> Repos - FreeBSD/stable/10.git/blob - contrib/atf/test-programs/sh_helpers.sh
Update atf to 0.18 and remove the code of the deprecated tools.
[FreeBSD/stable/10.git] / contrib / atf / test-programs / sh_helpers.sh
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_cleanup".
32 # -------------------------------------------------------------------------
33
34 atf_test_case cleanup_pass cleanup
35 cleanup_pass_head()
36 {
37     atf_set "descr" "Helper test case for the t_cleanup test program"
38 }
39 cleanup_pass_body()
40 {
41     touch $(atf_config_get tmpfile)
42 }
43 cleanup_pass_cleanup()
44 {
45     if [ $(atf_config_get cleanup no) = yes ]; then
46         rm $(atf_config_get tmpfile)
47     fi
48 }
49
50 atf_test_case cleanup_fail cleanup
51 cleanup_fail_head()
52 {
53     atf_set "descr" "Helper test case for the t_cleanup test program"
54 }
55 cleanup_fail_body()
56 {
57     touch $(atf_config_get tmpfile)
58     atf_fail "On purpose"
59 }
60 cleanup_fail_cleanup()
61 {
62     if [ $(atf_config_get cleanup no) = yes ]; then
63         rm $(atf_config_get tmpfile)
64     fi
65 }
66
67 atf_test_case cleanup_skip cleanup
68 cleanup_skip_head()
69 {
70     atf_set "descr" "Helper test case for the t_cleanup test program"
71 }
72 cleanup_skip_body()
73 {
74     touch $(atf_config_get tmpfile)
75     atf_skip "On purpose"
76 }
77 cleanup_skip_cleanup()
78 {
79     if [ $(atf_config_get cleanup no) = yes ]; then
80         rm $(atf_config_get tmpfile)
81     fi
82 }
83
84 atf_test_case cleanup_curdir cleanup
85 cleanup_curdir_head()
86 {
87     atf_set "descr" "Helper test case for the t_cleanup test program"
88 }
89 cleanup_curdir_body()
90 {
91     echo 1234 >oldvalue
92 }
93 cleanup_curdir_cleanup()
94 {
95     test -f oldvalue && echo "Old value: $(cat oldvalue)"
96 }
97
98 atf_test_case cleanup_sigterm cleanup
99 cleanup_sigterm_head()
100 {
101     atf_set "descr" "Helper test case for the t_cleanup test program"
102 }
103 cleanup_sigterm_body()
104 {
105     touch $(atf_config_get tmpfile)
106     kill $$
107     touch $(atf_config_get tmpfile).no
108 }
109 cleanup_sigterm_cleanup()
110 {
111     rm $(atf_config_get tmpfile)
112 }
113
114 # -------------------------------------------------------------------------
115 # Helper tests for "t_config".
116 # -------------------------------------------------------------------------
117
118 atf_test_case config_unset
119 config_unset_head()
120 {
121     atf_set "descr" "Helper test case for the t_config test program"
122 }
123 config_unset_body()
124 {
125     if atf_config_has 'test'; then
126         atf_fail "Test variable already defined"
127     fi
128 }
129
130 atf_test_case config_empty
131 config_empty_head()
132 {
133     atf_set "descr" "Helper test case for the t_config test program"
134 }
135 config_empty_body()
136 {
137     atf_check_equal "$(atf_config_get 'test')" ""
138 }
139
140 atf_test_case config_value
141 config_value_head()
142 {
143     atf_set "descr" "Helper test case for the t_config test program"
144 }
145 config_value_body()
146 {
147     atf_check_equal "$(atf_config_get 'test')" "foo"
148 }
149
150 atf_test_case config_multi_value
151 config_multi_value_head()
152 {
153     atf_set "descr" "Helper test case for the t_config test program"
154 }
155 config_multi_value_body()
156 {
157     atf_check_equal "$(atf_config_get 'test')" "foo bar"
158 }
159
160 # -------------------------------------------------------------------------
161 # Helper tests for "t_expect".
162 # -------------------------------------------------------------------------
163
164 atf_test_case expect_pass_and_pass
165 expect_pass_and_pass_body()
166 {
167     atf_expect_pass
168 }
169
170 atf_test_case expect_pass_but_fail_requirement
171 expect_pass_but_fail_requirement_body()
172 {
173     atf_expect_pass
174     atf_fail "Some reason"
175 }
176
177 atf_test_case expect_pass_but_fail_check
178 expect_pass_but_fail_check_body()
179 {
180     atf_fail "Non-fatal failures not implemented"
181 }
182
183 atf_test_case expect_fail_and_fail_requirement
184 expect_fail_and_fail_requirement_body()
185 {
186     atf_expect_fail "Fail reason"
187     atf_fail "The failure"
188     atf_expect_pass
189 }
190
191 atf_test_case expect_fail_and_fail_check
192 expect_fail_and_fail_check_body()
193 {
194     atf_fail "Non-fatal failures not implemented"
195 }
196
197 atf_test_case expect_fail_but_pass
198 expect_fail_but_pass_body()
199 {
200     atf_expect_fail "Fail first"
201     atf_expect_pass
202 }
203
204 atf_test_case expect_exit_any_and_exit
205 expect_exit_any_and_exit_body()
206 {
207     atf_expect_exit -1 "Call will exit"
208     exit 0
209 }
210
211 atf_test_case expect_exit_code_and_exit
212 expect_exit_code_and_exit_body()
213 {
214     atf_expect_exit 123 "Call will exit"
215     exit 123
216 }
217
218 atf_test_case expect_exit_but_pass
219 expect_exit_but_pass_body()
220 {
221     atf_expect_exit -1 "Call won't exit"
222 }
223
224 atf_test_case expect_signal_any_and_signal
225 expect_signal_any_and_signal_body()
226 {
227     atf_expect_signal -1 "Call will signal"
228     kill -9 $$
229 }
230
231 atf_test_case expect_signal_no_and_signal
232 expect_signal_no_and_signal_body()
233 {
234     atf_expect_signal 1 "Call will signal"
235     kill -1 $$
236 }
237
238 atf_test_case expect_signal_but_pass
239 expect_signal_but_pass_body()
240 {
241     atf_expect_signal -1 "Call won't signal"
242 }
243
244 atf_test_case expect_death_and_exit
245 expect_death_and_exit_body()
246 {
247     atf_expect_death "Exit case"
248     exit 123
249 }
250
251 atf_test_case expect_death_and_signal
252 expect_death_and_signal_body()
253 {
254     atf_expect_death "Signal case"
255     kill -9 $$
256 }
257
258 atf_test_case expect_death_but_pass
259 expect_death_but_pass_body()
260 {
261     atf_expect_death "Call won't die"
262 }
263
264 atf_test_case expect_timeout_and_hang
265 expect_timeout_and_hang_head()
266 {
267     atf_set "timeout" "1"
268 }
269 expect_timeout_and_hang_body()
270 {
271     atf_expect_timeout "Will overrun"
272     sleep 5
273 }
274
275 atf_test_case expect_timeout_but_pass
276 expect_timeout_but_pass_head()
277 {
278     atf_set "timeout" "1"
279 }
280 expect_timeout_but_pass_body()
281 {
282     atf_expect_timeout "Will just exit"
283 }
284
285 # -------------------------------------------------------------------------
286 # Helper tests for "t_meta_data".
287 # -------------------------------------------------------------------------
288
289 atf_test_case metadata_no_descr
290 metadata_no_descr_head()
291 {
292     :
293 }
294 metadata_no_descr_body()
295 {
296     :
297 }
298
299 atf_test_case metadata_no_head
300 metadata_no_head_body()
301 {
302     :
303 }
304
305 # -------------------------------------------------------------------------
306 # Helper tests for "t_srcdir".
307 # -------------------------------------------------------------------------
308
309 atf_test_case srcdir_exists
310 srcdir_exists_head()
311 {
312     atf_set "descr" "Helper test case for the t_srcdir test program"
313 }
314 srcdir_exists_body()
315 {
316     [ -f "$(atf_get_srcdir)/datafile" ] || atf_fail "Cannot find datafile"
317 }
318
319 # -------------------------------------------------------------------------
320 # Helper tests for "t_result".
321 # -------------------------------------------------------------------------
322
323 atf_test_case result_pass
324 result_pass_body()
325 {
326     echo "msg"
327 }
328
329 atf_test_case result_fail
330 result_fail_body()
331 {
332     echo "msg"
333     atf_fail "Failure reason"
334 }
335
336 atf_test_case result_skip
337 result_skip_body()
338 {
339     echo "msg"
340     atf_skip "Skipped reason"
341 }
342
343 # -------------------------------------------------------------------------
344 # Main.
345 # -------------------------------------------------------------------------
346
347 atf_init_test_cases()
348 {
349     # Add helper tests for t_cleanup.
350     atf_add_test_case cleanup_pass
351     atf_add_test_case cleanup_fail
352     atf_add_test_case cleanup_skip
353     atf_add_test_case cleanup_curdir
354     atf_add_test_case cleanup_sigterm
355
356     # Add helper tests for t_config.
357     atf_add_test_case config_unset
358     atf_add_test_case config_empty
359     atf_add_test_case config_value
360     atf_add_test_case config_multi_value
361
362     # Add helper tests for t_expect.
363     atf_add_test_case expect_pass_and_pass
364     atf_add_test_case expect_pass_but_fail_requirement
365     atf_add_test_case expect_pass_but_fail_check
366     atf_add_test_case expect_fail_and_fail_requirement
367     atf_add_test_case expect_fail_and_fail_check
368     atf_add_test_case expect_fail_but_pass
369     atf_add_test_case expect_exit_any_and_exit
370     atf_add_test_case expect_exit_code_and_exit
371     atf_add_test_case expect_exit_but_pass
372     atf_add_test_case expect_signal_any_and_signal
373     atf_add_test_case expect_signal_no_and_signal
374     atf_add_test_case expect_signal_but_pass
375     atf_add_test_case expect_death_and_exit
376     atf_add_test_case expect_death_and_signal
377     atf_add_test_case expect_death_but_pass
378     atf_add_test_case expect_timeout_and_hang
379     atf_add_test_case expect_timeout_but_pass
380
381     # Add helper tests for t_meta_data.
382     atf_add_test_case metadata_no_descr
383     atf_add_test_case metadata_no_head
384
385     # Add helper tests for t_srcdir.
386     atf_add_test_case srcdir_exists
387
388     # Add helper tests for t_result.
389     atf_add_test_case result_pass
390     atf_add_test_case result_fail
391     atf_add_test_case result_skip
392 }
393
394 # vim: syntax=sh:expandtab:shiftwidth=4:softtabstop=4