diff options
Diffstat (limited to 'test/ruby/test_sleep.rb')
| -rw-r--r-- | test/ruby/test_sleep.rb | 32 |
1 files changed, 28 insertions, 4 deletions
diff --git a/test/ruby/test_sleep.rb b/test/ruby/test_sleep.rb index 675fdc9747..7ef962db4a 100644 --- a/test/ruby/test_sleep.rb +++ b/test/ruby/test_sleep.rb @@ -1,10 +1,34 @@ +# frozen_string_literal: false require 'test/unit' +require 'etc' +require 'timeout' class TestSleep < Test::Unit::TestCase def test_sleep_5sec - start = Time.now - sleep 5 - slept = Time.now-start - assert_in_delta(5.0, slept, 0.1, "[ruby-core:18015]: longer than expected") + EnvUtil.without_gc do + start = Process.clock_gettime(Process::CLOCK_MONOTONIC) + sleep 5 + slept = Process.clock_gettime(Process::CLOCK_MONOTONIC) - start + bottom = 5.0 + assert_operator(slept, :>=, bottom) + assert_operator(slept, :<=, 6.0, "[ruby-core:18015]: longer than expected") + end + end + + def test_sleep_forever_not_woken_by_sigchld + begin + t = Thread.new do + sleep 0.5 + `echo hello` + end + + assert_raise Timeout::Error do + Timeout.timeout 2 do + sleep # Should block forever + end + end + ensure + t.join + end end end |
