summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/test/unit/collector/objectspace.rb11
-rw-r--r--lib/test/unit/testsuite.rb5
2 files changed, 13 insertions, 3 deletions
diff --git a/lib/test/unit/collector/objectspace.rb b/lib/test/unit/collector/objectspace.rb
index ac79980d7f..5a1d29cc1a 100644
--- a/lib/test/unit/collector/objectspace.rb
+++ b/lib/test/unit/collector/objectspace.rb
@@ -15,11 +15,16 @@ module Test
def collect(name=NAME)
suite = TestSuite.new(name)
- tests = []
+ sub_suites = []
@source.each_object(Class) do |klass|
- tests.concat(klass.suite.tests) if(Test::Unit::TestCase > klass)
+ if(Test::Unit::TestCase > klass)
+ sub_suite = klass.suite
+ to_delete = sub_suite.tests.find_all{|t| !include(t)}
+ to_delete.each{|t| sub_suite.delete(t)}
+ sub_suites << sub_suite unless(sub_suite.size == 0)
+ end
end
- tests.sort_by{|t| t.name}.each{|test| suite << test if(include(test))}
+ sub_suites.sort_by{|s| s.name}.each{|s| suite << s}
suite
end
diff --git a/lib/test/unit/testsuite.rb b/lib/test/unit/testsuite.rb
index 4ece3257ca..b3a704ec63 100644
--- a/lib/test/unit/testsuite.rb
+++ b/lib/test/unit/testsuite.rb
@@ -39,6 +39,11 @@ module Test
# Adds the test to the suite.
def <<(test)
@tests << test
+ self
+ end
+
+ def delete(test)
+ @tests.delete(test)
end
# Retuns the rolled up number of tests in this suite;