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/