mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* bootstraptest/runner.rb (assert_finish): new method.
* bootstraptest/test_knownbug.rb: add test for [ruby-dev:31866] using assert_finish. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13531 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
19d8793ef4
commit
654cdfb90b
3 changed files with 61 additions and 5 deletions
|
@ -1,3 +1,10 @@
|
|||
Thu Sep 27 07:39:13 2007 Tanaka Akira <akr@fsij.org>
|
||||
|
||||
* bootstraptest/runner.rb (assert_finish): new method.
|
||||
|
||||
* bootstraptest/test_knownbug.rb: add test for [ruby-dev:31866] using
|
||||
assert_finish.
|
||||
|
||||
Thu Sep 27 04:46:31 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||
|
||||
* encoding.c (rb_enc_associate_index): deal with ASCII compatible
|
||||
|
|
|
@ -166,6 +166,39 @@ def assert_match(expected_pattern, testsrc, message = '')
|
|||
}
|
||||
end
|
||||
|
||||
def assert_finish(timeout_seconds, testsrc, message = '')
|
||||
newtest
|
||||
$stderr.puts "\##{@count} #{@location}" if @verbose
|
||||
faildesc = nil
|
||||
filename = make_srcfile(testsrc)
|
||||
io = IO.popen("#{@ruby} -W0 #{filename}")
|
||||
pid = io.pid
|
||||
waited = false
|
||||
tlimit = Time.now + timeout_seconds
|
||||
while Time.now < tlimit
|
||||
if Process.waitpid pid, Process::WNOHANG
|
||||
waited = true
|
||||
break
|
||||
end
|
||||
sleep 0.1
|
||||
end
|
||||
if !waited
|
||||
Process.kill(:KILL, pid)
|
||||
Process.waitpid pid
|
||||
faildesc = pretty(testsrc, "not finished in #{timeout_seconds} seconds", nil)
|
||||
end
|
||||
io.close
|
||||
if !faildesc
|
||||
$stderr.print '.'
|
||||
else
|
||||
$stderr.print 'F'
|
||||
error faildesc, message
|
||||
end
|
||||
rescue Exception => err
|
||||
$stderr.print 'E'
|
||||
error err.message, message
|
||||
end
|
||||
|
||||
def pretty(src, desc, result)
|
||||
(/\n/ =~ src ? "\n#{adjust_indent(src)}" : src) + " #=> #{desc}"
|
||||
end
|
||||
|
@ -180,14 +213,20 @@ def untabify(str)
|
|||
str.gsub(/^\t+/) {|tabs| ' ' * (8 * tabs.size) }
|
||||
end
|
||||
|
||||
def make_srcfile(src)
|
||||
filename = 'bootstraptest.tmp.rb'
|
||||
File.open(filename, 'w') {|f|
|
||||
f.puts "GC.stress = true" if $stress
|
||||
f.puts "print(begin; #{src}; end)"
|
||||
}
|
||||
filename
|
||||
end
|
||||
|
||||
def get_result_string(src)
|
||||
if @ruby
|
||||
File.open('bootstraptest.tmp.rb', 'w') {|f|
|
||||
f.puts "GC.stress = true" if $stress
|
||||
f.puts "print(begin; #{src}; end)"
|
||||
}
|
||||
filename = make_srcfile(src)
|
||||
begin
|
||||
`#{@ruby} -W0 bootstraptest.tmp.rb`
|
||||
`#{@ruby} -W0 #{filename}`
|
||||
ensure
|
||||
raise CoreDumpError, "core dumped" if $? and $?.coredump?
|
||||
end
|
||||
|
|
|
@ -2,3 +2,13 @@
|
|||
# This test file concludes tests which point out known bugs.
|
||||
# So all tests will cause failure.
|
||||
#
|
||||
|
||||
assert_finish 1, %q{
|
||||
r, w = IO.pipe
|
||||
t1 = Thread.new { r.sysread(10) }
|
||||
t2 = Thread.new { r.sysread(10) }
|
||||
sleep 0.1
|
||||
w.write "a"
|
||||
sleep 0.1
|
||||
w.write "a"
|
||||
}, '[ruby-dev:31866]'
|
||||
|
|
Loading…
Add table
Reference in a new issue