summaryrefslogtreecommitdiff
path: root/test/ruby/test_optimization.rb
diff options
context:
space:
mode:
Diffstat (limited to 'test/ruby/test_optimization.rb')
-rw-r--r--test/ruby/test_optimization.rb27
1 files changed, 20 insertions, 7 deletions
diff --git a/test/ruby/test_optimization.rb b/test/ruby/test_optimization.rb
index 6f5262a69d..b964b26461 100644
--- a/test/ruby/test_optimization.rb
+++ b/test/ruby/test_optimization.rb
@@ -317,7 +317,7 @@ class TestRubyOptimization < Test::Unit::TestCase
end
def test_tailcall_interrupted_by_sigint
- bug = 'ruby-core:76327'
+ bug12576 = 'ruby-core:76327'
script = <<EOS
RubyVM::InstructionSequence.compile_option = {
:tailcall_optimization => true,
@@ -338,13 +338,26 @@ EOS
in_p.write(script)
in_p.close
out_p.gets
- Process.kill(:SIGINT, pid)
- *, stat = Process.wait2(pid)
- [stat, err_p.read]
+ sig = :INT
+ begin
+ Process.kill(sig, pid)
+ Timeout.timeout(1) do
+ *, stat = Process.wait2(pid)
+ [stat, err_p.read]
+ end
+ rescue Timeout::Error
+ if sig == :INT
+ sig = :KILL
+ retry
+ else
+ raise
+ end
+ end
}
- assert_equal("INT", Signal.signame(status.termsig))
- assert_match(/Interrupt/, err, bug)
- end
+ assert_not_equal(nil, status.termsig, bug12576)
+ assert_equal("INT", Signal.signame(status.termsig), bug12576)
+ assert_match(/Interrupt/, err, bug12576)
+ end unless /mswin|mingw/ =~ RUBY_PLATFORM
class Bug10557
def [](_)