Add regression tests for the timeout(1) utility
They are modeled over the regression tests that are provided for the GNU coreutils timeout(1) utility
This commit is contained in:
parent
d9b4554dbd
commit
1c1c418e52
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=273771
@ -281,6 +281,8 @@
|
||||
regress.multitest.out
|
||||
..
|
||||
..
|
||||
timeout
|
||||
..
|
||||
tr
|
||||
..
|
||||
truncate
|
||||
|
@ -1,5 +1,11 @@
|
||||
# $FreeBSD$
|
||||
|
||||
.include <src.opts.mk>
|
||||
|
||||
PROG= timeout
|
||||
|
||||
.if ${MK_TESTS} != "no"
|
||||
SUBDIR+= tests
|
||||
.endif
|
||||
|
||||
.include <bsd.prog.mk>
|
||||
|
7
usr.bin/timeout/tests/Makefile
Normal file
7
usr.bin/timeout/tests/Makefile
Normal file
@ -0,0 +1,7 @@
|
||||
# $FreeBSD$
|
||||
|
||||
TESTSDIR= ${TESTSBASE}/usr.bin/timeout
|
||||
|
||||
ATF_TESTS_SH= timeout
|
||||
|
||||
.include <bsd.test.mk>
|
215
usr.bin/timeout/tests/timeout.sh
Normal file
215
usr.bin/timeout/tests/timeout.sh
Normal file
@ -0,0 +1,215 @@
|
||||
# $FreeBSD$
|
||||
|
||||
atf_test_case nominal
|
||||
nominal_head()
|
||||
{
|
||||
atf_set "descr" "Basic tests on timeout(1) utility"
|
||||
}
|
||||
|
||||
nominal_body()
|
||||
{
|
||||
atf_check \
|
||||
-o empty \
|
||||
-e empty \
|
||||
-s exit:0 \
|
||||
-x timeout 5 true
|
||||
}
|
||||
|
||||
atf_test_case time_unit
|
||||
time_unit_head()
|
||||
{
|
||||
atf_set "descr" "Test parsing the default time unit"
|
||||
}
|
||||
|
||||
time_unit_body()
|
||||
{
|
||||
atf_check \
|
||||
-o empty \
|
||||
-e empty \
|
||||
-s exit:0 \
|
||||
-x timeout 1d true
|
||||
|
||||
atf_check \
|
||||
-o empty \
|
||||
-e empty \
|
||||
-s exit:0 \
|
||||
-x timeout 1h true
|
||||
|
||||
atf_check \
|
||||
-o empty \
|
||||
-e empty \
|
||||
-s exit:0 \
|
||||
-x timeout 1m true
|
||||
|
||||
atf_check \
|
||||
-o empty \
|
||||
-e empty \
|
||||
-s exit:0 \
|
||||
-x timeout 1s true
|
||||
}
|
||||
|
||||
atf_test_case no_timeout
|
||||
no_timeout_head()
|
||||
{
|
||||
atf_set "descr" "Test disabled timeout"
|
||||
}
|
||||
|
||||
no_timeout_body()
|
||||
{
|
||||
atf_check \
|
||||
-o empty \
|
||||
-e empty \
|
||||
-s exit:0 \
|
||||
-x timeout 0 true
|
||||
}
|
||||
|
||||
atf_test_case exit_numbers
|
||||
exit_numbers_head()
|
||||
{
|
||||
atf_set "descr" "Test exit numbers"
|
||||
}
|
||||
|
||||
exit_numbers_body()
|
||||
{
|
||||
atf_check \
|
||||
-o empty \
|
||||
-e empty \
|
||||
-s exit:2 \
|
||||
-x timeout 5 sh -c \'exit 2\'
|
||||
|
||||
atf_check \
|
||||
-o empty \
|
||||
-e empty \
|
||||
-s exit:124 \
|
||||
-x timeout .1 sleep 1
|
||||
|
||||
# With preserv status exit shoudl be 128 + TERM aka 143
|
||||
atf_check \
|
||||
-o empty \
|
||||
-e empty \
|
||||
-s exit:143 \
|
||||
-x timeout --preserve-status .1 sleep 10
|
||||
|
||||
atf_check \
|
||||
-o empty \
|
||||
-e empty \
|
||||
-s exit:124 \
|
||||
-x timeout -s1 -k1 .1 sleep 10
|
||||
|
||||
atf_check \
|
||||
-o empty \
|
||||
-e empty \
|
||||
-s exit:0 \
|
||||
-x sh -c 'trap "" CHLD; exec timeout 10 true'
|
||||
}
|
||||
|
||||
atf_test_case with_a_child
|
||||
with_a_child_head()
|
||||
{
|
||||
atf_set "descr" "When starting with a child (coreutils bug#9098)"
|
||||
}
|
||||
|
||||
with_a_child_body()
|
||||
{
|
||||
out=$(sleep .1 & exec timeout .5 sh -c 'sleep 2; echo foo')
|
||||
status=$?
|
||||
test "$out" = "" && test $status = 124 || atf_fail
|
||||
|
||||
}
|
||||
|
||||
atf_test_case invalid_timeout
|
||||
invalid_timeout_head()
|
||||
{
|
||||
atf_set "descr" "Invalid timeout"
|
||||
}
|
||||
|
||||
invalid_timeout_body()
|
||||
{
|
||||
atf_check \
|
||||
-o empty \
|
||||
-e inline:"timeout: invalid duration\n" \
|
||||
-s exit:125 \
|
||||
-x timeout invalid sleep 0
|
||||
|
||||
atf_check \
|
||||
-o empty \
|
||||
-e inline:"timeout: invalid duration\n" \
|
||||
-s exit:125 \
|
||||
-x timeout --kill-after=invalid 1 sleep 0
|
||||
|
||||
atf_check \
|
||||
-o empty \
|
||||
-e inline:"timeout: invalid duration\n" \
|
||||
-s exit:125 \
|
||||
-x timeout 42D sleep 0
|
||||
|
||||
atf_check \
|
||||
-o empty \
|
||||
-e inline:"timeout: invalid duration\n" \
|
||||
-s exit:125 \
|
||||
-x timeout 999999999999999999999999999999999999999999999999999999999999d sleep 0
|
||||
|
||||
atf_check \
|
||||
-o empty \
|
||||
-e inline:"timeout: invalid duration\n" \
|
||||
-s exit:125 \
|
||||
-x timeout 2.34e+5d sleep 0
|
||||
}
|
||||
|
||||
atf_test_case invalid_signal
|
||||
invalid_signal_head()
|
||||
{
|
||||
atf_set "descr" "Invalid signal"
|
||||
}
|
||||
|
||||
invalid_signal_body()
|
||||
{
|
||||
atf_check \
|
||||
-o empty \
|
||||
-e inline:"timeout: invalid signal\n" \
|
||||
-s exit:125 \
|
||||
-x timeout --signal=invalid 1 sleep 0
|
||||
}
|
||||
|
||||
atf_test_case invalid_command
|
||||
invalid_command_head()
|
||||
{
|
||||
atf_set "descr" "Invalid command"
|
||||
}
|
||||
|
||||
invalid_command_body()
|
||||
{
|
||||
atf_check \
|
||||
-o empty \
|
||||
-e inline:"timeout: exec(.): Permission denied\n" \
|
||||
-s exit:126 \
|
||||
-x timeout 10 .
|
||||
}
|
||||
|
||||
atf_test_case no_such_command
|
||||
no_such_command_head()
|
||||
{
|
||||
atf_set "descr" "No such command"
|
||||
}
|
||||
|
||||
no_such_command_body()
|
||||
{
|
||||
atf_check \
|
||||
-o empty \
|
||||
-e inline:"timeout: exec(enoexists): No such file or directory\n" \
|
||||
-s exit:127 \
|
||||
-x timeout 10 enoexists
|
||||
}
|
||||
|
||||
atf_init_test_cases()
|
||||
{
|
||||
atf_add_test_case nominal
|
||||
atf_add_test_case time_unit
|
||||
atf_add_test_case no_timeout
|
||||
atf_add_test_case exit_numbers
|
||||
atf_add_test_case with_a_child
|
||||
atf_add_test_case invalid_timeout
|
||||
atf_add_test_case invalid_signal
|
||||
atf_add_test_case invalid_command
|
||||
atf_add_test_case no_such_command
|
||||
}
|
Loading…
Reference in New Issue
Block a user