diff options
Diffstat (limited to 'lib/test/unit.rb')
| -rw-r--r-- | lib/test/unit.rb | 219 |
1 files changed, 0 insertions, 219 deletions
diff --git a/lib/test/unit.rb b/lib/test/unit.rb deleted file mode 100644 index 97d0da5ca5..0000000000 --- a/lib/test/unit.rb +++ /dev/null @@ -1,219 +0,0 @@ -# test/unit compatibility layer using minitest. - -require 'minitest/unit' -require 'test/unit/assertions' -require 'test/unit/testcase' -require 'optparse' - -module Test - module Unit - TEST_UNIT_IMPLEMENTATION = 'test/unit compatibility layer using minitest' - - module RunCount - @@run_count = 0 - - def self.have_run? - @@run_count.nonzero? - end - - def run(*) - @@run_count += 1 - super - end - - def run_once - return if have_run? - return if $! # don't run if there was an exception - yield - end - module_function :run_once - end - - module Options - def initialize(&block) - @init_hook = block - super(&nil) - end - - def process_args(args = []) - orig_args = args.dup - options = {} - OptionParser.new do |opts| - setup_options(opts, options) - opts.parse!(args) - orig_args -= args - end - args = @init_hook.call(args, options) if @init_hook - non_options(args, options) - @help = orig_args.map { |s| s =~ /[\s|&<>$()]/ ? s.inspect : s }.join " " - options - end - - private - def setup_options(opts, options) - opts.banner = 'minitest options:' - opts.version = MiniTest::Unit::VERSION - - opts.on '-h', '--help', 'Display this help.' do - puts opts - exit - end - - opts.on '-s', '--seed SEED', Integer, "Sets random seed" do |m| - options[:seed] = m.to_i - end - - opts.on '-v', '--verbose', "Verbose. Show progress processing files." do - options[:verbose] = true - self.verbose = options[:verbose] - end - - opts.on '-n', '--name PATTERN', "Filter test names on pattern." do |a| - options[:filter] = a - end - end - - def non_options(files, options) - end - end - - module GlobOption - include Options - - def setup_options(parser, options) - super - parser.on '-x', '--exclude PATTERN', 'Exclude test files on pattern.' do |pattern| - (options[:reject] ||= []) << pattern - end - end - - def non_options(files, options) - paths = [options.delete(:base_directory), nil].compact - if reject = options.delete(:reject) - reject_pat = Regexp.union(reject.map {|r| /#{r}/ }) - end - files.map! {|f| - f = f.tr(File::ALT_SEPARATOR, File::SEPARATOR) if File::ALT_SEPARATOR - [*paths, nil].any? do |prefix| - path = prefix ? "#{prefix}/#{f}" : f - if !(match = Dir["#{path}/**/test_*.rb"]).empty? - if reject - match.reject! {|n| - n[(prefix.length+1)..-1] if prefix - reject_pat =~ n - } - end - break match - elsif !reject or reject_pat !~ f and File.exist? path - break path - end - end or - raise ArgumentError, "file not found: #{f}" - } - files.flatten! - super(files, options) - end - end - - module LoadPathOption - include Options - - def setup_options(parser, options) - super - parser.on '-Idirectory', 'Add library load path' do |dirs| - dirs.split(':').each { |d| $LOAD_PATH.unshift d } - end - end - end - - module GCStressOption - def setup_options(parser, options) - super - parser.on '--[no-]gc-stress', 'Set GC.stress as true' do |flag| - options[:gc_stress] = flag - end - end - - def non_options(files, options) - if options.delete(:gc_stress) - MiniTest::Unit::TestCase.class_eval do - oldrun = instance_method(:run) - define_method(:run) do |runner| - begin - gc_stress, GC.stress = GC.stress, true - oldrun.bind(self).call(runner) - ensure - GC.stress = gc_stress - end - end - end - end - super - end - end - - module RequireFiles - def non_options(files, options) - super - files.each {|f| - d = File.dirname(path = File.expand_path(f)) - unless $:.include? d - $: << d - end - begin - require path - rescue LoadError - puts "#{f}: #{$!}" - end - } - end - end - - def self.new(*args, &block) - Mini.class_eval do - include Test::Unit::RequireFiles - end - Mini.new(*args, &block) - end - - class Mini < MiniTest::Unit - include Test::Unit::GlobOption - include Test::Unit::LoadPathOption - include Test::Unit::GCStressOption - include Test::Unit::RunCount - include Test::Unit::Options - - class << self; undef autorun; end - def self.autorun - at_exit { - Test::Unit::RunCount.run_once { - exit(Test::Unit::Mini.new.run(ARGV) || true) - } - } unless @@installed_at_exit - @@installed_at_exit = true - end - - def _run_suites suites, type - @interrupt = nil - result = [] - suites.each {|suite| - begin - result << _run_suite(suite, type) - rescue Interrupt => e - @interrupt = e - break - end - } - result - end - - def status(*args) - result = super - raise @interrupt if @interrupt - result - end - end - end -end - -Test::Unit::Mini.autorun |
