Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/contrib/atf/test-programs/sh_helpers.sh
39507 views
1
# Copyright (c) 2007 The NetBSD Foundation, Inc.
2
# All rights reserved.
3
#
4
# Redistribution and use in source and binary forms, with or without
5
# modification, are permitted provided that the following conditions
6
# are met:
7
# 1. Redistributions of source code must retain the above copyright
8
# notice, this list of conditions and the following disclaimer.
9
# 2. Redistributions in binary form must reproduce the above copyright
10
# notice, this list of conditions and the following disclaimer in the
11
# documentation and/or other materials provided with the distribution.
12
#
13
# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND
14
# CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
15
# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
16
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
17
# IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY
18
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
20
# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
21
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
22
# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
23
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
24
# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25
26
# -------------------------------------------------------------------------
27
# Helper tests for "t_cleanup".
28
# -------------------------------------------------------------------------
29
30
atf_test_case cleanup_pass cleanup
31
cleanup_pass_head()
32
{
33
atf_set "descr" "Helper test case for the t_cleanup test program"
34
}
35
cleanup_pass_body()
36
{
37
touch $(atf_config_get tmpfile)
38
}
39
cleanup_pass_cleanup()
40
{
41
if [ $(atf_config_get cleanup no) = yes ]; then
42
rm $(atf_config_get tmpfile)
43
fi
44
}
45
46
atf_test_case cleanup_fail cleanup
47
cleanup_fail_head()
48
{
49
atf_set "descr" "Helper test case for the t_cleanup test program"
50
}
51
cleanup_fail_body()
52
{
53
touch $(atf_config_get tmpfile)
54
atf_fail "On purpose"
55
}
56
cleanup_fail_cleanup()
57
{
58
if [ $(atf_config_get cleanup no) = yes ]; then
59
rm $(atf_config_get tmpfile)
60
fi
61
}
62
63
atf_test_case cleanup_skip cleanup
64
cleanup_skip_head()
65
{
66
atf_set "descr" "Helper test case for the t_cleanup test program"
67
}
68
cleanup_skip_body()
69
{
70
touch $(atf_config_get tmpfile)
71
atf_skip "On purpose"
72
}
73
cleanup_skip_cleanup()
74
{
75
if [ $(atf_config_get cleanup no) = yes ]; then
76
rm $(atf_config_get tmpfile)
77
fi
78
}
79
80
atf_test_case cleanup_curdir cleanup
81
cleanup_curdir_head()
82
{
83
atf_set "descr" "Helper test case for the t_cleanup test program"
84
}
85
cleanup_curdir_body()
86
{
87
echo 1234 >oldvalue
88
}
89
cleanup_curdir_cleanup()
90
{
91
test -f oldvalue && echo "Old value: $(cat oldvalue)"
92
}
93
94
atf_test_case cleanup_sigterm cleanup
95
cleanup_sigterm_head()
96
{
97
atf_set "descr" "Helper test case for the t_cleanup test program"
98
}
99
cleanup_sigterm_body()
100
{
101
touch $(atf_config_get tmpfile)
102
kill $$
103
touch $(atf_config_get tmpfile).no
104
}
105
cleanup_sigterm_cleanup()
106
{
107
rm $(atf_config_get tmpfile)
108
}
109
110
# -------------------------------------------------------------------------
111
# Helper tests for "t_config".
112
# -------------------------------------------------------------------------
113
114
atf_test_case config_unset
115
config_unset_head()
116
{
117
atf_set "descr" "Helper test case for the t_config test program"
118
}
119
config_unset_body()
120
{
121
if atf_config_has 'test'; then
122
atf_fail "Test variable already defined"
123
fi
124
}
125
126
atf_test_case config_empty
127
config_empty_head()
128
{
129
atf_set "descr" "Helper test case for the t_config test program"
130
}
131
config_empty_body()
132
{
133
atf_check_equal "$(atf_config_get 'test')" ""
134
}
135
136
atf_test_case config_value
137
config_value_head()
138
{
139
atf_set "descr" "Helper test case for the t_config test program"
140
}
141
config_value_body()
142
{
143
atf_check_equal "$(atf_config_get 'test')" "foo"
144
}
145
146
atf_test_case config_multi_value
147
config_multi_value_head()
148
{
149
atf_set "descr" "Helper test case for the t_config test program"
150
}
151
config_multi_value_body()
152
{
153
atf_check_equal "$(atf_config_get 'test')" "foo bar"
154
}
155
156
# -------------------------------------------------------------------------
157
# Helper tests for "t_expect".
158
# -------------------------------------------------------------------------
159
160
atf_test_case expect_pass_and_pass
161
expect_pass_and_pass_body()
162
{
163
atf_expect_pass
164
}
165
166
atf_test_case expect_pass_but_fail_requirement
167
expect_pass_but_fail_requirement_body()
168
{
169
atf_expect_pass
170
atf_fail "Some reason"
171
}
172
173
atf_test_case expect_pass_but_fail_check
174
expect_pass_but_fail_check_body()
175
{
176
atf_fail "Non-fatal failures not implemented"
177
}
178
179
atf_test_case expect_fail_and_fail_requirement
180
expect_fail_and_fail_requirement_body()
181
{
182
atf_expect_fail "Fail reason"
183
atf_fail "The failure"
184
atf_expect_pass
185
}
186
187
atf_test_case expect_fail_and_fail_check
188
expect_fail_and_fail_check_body()
189
{
190
atf_fail "Non-fatal failures not implemented"
191
}
192
193
atf_test_case expect_fail_but_pass
194
expect_fail_but_pass_body()
195
{
196
atf_expect_fail "Fail first"
197
atf_expect_pass
198
}
199
200
atf_test_case expect_exit_any_and_exit
201
expect_exit_any_and_exit_body()
202
{
203
atf_expect_exit -1 "Call will exit"
204
exit 0
205
}
206
207
atf_test_case expect_exit_code_and_exit
208
expect_exit_code_and_exit_body()
209
{
210
atf_expect_exit 123 "Call will exit"
211
exit 123
212
}
213
214
atf_test_case expect_exit_but_pass
215
expect_exit_but_pass_body()
216
{
217
atf_expect_exit -1 "Call won't exit"
218
}
219
220
atf_test_case expect_signal_any_and_signal
221
expect_signal_any_and_signal_body()
222
{
223
atf_expect_signal -1 "Call will signal"
224
kill -9 $$
225
}
226
227
atf_test_case expect_signal_no_and_signal
228
expect_signal_no_and_signal_body()
229
{
230
atf_expect_signal 1 "Call will signal"
231
kill -1 $$
232
}
233
234
atf_test_case expect_signal_but_pass
235
expect_signal_but_pass_body()
236
{
237
atf_expect_signal -1 "Call won't signal"
238
}
239
240
atf_test_case expect_death_and_exit
241
expect_death_and_exit_body()
242
{
243
atf_expect_death "Exit case"
244
exit 123
245
}
246
247
atf_test_case expect_death_and_signal
248
expect_death_and_signal_body()
249
{
250
atf_expect_death "Signal case"
251
kill -9 $$
252
}
253
254
atf_test_case expect_death_but_pass
255
expect_death_but_pass_body()
256
{
257
atf_expect_death "Call won't die"
258
}
259
260
atf_test_case expect_timeout_and_hang
261
expect_timeout_and_hang_head()
262
{
263
atf_set "timeout" "1"
264
}
265
expect_timeout_and_hang_body()
266
{
267
atf_expect_timeout "Will overrun"
268
sleep 5
269
}
270
271
atf_test_case expect_timeout_but_pass
272
expect_timeout_but_pass_head()
273
{
274
atf_set "timeout" "1"
275
}
276
expect_timeout_but_pass_body()
277
{
278
atf_expect_timeout "Will just exit"
279
}
280
281
# -------------------------------------------------------------------------
282
# Helper tests for "t_meta_data".
283
# -------------------------------------------------------------------------
284
285
atf_test_case metadata_no_descr
286
metadata_no_descr_head()
287
{
288
:
289
}
290
metadata_no_descr_body()
291
{
292
:
293
}
294
295
atf_test_case metadata_no_head
296
metadata_no_head_body()
297
{
298
:
299
}
300
301
# -------------------------------------------------------------------------
302
# Helper tests for "t_srcdir".
303
# -------------------------------------------------------------------------
304
305
atf_test_case srcdir_exists
306
srcdir_exists_head()
307
{
308
atf_set "descr" "Helper test case for the t_srcdir test program"
309
}
310
srcdir_exists_body()
311
{
312
[ -f "$(atf_get_srcdir)/datafile" ] || atf_fail "Cannot find datafile"
313
}
314
315
# -------------------------------------------------------------------------
316
# Helper tests for "t_result".
317
# -------------------------------------------------------------------------
318
319
atf_test_case result_pass
320
result_pass_body()
321
{
322
echo "msg"
323
}
324
325
atf_test_case result_fail
326
result_fail_body()
327
{
328
echo "msg"
329
atf_fail "Failure reason"
330
}
331
332
atf_test_case result_skip
333
result_skip_body()
334
{
335
echo "msg"
336
atf_skip "Skipped reason"
337
}
338
339
# -------------------------------------------------------------------------
340
# Main.
341
# -------------------------------------------------------------------------
342
343
atf_init_test_cases()
344
{
345
# Add helper tests for t_cleanup.
346
atf_add_test_case cleanup_pass
347
atf_add_test_case cleanup_fail
348
atf_add_test_case cleanup_skip
349
atf_add_test_case cleanup_curdir
350
atf_add_test_case cleanup_sigterm
351
352
# Add helper tests for t_config.
353
atf_add_test_case config_unset
354
atf_add_test_case config_empty
355
atf_add_test_case config_value
356
atf_add_test_case config_multi_value
357
358
# Add helper tests for t_expect.
359
atf_add_test_case expect_pass_and_pass
360
atf_add_test_case expect_pass_but_fail_requirement
361
atf_add_test_case expect_pass_but_fail_check
362
atf_add_test_case expect_fail_and_fail_requirement
363
atf_add_test_case expect_fail_and_fail_check
364
atf_add_test_case expect_fail_but_pass
365
atf_add_test_case expect_exit_any_and_exit
366
atf_add_test_case expect_exit_code_and_exit
367
atf_add_test_case expect_exit_but_pass
368
atf_add_test_case expect_signal_any_and_signal
369
atf_add_test_case expect_signal_no_and_signal
370
atf_add_test_case expect_signal_but_pass
371
atf_add_test_case expect_death_and_exit
372
atf_add_test_case expect_death_and_signal
373
atf_add_test_case expect_death_but_pass
374
atf_add_test_case expect_timeout_and_hang
375
atf_add_test_case expect_timeout_but_pass
376
377
# Add helper tests for t_meta_data.
378
atf_add_test_case metadata_no_descr
379
atf_add_test_case metadata_no_head
380
381
# Add helper tests for t_srcdir.
382
atf_add_test_case srcdir_exists
383
384
# Add helper tests for t_result.
385
atf_add_test_case result_pass
386
atf_add_test_case result_fail
387
atf_add_test_case result_skip
388
}
389
390
# vim: syntax=sh:expandtab:shiftwidth=4:softtabstop=4
391
392