Path: blob/main/bin/timeout/tests/timeout_test.sh
102695 views
# SPDX-License-Identifier: BSD-2-Clause1# Copyright (c) 2014 Baptiste Daroussin <[email protected]>23atf_test_case nominal4nominal_head()5{6atf_set "descr" "Basic tests on timeout(1) utility"7}89nominal_body()10{11atf_check \12-o empty \13-e empty \14-s exit:0 \15timeout 5 true16}1718atf_test_case time_unit19time_unit_head()20{21atf_set "descr" "Test parsing the default time unit"22}2324time_unit_body()25{26atf_check \27-o empty \28-e empty \29-s exit:0 \30timeout 1d true3132atf_check \33-o empty \34-e empty \35-s exit:0 \36timeout 1h true3738atf_check \39-o empty \40-e empty \41-s exit:0 \42timeout 1m true4344atf_check \45-o empty \46-e empty \47-s exit:0 \48timeout 1s true49}5051atf_test_case no_timeout52no_timeout_head()53{54atf_set "descr" "Test disabled timeout"55}5657no_timeout_body()58{59atf_check \60-o empty \61-e empty \62-s exit:0 \63timeout 0 true64}6566atf_test_case exit_numbers67exit_numbers_head()68{69atf_set "descr" "Test exit numbers"70}7172exit_numbers_body()73{74atf_check \75-o empty \76-e empty \77-s exit:2 \78-x timeout 5 sh -c \'exit 2\'7980atf_check \81-o empty \82-e empty \83-s exit:124 \84timeout .1 sleep 18586# With preserve status exit should be 128 + TERM aka 14387atf_check \88-o empty \89-e empty \90-s signal:15 \91timeout --preserve-status .1 sleep 109293atf_check \94-o empty \95-e empty \96-s exit:124 \97timeout -s1 -k1 .1 sleep 109899atf_check \100-o empty \101-e empty \102-s exit:0 \103-x sh -c 'trap "" CHLD; exec timeout 10 true'104}105106atf_test_case with_a_child107with_a_child_head()108{109atf_set "descr" "When starting with a child (coreutils bug#9098)"110}111112with_a_child_body()113{114out=$(sleep .1 & exec timeout .5 sh -c 'sleep 2; echo foo')115status=$?116test "$out" = "" && test $status = 124 || atf_fail "wrong status $status"117118}119120atf_test_case invalid_timeout121invalid_timeout_head()122{123atf_set "descr" "Invalid timeout"124}125126invalid_timeout_body()127{128atf_check \129-o empty \130-e inline:"timeout: duration is not a number\n" \131-s exit:125 \132timeout invalid sleep 0133134atf_check \135-o empty \136-e inline:"timeout: duration is not a number\n" \137-s exit:125 \138timeout --kill-after=invalid 1 sleep 0139140atf_check \141-o empty \142-e inline:"timeout: duration unit suffix invalid\n" \143-s exit:125 \144timeout 42D sleep 0145146atf_check \147-o empty \148-e inline:"timeout: duration out of range\n" \149-s exit:125 \150timeout 999999999999999999999999999999999999999999999999999999999999d sleep 0151152atf_check \153-o empty \154-e inline:"timeout: duration out of range\n" \155-s exit:125 \156timeout 2.34e+5d sleep 0157}158159atf_test_case invalid_signal160invalid_signal_head()161{162atf_set "descr" "Invalid signal"163}164165invalid_signal_body()166{167atf_check \168-o empty \169-e inline:"timeout: invalid signal\n" \170-s exit:125 \171timeout --signal=invalid 1 sleep 0172}173174atf_test_case invalid_command175invalid_command_head()176{177atf_set "descr" "Invalid command"178}179180invalid_command_body()181{182atf_check \183-o empty \184-e inline:"timeout: exec(.): Permission denied\n" \185-s exit:126 \186timeout 10 .187}188189atf_test_case no_such_command190no_such_command_head()191{192atf_set "descr" "No such command"193}194195no_such_command_body()196{197atf_check \198-o empty \199-e inline:"timeout: exec(enoexists): No such file or directory\n" \200-s exit:127 \201timeout 10 enoexists202}203204atf_init_test_cases()205{206atf_add_test_case nominal207atf_add_test_case time_unit208atf_add_test_case no_timeout209atf_add_test_case exit_numbers210atf_add_test_case with_a_child211atf_add_test_case invalid_timeout212atf_add_test_case invalid_signal213atf_add_test_case invalid_command214atf_add_test_case no_such_command215}216217218