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

ruby-changes:12062

From: ryan <ko1@a...>
Date: Thu, 18 Jun 2009 16:31:56 +0900 (JST)
Subject: [ruby-changes:12062] Ruby:r23731 (trunk): Imported minitest 1.4.0 r5083.

ryan	2009-06-18 16:31:39 +0900 (Thu, 18 Jun 2009)

  New Revision: 23731

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=23731

  Log:
    Imported minitest 1.4.0 r5083.

  Modified files:
    trunk/ChangeLog
    trunk/lib/minitest/autorun.rb
    trunk/lib/minitest/spec.rb
    trunk/lib/minitest/unit.rb
    trunk/test/minitest/test_mini_test.rb

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 23730)
+++ ChangeLog	(revision 23731)
@@ -1,3 +1,8 @@
+Thu Jun 18 16:21:05 2009  Ryan Davis  <ryand-ruby@z...>
+
+	* lib/minitest/*.rb: Imported minitest 1.4.0 r5083.
+	* test/minitest/*.rb: ditto.
+
 Thu Jun 18 01:35:51 2009  Yukihiro Matsumoto  <matz@r...>
 
 	* numeric.c (flo_cmp): Infinity is greater than any bignum
Index: lib/minitest/autorun.rb
===================================================================
--- lib/minitest/autorun.rb	(revision 23730)
+++ lib/minitest/autorun.rb	(revision 23731)
@@ -5,5 +5,7 @@
 ############################################################
 
 require 'minitest/unit'
+require 'minitest/spec'
+require 'minitest/mock'
 
 MiniTest::Unit.autorun
Index: lib/minitest/unit.rb
===================================================================
--- lib/minitest/unit.rb	(revision 23730)
+++ lib/minitest/unit.rb	(revision 23731)
@@ -343,7 +343,7 @@
     def location e
       last_before_assertion = ""
       e.backtrace.reverse_each do |s|
-        break if s =~ /in .(assert|refute|flunk|pass|fail|raise)/
+        break if s =~ /in .(assert|refute|flunk|pass|fail|raise|must|wont)/
         last_before_assertion = s
       end
       last_before_assertion.sub(/:in .*$/, '')
@@ -430,30 +430,30 @@
     end
 
     class TestCase
-      attr_reader :name
+      attr_reader :__name__
 
       def run runner
         result = '.'
         begin
           @passed = nil
           self.setup
-          self.__send__ self.name
+          self.__send__ self.__name__
           @passed = true
         rescue Exception => e
           @passed = false
-          result = runner.puke(self.class, self.name, e)
+          result = runner.puke(self.class, self.__name__, e)
         ensure
           begin
             self.teardown
           rescue Exception => e
-            result = runner.puke(self.class, self.name, e)
+            result = runner.puke(self.class, self.__name__, e)
           end
         end
         result
       end
 
       def initialize name
-        @name = name
+        @__name__ = name
         @passed = nil
       end
 
Index: lib/minitest/spec.rb
===================================================================
--- lib/minitest/spec.rb	(revision 23730)
+++ lib/minitest/spec.rb	(revision 23731)
@@ -55,15 +55,25 @@
 
 module Kernel
   def describe desc, &block
-    cls = Class.new(MiniTest::Spec)
-    Object.const_set desc.to_s.split(/\W+/).map { |s| s.capitalize }.join, cls
+    stack = MiniTest::Spec.describe_stack
+    name  = desc.to_s.split(/\W+/).map { |s| s.capitalize }.join + "Spec"
+    cls   = Object.class_eval "class #{name} < #{stack.last}; end; #{name}"
 
+    cls.nuke_test_methods!
+
+    stack.push cls
     cls.class_eval(&block)
+    stack.pop
   end
   private :describe
 end
 
 class MiniTest::Spec < MiniTest::Unit::TestCase
+  @@describe_stack = [MiniTest::Spec]
+  def self.describe_stack
+    @@describe_stack
+  end
+
   def self.current
     @@current_spec
   end
@@ -73,14 +83,29 @@
     @@current_spec = self
   end
 
+  def self.nuke_test_methods!
+    self.public_instance_methods.grep(/^test_/).each do |name|
+      send :remove_method, name rescue nil
+    end
+  end
+
+  def self.define_inheritable_method name, &block
+    super_method = self.superclass.instance_method name
+
+    define_method name do
+      super_method.bind(self).call if super_method # regular super() warns
+      instance_eval(&block)
+    end
+  end
+
   def self.before(type = :each, &block)
     raise "unsupported before type: #{type}" unless type == :each
-    define_method :setup, &block
+    define_inheritable_method :setup, &block
   end
 
   def self.after(type = :each, &block)
     raise "unsupported after type: #{type}" unless type == :each
-    define_method :teardown, &block
+    define_inheritable_method :teardown, &block
   end
 
   def self.it desc, &block
Index: test/minitest/test_mini_test.rb
===================================================================
--- test/minitest/test_mini_test.rb	(revision 23730)
+++ test/minitest/test_mini_test.rb	(revision 23731)
@@ -325,7 +325,8 @@
     output.sub!(/^(\s+)(?:#{Regexp.union(__FILE__, File.expand_path(__FILE__))}):\d+:/o, '\1FILE:LINE:')
     output.sub!(/\[(?:#{Regexp.union(__FILE__, File.expand_path(__FILE__))}):\d+\]/o, '[FILE:LINE]')
     assert_equal(expected, output)
- end
+  end
+
   def test_run_failing_filtered
     tc = Class.new(MiniTest::Unit::TestCase) do
       def test_something
@@ -468,10 +469,9 @@
   end
 
   def test_assert_in_delta_triggered
-    e = assert_raises(MiniTest::Assertion) do
+    util_assert_triggered 'Expected 0.0 - 0.001 (0.001) to be < 1.0e-06.' do
       @tc.assert_in_delta 0.0, 1.0 / 1000, 0.000001
     end
-    assert_match /\AExpected 0\.0 - 0\.001 \(0\.001\) to be < (?:1\.0+\de-06|9\.9+\de-07).\z/, e.message
   end
 
   def test_assert_in_epsilon
@@ -489,10 +489,9 @@
   end
 
   def test_assert_in_epsilon_triggered
-    e = assert_raises(MiniTest::Assertion) do
+    util_assert_triggered 'Expected 10000 - 9990 (10) to be < 9.99.' do
       @tc.assert_in_epsilon 10000, 9990
-    end 
-    assert_match(/\AExpected 10000 - 9990 \(10\) to be < 9\.99*\d*\.\z/, e.message)
+    end
   end
 
   def test_assert_includes
@@ -831,10 +830,9 @@
   end
 
   def test_refute_in_delta_triggered
-    e = assert_raises(MiniTest::Assertion) do
+    util_assert_triggered 'Expected 0.0 - 0.001 (0.001) to not be < 0.1.' do
       @tc.refute_in_delta 0.0, 1.0 / 1000, 0.1
     end
-    assert_match /\AExpected 0\.0 - 0\.001 \(0\.001\) to not be < 0\.10*\d*\.\z/, e.message
   end
 
   def test_refute_in_epsilon
@@ -983,11 +981,6 @@
     msg = e.message.sub(/(---Backtrace---).*/m, '\1')
     msg.gsub!(/\(0x[0-9a-f]+\)/, '(0xXXX)')
 
-    begin
-      assert_equal expected, msg
-    rescue MiniTest::Assertion => e
-      e.backtrace.shift(3)
-      raise
-    end
+    assert_equal expected, msg
   end
 end

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

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