Author: bapt
Date: Tue Oct 28 10:39:41 2014
New Revision: 273771
URL: https://svnweb.freebsd.org/changeset/base/273771

Log:
  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

Added:
  head/usr.bin/timeout/tests/
  head/usr.bin/timeout/tests/Makefile   (contents, props changed)
  head/usr.bin/timeout/tests/timeout.sh   (contents, props changed)
Modified:
  head/etc/mtree/BSD.tests.dist
  head/usr.bin/timeout/Makefile

Modified: head/etc/mtree/BSD.tests.dist
==============================================================================
--- head/etc/mtree/BSD.tests.dist       Tue Oct 28 10:39:29 2014        
(r273770)
+++ head/etc/mtree/BSD.tests.dist       Tue Oct 28 10:39:41 2014        
(r273771)
@@ -281,6 +281,8 @@
                 regress.multitest.out
                 ..
             ..
+            timeout
+            ..
             tr
             ..
             truncate

Modified: head/usr.bin/timeout/Makefile
==============================================================================
--- head/usr.bin/timeout/Makefile       Tue Oct 28 10:39:29 2014        
(r273770)
+++ head/usr.bin/timeout/Makefile       Tue Oct 28 10:39:41 2014        
(r273771)
@@ -1,5 +1,11 @@
 # $FreeBSD$
 
+.include <src.opts.mk>
+
 PROG=  timeout
 
+.if ${MK_TESTS} != "no"
+SUBDIR+= tests
+.endif
+
 .include <bsd.prog.mk>

Added: head/usr.bin/timeout/tests/Makefile
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ head/usr.bin/timeout/tests/Makefile Tue Oct 28 10:39:41 2014        
(r273771)
@@ -0,0 +1,7 @@
+# $FreeBSD$
+
+TESTSDIR=      ${TESTSBASE}/usr.bin/timeout
+
+ATF_TESTS_SH=  timeout
+
+.include <bsd.test.mk>

Added: head/usr.bin/timeout/tests/timeout.sh
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ head/usr.bin/timeout/tests/timeout.sh       Tue Oct 28 10:39:41 2014        
(r273771)
@@ -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
+}
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to