1
0
Fork 0
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:
akr 2007-09-26 22:40:44 +00:00
parent 19d8793ef4
commit 654cdfb90b
3 changed files with 61 additions and 5 deletions

View file

@ -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

View file

@ -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

View file

@ -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]'