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

ruby-changes:6361

From: akr <ko1@a...>
Date: Fri, 4 Jul 2008 22:19:40 +0900 (JST)
Subject: [ruby-changes:6361] Ruby:r17877 (trunk): * lib/test/unit/testcase.rb: collect decendants of

akr	2008-07-04 22:19:24 +0900 (Fri, 04 Jul 2008)

  New Revision: 17877

  Modified files:
    trunk/ChangeLog
    trunk/lib/test/unit/autorunner.rb
    trunk/lib/test/unit/collector/dir.rb
    trunk/lib/test/unit/collector/objectspace.rb
    trunk/lib/test/unit/testcase.rb

  Log:
    * lib/test/unit/testcase.rb: collect decendants of
      Test::Unit::TestCase using inherited.
    
    * lib/test/unit/autorunner.rb: don't use ObjectSpace.each_object.
    
    * lib/test/unit/collector/dir.rb: ditto.
    
    * lib/test/unit/collector/objectspace.rb: ditto.
    
    [ruby-core:17126]
    


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

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 17876)
+++ ChangeLog	(revision 17877)
@@ -1,3 +1,16 @@
+Fri Jul  4 22:15:29 2008  Tanaka Akira  <akr@f...>
+
+	* lib/test/unit/testcase.rb: collect decendants of
+	  Test::Unit::TestCase using inherited.
+
+	* lib/test/unit/autorunner.rb: don't use ObjectSpace.each_object.
+
+	* lib/test/unit/collector/dir.rb: ditto.
+
+	* lib/test/unit/collector/objectspace.rb: ditto.
+
+	[ruby-core:17126]
+
 Fri Jul  4 20:43:53 2008  Nobuyoshi Nakada  <nobu@r...>
 
 	* include/ruby/oniguruma.h (OnigEncoding): removed auxiliary_data.
Index: lib/test/unit/autorunner.rb
===================================================================
--- lib/test/unit/autorunner.rb	(revision 17876)
+++ lib/test/unit/autorunner.rb	(revision 17877)
@@ -14,10 +14,7 @@
       
       def self.standalone?
         return false unless("-e" == $0)
-        ObjectSpace.each_object(Class) do |klass|
-          return false if(klass < TestCase)
-        end
-        true
+        TestCase::DECENDANT_CLASSES.empty?
       end
 
       RUNNERS = {
Index: lib/test/unit/collector/dir.rb
===================================================================
--- lib/test/unit/collector/dir.rb	(revision 17876)
+++ lib/test/unit/collector/dir.rb	(revision 17877)
@@ -10,7 +10,7 @@
         attr_reader :pattern, :exclude
         attr_accessor :base
 
-        def initialize(dir=::Dir, file=::File, object_space=::ObjectSpace, req=nil)
+        def initialize(dir=::Dir, file=::File, object_space=nil, req=nil)
           super()
           @dir = dir
           @file = file
@@ -43,8 +43,14 @@
 
         def find_test_cases(ignore=[])
           cases = []
-          @object_space.each_object(Class) do |c|
-            cases << c if(c < TestCase && !ignore.include?(c))
+          if @object_space
+            @object_space.each_object(Class) do |c|
+              cases << c if(c < TestCase && !ignore.include?(c))
+            end
+          else
+            TestCase::DECENDANT_CLASSES.each do |c|
+              cases << c if !ignore.include?(c)
+            end
           end
           ignore.concat(cases)
           cases
Index: lib/test/unit/collector/objectspace.rb
===================================================================
--- lib/test/unit/collector/objectspace.rb	(revision 17876)
+++ lib/test/unit/collector/objectspace.rb	(revision 17877)
@@ -10,9 +10,9 @@
       class ObjectSpace
         include Test::Unit::Collector
         
-        NAME = 'collected from the ObjectSpace'
+        NAME = 'collected from the subclasses of TestSuite'
         
-        def initialize(source=::ObjectSpace)
+        def initialize(source=nil)
           super()
           @source = source
         end
@@ -20,8 +20,14 @@
         def collect(name=NAME)
           suite = TestSuite.new(name)
           sub_suites = []
-          @source.each_object(Class) do |klass|
-            if(Test::Unit::TestCase > klass)
+          if @source
+            @source.each_object(Class) do |klass|
+              if(Test::Unit::TestCase > klass)
+                add_suite(sub_suites, klass.suite)
+              end
+            end
+          else
+            TestCase::DECENDANT_CLASSES.each do |klass|
               add_suite(sub_suites, klass.suite)
             end
           end
Index: lib/test/unit/testcase.rb
===================================================================
--- lib/test/unit/testcase.rb	(revision 17876)
+++ lib/test/unit/testcase.rb	(revision 17877)
@@ -34,6 +34,11 @@
       PASSTHROUGH_EXCEPTIONS = [NoMemoryError, SignalException, Interrupt,
                                 SystemExit]
 
+      DECENDANT_CLASSES = []
+      def self.inherited(decendant)
+        DECENDANT_CLASSES << decendant
+      end
+
       # Creates a new instance of the fixture for running the
       # test represented by test_method_name.
       def initialize(test_method_name)

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

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