blob: 97892e50083176d83648f217ea4322a13de46a59 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
# frozen_string_literal: false
begin
require '-test-/popen_deadlock/infinite_loop_dlsym'
rescue LoadError
skip = true
end
class TestPopenDeadlock < Test::Unit::TestCase
# [Bug #11265]
def assert_popen_without_deadlock
assert_separately([], <<-"end;", timeout: 90) #do
require '-test-/popen_deadlock/infinite_loop_dlsym'
bug = '11265'.freeze
begin
t = Thread.new {
Thread.current.__infinite_loop_dlsym__("_ex_unwind")
}
str = IO.popen([ 'echo', bug ], 'r+') { |io| io.read }
assert_equal(bug, str.chomp)
ensure
t.kill if t
end
end;
end
private :assert_popen_without_deadlock
# 10 test methods are defined for showing progess reports
10.times do |i|
define_method("test_popen_without_deadlock_#{i}") {
assert_popen_without_deadlock
}
end
end unless skip #class TestPopenDeadlock
|