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/