ruby-changes:4785
From: ko1@a...
Date: Sat, 3 May 2008 20:58:17 +0900 (JST)
Subject: [ruby-changes:4785] akr - Ruby:r16279 (trunk): * test/ruby/envutil.rb (Test::Unit::Assertions#assert_normal_exit):
akr 2008-05-03 20:57:55 +0900 (Sat, 03 May 2008) New Revision: 16279 Modified files: trunk/ChangeLog trunk/test/ruby/envutil.rb trunk/test/ruby/test_continuation.rb Log: * test/ruby/envutil.rb (Test::Unit::Assertions#assert_normal_exit): new method. http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=16279&r2=16278&diff_format=u http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/test/ruby/test_continuation.rb?r1=16279&r2=16278&diff_format=u http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/test/ruby/envutil.rb?r1=16279&r2=16278&diff_format=u Index: ChangeLog =================================================================== --- ChangeLog (revision 16278) +++ ChangeLog (revision 16279) @@ -1,3 +1,8 @@ +Sat May 3 20:57:06 2008 Tanaka Akira <akr@f...> + + * test/ruby/envutil.rb (Test::Unit::Assertions#assert_normal_exit): + new method. + Sat May 3 18:10:54 2008 Tanaka Akira <akr@f...> * time.c (time_timespec): raise TypeError for nil and other objects Index: test/ruby/test_continuation.rb =================================================================== --- test/ruby/test_continuation.rb (revision 16278) +++ test/ruby/test_continuation.rb (revision 16279) @@ -1,6 +1,7 @@ require 'test/unit' require 'continuation' require 'fiber' +require_relative 'envutil' class TestContinuation < Test::Unit::TestCase def test_create @@ -50,5 +51,19 @@ c.call } end + + def test_sort + assert_normal_exit(<<-'End') + require 'continuation' + n = 1000 + ary = (1..100).to_a + ary.sort! {|a,b| + callcc {|k| $k = k } if !defined? $k + a <=> b + } + n -= 1 + $k.call if 0 < n + End + end end Index: test/ruby/envutil.rb =================================================================== --- test/ruby/envutil.rb (revision 16278) +++ test/ruby/envutil.rb (revision 16279) @@ -71,3 +71,29 @@ end module_function :rubyexec end + +module Test + module Unit + module Assertions + public + def assert_normal_exit(testsrc, message = '') + IO.popen([EnvUtil.rubybin, '-W0'], 'w') {|io| + io.write testsrc + } + status = $? + faildesc = nil + if status.signaled? + signo = status.termsig + signame = Signal.list.invert[signo] + sigdesc = "signal #{signo}" + if signame + sigdesc = "SIG#{signame} (#{sigdesc})" + end + full_message = build_message(message, "killed by ?", sigdesc) + end + assert_block(full_message) { !status.signaled? } + end + end + end +end + -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/