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>
|
Thu Sep 27 04:46:31 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||||
|
|
||||||
* encoding.c (rb_enc_associate_index): deal with ASCII compatible
|
* encoding.c (rb_enc_associate_index): deal with ASCII compatible
|
||||||
|
|
|
@ -166,6 +166,39 @@ def assert_match(expected_pattern, testsrc, message = '')
|
||||||
}
|
}
|
||||||
end
|
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)
|
def pretty(src, desc, result)
|
||||||
(/\n/ =~ src ? "\n#{adjust_indent(src)}" : src) + " #=> #{desc}"
|
(/\n/ =~ src ? "\n#{adjust_indent(src)}" : src) + " #=> #{desc}"
|
||||||
end
|
end
|
||||||
|
@ -180,14 +213,20 @@ def untabify(str)
|
||||||
str.gsub(/^\t+/) {|tabs| ' ' * (8 * tabs.size) }
|
str.gsub(/^\t+/) {|tabs| ' ' * (8 * tabs.size) }
|
||||||
end
|
end
|
||||||
|
|
||||||
def get_result_string(src)
|
def make_srcfile(src)
|
||||||
if @ruby
|
filename = 'bootstraptest.tmp.rb'
|
||||||
File.open('bootstraptest.tmp.rb', 'w') {|f|
|
File.open(filename, 'w') {|f|
|
||||||
f.puts "GC.stress = true" if $stress
|
f.puts "GC.stress = true" if $stress
|
||||||
f.puts "print(begin; #{src}; end)"
|
f.puts "print(begin; #{src}; end)"
|
||||||
}
|
}
|
||||||
|
filename
|
||||||
|
end
|
||||||
|
|
||||||
|
def get_result_string(src)
|
||||||
|
if @ruby
|
||||||
|
filename = make_srcfile(src)
|
||||||
begin
|
begin
|
||||||
`#{@ruby} -W0 bootstraptest.tmp.rb`
|
`#{@ruby} -W0 #{filename}`
|
||||||
ensure
|
ensure
|
||||||
raise CoreDumpError, "core dumped" if $? and $?.coredump?
|
raise CoreDumpError, "core dumped" if $? and $?.coredump?
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,3 +2,13 @@
|
||||||
# This test file concludes tests which point out known bugs.
|
# This test file concludes tests which point out known bugs.
|
||||||
# So all tests will cause failure.
|
# 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
Add a link
Reference in a new issue