[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]