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