Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/bin/timeout/tests/timeout_test.sh
39530 views
1
# SPDX-License-Identifier: BSD-2-Clause
2
# Copyright (c) 2014 Baptiste Daroussin <[email protected]>
3
4
atf_test_case nominal
5
nominal_head()
6
{
7
atf_set "descr" "Basic tests on timeout(1) utility"
8
}
9
10
nominal_body()
11
{
12
atf_check \
13
-o empty \
14
-e empty \
15
-s exit:0 \
16
timeout 5 true
17
}
18
19
atf_test_case time_unit
20
time_unit_head()
21
{
22
atf_set "descr" "Test parsing the default time unit"
23
}
24
25
time_unit_body()
26
{
27
atf_check \
28
-o empty \
29
-e empty \
30
-s exit:0 \
31
timeout 1d true
32
33
atf_check \
34
-o empty \
35
-e empty \
36
-s exit:0 \
37
timeout 1h true
38
39
atf_check \
40
-o empty \
41
-e empty \
42
-s exit:0 \
43
timeout 1m true
44
45
atf_check \
46
-o empty \
47
-e empty \
48
-s exit:0 \
49
timeout 1s true
50
}
51
52
atf_test_case no_timeout
53
no_timeout_head()
54
{
55
atf_set "descr" "Test disabled timeout"
56
}
57
58
no_timeout_body()
59
{
60
atf_check \
61
-o empty \
62
-e empty \
63
-s exit:0 \
64
timeout 0 true
65
}
66
67
atf_test_case exit_numbers
68
exit_numbers_head()
69
{
70
atf_set "descr" "Test exit numbers"
71
}
72
73
exit_numbers_body()
74
{
75
atf_check \
76
-o empty \
77
-e empty \
78
-s exit:2 \
79
-x timeout 5 sh -c \'exit 2\'
80
81
atf_check \
82
-o empty \
83
-e empty \
84
-s exit:124 \
85
timeout .1 sleep 1
86
87
# With preserve status exit should be 128 + TERM aka 143
88
atf_check \
89
-o empty \
90
-e empty \
91
-s signal:15 \
92
timeout --preserve-status .1 sleep 10
93
94
atf_check \
95
-o empty \
96
-e empty \
97
-s exit:124 \
98
timeout -s1 -k1 .1 sleep 10
99
100
atf_check \
101
-o empty \
102
-e empty \
103
-s exit:0 \
104
-x sh -c 'trap "" CHLD; exec timeout 10 true'
105
}
106
107
atf_test_case with_a_child
108
with_a_child_head()
109
{
110
atf_set "descr" "When starting with a child (coreutils bug#9098)"
111
}
112
113
with_a_child_body()
114
{
115
out=$(sleep .1 & exec timeout .5 sh -c 'sleep 2; echo foo')
116
status=$?
117
test "$out" = "" && test $status = 124 || atf_fail "wrong status $status"
118
119
}
120
121
atf_test_case invalid_timeout
122
invalid_timeout_head()
123
{
124
atf_set "descr" "Invalid timeout"
125
}
126
127
invalid_timeout_body()
128
{
129
atf_check \
130
-o empty \
131
-e inline:"timeout: duration is not a number\n" \
132
-s exit:125 \
133
timeout invalid sleep 0
134
135
atf_check \
136
-o empty \
137
-e inline:"timeout: duration is not a number\n" \
138
-s exit:125 \
139
timeout --kill-after=invalid 1 sleep 0
140
141
atf_check \
142
-o empty \
143
-e inline:"timeout: duration unit suffix invalid\n" \
144
-s exit:125 \
145
timeout 42D sleep 0
146
147
atf_check \
148
-o empty \
149
-e inline:"timeout: duration out of range\n" \
150
-s exit:125 \
151
timeout 999999999999999999999999999999999999999999999999999999999999d sleep 0
152
153
atf_check \
154
-o empty \
155
-e inline:"timeout: duration out of range\n" \
156
-s exit:125 \
157
timeout 2.34e+5d sleep 0
158
}
159
160
atf_test_case invalid_signal
161
invalid_signal_head()
162
{
163
atf_set "descr" "Invalid signal"
164
}
165
166
invalid_signal_body()
167
{
168
atf_check \
169
-o empty \
170
-e inline:"timeout: invalid signal\n" \
171
-s exit:125 \
172
timeout --signal=invalid 1 sleep 0
173
}
174
175
atf_test_case invalid_command
176
invalid_command_head()
177
{
178
atf_set "descr" "Invalid command"
179
}
180
181
invalid_command_body()
182
{
183
atf_check \
184
-o empty \
185
-e inline:"timeout: exec(.): Permission denied\n" \
186
-s exit:126 \
187
timeout 10 .
188
}
189
190
atf_test_case no_such_command
191
no_such_command_head()
192
{
193
atf_set "descr" "No such command"
194
}
195
196
no_such_command_body()
197
{
198
atf_check \
199
-o empty \
200
-e inline:"timeout: exec(enoexists): No such file or directory\n" \
201
-s exit:127 \
202
timeout 10 enoexists
203
}
204
205
atf_init_test_cases()
206
{
207
atf_add_test_case nominal
208
atf_add_test_case time_unit
209
atf_add_test_case no_timeout
210
atf_add_test_case exit_numbers
211
atf_add_test_case with_a_child
212
atf_add_test_case invalid_timeout
213
atf_add_test_case invalid_signal
214
atf_add_test_case invalid_command
215
atf_add_test_case no_such_command
216
}
217
218