summaryrefslogtreecommitdiff
path: root/lib/test/unit.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/test/unit.rb')
-rw-r--r--lib/test/unit.rb130
1 files changed, 10 insertions, 120 deletions
diff --git a/lib/test/unit.rb b/lib/test/unit.rb
index 08e57f2f17..6fab874f23 100644
--- a/lib/test/unit.rb
+++ b/lib/test/unit.rb
@@ -19,20 +19,6 @@
# have tests for it.
#
#
-# == Installation
-#
-# Run:
-# * ruby setup.rb config
-# * ruby setup.rb setup
-# * ruby setup.rb install
-#
-# Note that the runit compatibility layer will *not* be installed if you
-# already have RubyUnit installed.
-#
-# Mac OS X users should also note that setup.rb will fail unless they
-# execute 'unlimit stacksize' before running it.
-#
-#
# == Notes
#
# Test::Unit has grown out of and superceded Lapidary.
@@ -272,114 +258,18 @@
require 'test/unit/testcase'
-require 'test/unit/ui/testrunnermediator'
-require 'test/unit/collector/objectspace'
-
-at_exit {
- require 'optparse'
- if (!Test::Unit::UI::TestRunnerMediator.run?)
- output_level = nil
- runners = {
- :console => proc do |suite|
- require 'test/unit/ui/console/testrunner'
- output_level ||= Test::Unit::UI::Console::TestRunner::NORMAL
- passed = Test::Unit::UI::Console::TestRunner.run(suite, output_level).passed?
- exit(passed ? 0 : 1)
- end,
- :gtk => proc do |suite|
- require 'test/unit/ui/gtk/testrunner'
- Test::Unit::UI::GTK::TestRunner.run(suite)
- end,
- :fox => proc do |suite|
- require 'test/unit/ui/fox/testrunner'
- Test::Unit::UI::Fox::TestRunner.run(suite)
- end,
- }
-
- runner = runners[:console]
- filters = []
- catch(:stop_processing) do
- ARGV.options do |o|
- o.program_name = "test/unit.rb"
- o.banner = "Test::Unit automatic runner."
- o.banner = "#{$0} [options] [-- untouched arguments]"
+require 'test/unit/autorunner'
- o.on
- runner_display = runners.keys.collect{|r| r.to_s.sub(/^(.)/, '[\\1]')}.join(", ")
- o.on('-r', '--runner=RUNNER', runners.keys,
- "Use the given runner.",
- "(" + runner_display + ")"){|r| runner = runners[r]}
- o.on('-n', '--name=NAME', String,
- "Runs tests matching NAME",
- "(patterns may be used).") do |n|
- n = (%r{\A/(.*)/\Z} =~ n ? Regexp.new($1) : n)
- case n
- when Regexp
- filters << proc{|t| n =~ t.method_name}
- else
- filters << proc{|t| n == t.method_name}
- end
- end
- o.on('-t', '--testcase=TESTCASE', String,
- "Runs tests in TestCases matching TESTCASE",
- "(patterns may be used).") do |n|
- n = (%r{\A/(.*)/\Z} =~ n ? Regexp.new($1) : n)
- case n
- when Regexp
- filters << proc{|t| n =~ t.class.name}
- else
- filters << proc{|t| n == t.class.name}
- end
- end
- o.on('-v', '--verbose=[LEVEL]', (0..3).to_a.collect{|i| i.to_s},
- "Set output level.",
- "Levels are:",
- " 0 = SILENT",
- " 1 = PROGRESS_ONLY",
- " 2 = NORMAL",
- " 3 = VERBOSE (default)",
- " Only valid for the console runner."){|l| output_level = (l ? l.to_i : 3)}
- o.on('--',
- "Stop processing options so that",
- "remaining options will be passed",
- "to the test."){throw :stop_processing}
- o.on('-h', '--help', 'Display this help.'){puts o; exit(0)}
-
- o.on_tail
- o.on_tail('Deprecated options:')
- o.on_tail('--console', 'Console runner (use --runner).') do
- warn("Deprecated option (--console).")
- runner = runners[:console]
- end
- o.on_tail('--gtk', 'GTK runner (use --runner).') do
- warn("Deprecated option (--gtk).")
- runner = runners[:gtk]
- end
- o.on_tail('--fox', 'Fox runner (use --runner).') do
- warn("Deprecated option (--fox).")
- runner = runners[:fox]
- end
- o.on_tail
-
- begin
- o.parse!
- rescue OptionParser::ParseError => e
- puts e
- puts o
- exit(1)
- end
- end
+module Test
+ module Unit
+ def self.run=(flag)
+ @run = flag
end
- if(output_level && !(runner == runners[:console]))
- puts "Invalid arguments: You can only specify an output level with the console runner."
- exit(1)
+ def self.run?
+ @run ||= false
end
-
- collector = Test::Unit::Collector::ObjectSpace::new
- collector.filter = filters
-
- suite_name = $0.sub(/\.rb$/, '')
- runner.call(collector.collect(suite_name))
end
-}
+end
+
+at_exit{Test::Unit::AutoRunner.run($0) unless(Test::Unit.run?)}