Bug #8778 ยป 0001-Bring-Test-Unit-up-to-100-documentation.patch
| lib/test/unit.rb | ||
|---|---|---|
| 
     # test/unit compatibility layer using minitest. 
   | 
||
| 
     require 'minitest/unit' 
   | 
||
| 
     require 'test/unit/assertions' 
   | 
||
| 
     require 'test/unit/testcase' 
   | 
||
| 
     require 'optparse' 
   | 
||
| 
     module Test 
   | 
||
| 
       ## 
   | 
||
| 
       # = Test/Unit 
   | 
||
| 
       # 
   | 
||
| 
       # Test/Unit is an implementation of the xUnit testing framework for Ruby. 
   | 
||
| 
       # 
   | 
||
| 
       # If you are writing new test code, please use MiniTest instead of Test/Unit. 
   | 
||
| 
       # Test/Unit has been left in the standard library to support legacy test 
   | 
||
| 
       # suites. 
   | 
||
| 
       module Unit 
   | 
||
| 
         TEST_UNIT_IMPLEMENTATION = 'test/unit compatibility layer using minitest' 
   | 
||
| 
         TEST_UNIT_IMPLEMENTATION = 'test/unit compatibility layer using minitest' # :nodoc: 
   | 
||
| 
         module RunCount 
   | 
||
| 
           @@run_count = 0 
   | 
||
| 
           def self.have_run? 
   | 
||
| 
           def self.have_run? # :nodoc: 
   | 
||
| 
             @@run_count.nonzero? 
   | 
||
| 
           end 
   | 
||
| 
           def run(*) 
   | 
||
| 
           def run(*) # :nodoc: 
   | 
||
| 
             @@run_count += 1 
   | 
||
| 
             super 
   | 
||
| 
           end 
   | 
||
| 
           def run_once 
   | 
||
| 
           def run_once # :nodoc: 
   | 
||
| 
             return if have_run? 
   | 
||
| 
             return if $! # don't run if there was an exception 
   | 
||
| 
             yield 
   | 
||
| ... | ... | |
| 
         end 
   | 
||
| 
         module Options 
   | 
||
| 
           def initialize(*, &block) 
   | 
||
| 
           def initialize(*, &block) # :nodoc: 
   | 
||
| 
             @init_hook = block 
   | 
||
| 
             @options = nil 
   | 
||
| 
             super(&nil) 
   | 
||
| 
           end 
   | 
||
| 
           def option_parser 
   | 
||
| 
           def option_parser # :nodoc: 
   | 
||
| 
             @option_parser ||= OptionParser.new 
   | 
||
| 
           end 
   | 
||
| 
           def process_args(args = []) 
   | 
||
| 
           def process_args(args = []) # :nodoc: 
   | 
||
| 
             return @options if @options 
   | 
||
| 
             orig_args = args.dup 
   | 
||
| 
             options = {} 
   | 
||
| ... | ... | |
| 
         module GlobOption 
   | 
||
| 
           @@testfile_prefix = "test" 
   | 
||
| 
           def setup_options(parser, options) 
   | 
||
| 
           def setup_options(parser, options) # :nodoc: 
   | 
||
| 
             super 
   | 
||
| 
             parser.on '-b', '--basedir=DIR', 'Base directory of test suites.' do |dir| 
   | 
||
| 
               options[:base_directory] = dir 
   | 
||
| ... | ... | |
| 
             end 
   | 
||
| 
           end 
   | 
||
| 
           def non_options(files, options) 
   | 
||
| 
           def non_options(files, options) # :nodoc: 
   | 
||
| 
             paths = [options.delete(:base_directory), nil].uniq 
   | 
||
| 
             if reject = options.delete(:reject) 
   | 
||
| 
               reject_pat = Regexp.union(reject.map {|r| /#{r}/ }) 
   | 
||
| ... | ... | |
| 
         end 
   | 
||
| 
         module LoadPathOption 
   | 
||
| 
           def setup_options(parser, options) 
   | 
||
| 
           def setup_options(parser, options) # :nodoc: 
   | 
||
| 
             super 
   | 
||
| 
             parser.on '-Idirectory', 'Add library load path' do |dirs| 
   | 
||
| 
               dirs.split(':').each { |d| $LOAD_PATH.unshift d } 
   | 
||
| ... | ... | |
| 
         end 
   | 
||
| 
         module GCStressOption 
   | 
||
| 
           def setup_options(parser, options) 
   | 
||
| 
           def setup_options(parser, options) # :nodoc: 
   | 
||
| 
             super 
   | 
||
| 
             parser.on '--[no-]gc-stress', 'Set GC.stress as true' do |flag| 
   | 
||
| 
               options[:gc_stress] = flag 
   | 
||
| 
             end 
   | 
||
| 
           end 
   | 
||
| 
           def non_options(files, options) 
   | 
||
| 
           def non_options(files, options) # :nodoc: 
   | 
||
| 
             if options.delete(:gc_stress) 
   | 
||
| 
               MiniTest::Unit::TestCase.class_eval do 
   | 
||
| 
                 oldrun = instance_method(:run) 
   | 
||
| ... | ... | |
| 
         end 
   | 
||
| 
         module RequireFiles 
   | 
||
| 
           def non_options(files, options) 
   | 
||
| 
           def non_options(files, options) # :nodoc: 
   | 
||
| 
             return false if !super 
   | 
||
| 
             result = false 
   | 
||
| 
             files.each {|f| 
   | 
||
| ... | ... | |
| 
           include Test::Unit::RunCount 
   | 
||
| 
           class Worker 
   | 
||
| 
             def self.launch(ruby,args=[]) 
   | 
||
| 
             def self.launch(ruby,args=[]) # :nodoc: 
   | 
||
| 
               io = IO.popen([*ruby, 
   | 
||
| 
                             "#{File.dirname(__FILE__)}/unit/parallel.rb", 
   | 
||
| 
                             *args], "rb+") 
   | 
||
| 
               new(io, io.pid, :waiting) 
   | 
||
| 
             end 
   | 
||
| 
             attr_reader :quit_called 
   | 
||
| 
             attr_reader :quit_called # :nodoc: 
   | 
||
| 
             def initialize(io, pid, status) 
   | 
||
| 
             def initialize(io, pid, status) # :nodoc: 
   | 
||
| 
               @io = io 
   | 
||
| 
               @pid = pid 
   | 
||
| 
               @status = status 
   | 
||
| ... | ... | |
| 
               @quit_called = false 
   | 
||
| 
             end 
   | 
||
| 
             def puts(*args) 
   | 
||
| 
             def puts(*args) # :nodoc: 
   | 
||
| 
               @io.puts(*args) 
   | 
||
| 
             end 
   | 
||
| 
             def run(task,type) 
   | 
||
| 
             def run(task,type) # :nodoc: 
   | 
||
| 
               @file = File.basename(task, ".rb") 
   | 
||
| 
               @real_file = task 
   | 
||
| 
               begin 
   | 
||
| ... | ... | |
| 
               end 
   | 
||
| 
             end 
   | 
||
| 
             def hook(id,&block) 
   | 
||
| 
             def hook(id,&block) # :nodoc: 
   | 
||
| 
               @hooks[id] ||= [] 
   | 
||
| 
               @hooks[id] << block 
   | 
||
| 
               self 
   | 
||
| 
             end 
   | 
||
| 
             def read 
   | 
||
| 
             def read # :nodoc: 
   | 
||
| 
               res = (@status == :quit) ? @io.read : @io.gets 
   | 
||
| 
               res && res.chomp 
   | 
||
| 
             end 
   | 
||
| 
             def close 
   | 
||
| 
             def close # :nodoc: 
   | 
||
| 
               @io.close unless @io.closed? 
   | 
||
| 
               self 
   | 
||
| 
             rescue IOError 
   | 
||
| 
             end 
   | 
||
| 
             def quit 
   | 
||
| 
             def quit # :nodoc: 
   | 
||
| 
               return if @io.closed? 
   | 
||
| 
               @quit_called = true 
   | 
||
| 
               @io.puts "quit" 
   | 
||
| 
               @io.close 
   | 
||
| 
             end 
   | 
||
| 
             def kill 
   | 
||
| 
             def kill # :nodoc: 
   | 
||
| 
               Process.kill(:KILL, @pid) 
   | 
||
| 
             rescue Errno::ESRCH 
   | 
||
| 
             end 
   | 
||
| 
             def died(*additional) 
   | 
||
| 
             def died(*additional) # :nodoc: 
   | 
||
| 
               @status = :quit 
   | 
||
| 
               @io.close 
   | 
||
| 
               call_hook(:dead,*additional) 
   | 
||
| 
             end 
   | 
||
| 
             def to_s 
   | 
||
| 
             def to_s # :nodoc: 
   | 
||
| 
               if @file 
   | 
||
| 
                 "#{@pid}=#{@file}" 
   | 
||
| 
               else 
   | 
||
| ... | ... | |
| 
               end 
   | 
||
| 
             end 
   | 
||
| 
             attr_reader :io, :pid 
   | 
||
| 
             attr_accessor :status, :file, :real_file, :loadpath 
   | 
||
| 
             attr_reader :io, :pid # :nodoc: 
   | 
||
| 
             attr_accessor :status, :file, :real_file, :loadpath # :nodoc: 
   | 
||
| 
             private 
   | 
||
| ... | ... | |
| 
           class << self; undef autorun; end 
   | 
||
| 
           @@stop_auto_run = false 
   | 
||
| 
           def self.autorun 
   | 
||
| 
           def self.autorun # :nodoc: 
   | 
||
| 
             at_exit { 
   | 
||
| 
               Test::Unit::RunCount.run_once { 
   | 
||
| 
                 exit(Test::Unit::Runner.new.run(ARGV) || true) 
   | 
||
| ... | ... | |
| 
             @@installed_at_exit = true 
   | 
||
| 
           end 
   | 
||
| 
           def after_worker_down(worker, e=nil, c=false) 
   | 
||
| 
           def after_worker_down(worker, e=nil, c=false) # :nodoc: 
   | 
||
| 
             return unless @options[:parallel] 
   | 
||
| 
             return if @interrupt 
   | 
||
| 
             warn e if e 
   | 
||
| ... | ... | |
| 
             exit c 
   | 
||
| 
           end 
   | 
||
| 
           def terminal_width 
   | 
||
| 
           def terminal_width # :nodoc: 
   | 
||
| 
             unless @terminal_width ||= nil 
   | 
||
| 
               begin 
   | 
||
| 
                 require 'io/console' 
   | 
||
| ... | ... | |
| 
             @terminal_width 
   | 
||
| 
           end 
   | 
||
| 
           def del_status_line 
   | 
||
| 
           def del_status_line # :nodoc: 
   | 
||
| 
             @status_line_size ||= 0 
   | 
||
| 
             unless @options[:job_status] == :replace 
   | 
||
| 
               $stdout.puts 
   | 
||
| ... | ... | |
| 
             @status_line_size = 0 
   | 
||
| 
           end 
   | 
||
| 
           def put_status(line) 
   | 
||
| 
           def put_status(line) # :nodoc: 
   | 
||
| 
             unless @options[:job_status] == :replace 
   | 
||
| 
               print(line) 
   | 
||
| 
               return 
   | 
||
| ... | ... | |
| 
             @status_line_size = line.size 
   | 
||
| 
           end 
   | 
||
| 
           def add_status(line) 
   | 
||
| 
           def add_status(line) # :nodoc: 
   | 
||
| 
             unless @options[:job_status] == :replace 
   | 
||
| 
               print(line) 
   | 
||
| 
               return 
   | 
||
| ... | ... | |
| 
             @status_line_size += line.size 
   | 
||
| 
           end 
   | 
||
| 
           def jobs_status 
   | 
||
| 
           def jobs_status # :nodoc: 
   | 
||
| 
             return unless @options[:job_status] 
   | 
||
| 
             puts "" unless @options[:verbose] or @options[:job_status] == :replace 
   | 
||
| 
             status_line = @workers.map(&:to_s).join(" ") 
   | 
||
| 
             update_status(status_line) or (puts; nil) 
   | 
||
| 
           end 
   | 
||
| 
           def del_jobs_status 
   | 
||
| 
           def del_jobs_status # :nodoc: 
   | 
||
| 
             return unless @options[:job_status] == :replace && @status_line_size.nonzero? 
   | 
||
| 
             del_status_line 
   | 
||
| 
           end 
   | 
||
| 
           def after_worker_quit(worker) 
   | 
||
| 
           def after_worker_quit(worker) # :nodoc: 
   | 
||
| 
             return unless @options[:parallel] 
   | 
||
| 
             return if @interrupt 
   | 
||
| 
             @workers.delete(worker) 
   | 
||
| ... | ... | |
| 
             @ios = @workers.map(&:io) 
   | 
||
| 
           end 
   | 
||
| 
           def launch_worker 
   | 
||
| 
           def launch_worker # :nodoc: 
   | 
||
| 
             begin 
   | 
||
| 
               worker = Worker.launch(@options[:ruby],@args) 
   | 
||
| 
             rescue => e 
   | 
||
| ... | ... | |
| 
             worker 
   | 
||
| 
           end 
   | 
||
| 
           def delete_worker(worker) 
   | 
||
| 
           def delete_worker(worker) # :nodoc: 
   | 
||
| 
             @workers_hash.delete worker.io 
   | 
||
| 
             @workers.delete worker 
   | 
||
| 
             @ios.delete worker.io 
   | 
||
| 
           end 
   | 
||
| 
           def quit_workers 
   | 
||
| 
           def quit_workers # :nodoc: 
   | 
||
| 
             return if @workers.empty? 
   | 
||
| 
             @workers.reject! do |worker| 
   | 
||
| 
               begin 
   | 
||
| ... | ... | |
| 
             end 
   | 
||
| 
           end 
   | 
||
| 
           def start_watchdog 
   | 
||
| 
           def start_watchdog # :nodoc: 
   | 
||
| 
             Thread.new do 
   | 
||
| 
               while stat = Process.wait2 
   | 
||
| 
                 break if @interrupt # Break when interrupt 
   | 
||
| ... | ... | |
| 
             end 
   | 
||
| 
           end 
   | 
||
| 
           def deal(io, type, result, rep, shutting_down = false) 
   | 
||
| 
           def deal(io, type, result, rep, shutting_down = false) # :nodoc: 
   | 
||
| 
             worker = @workers_hash[io] 
   | 
||
| 
             case worker.read 
   | 
||
| 
             when /^okay$/ 
   | 
||
| ... | ... | |
| 
             return false 
   | 
||
| 
           end 
   | 
||
| 
           def _run_parallel suites, type, result 
   | 
||
| 
           def _run_parallel suites, type, result # :nodoc: 
   | 
||
| 
             if @options[:parallel] < 1 
   | 
||
| 
               warn "Error: parameter of -j option should be greater than 0." 
   | 
||
| 
               return 
   | 
||
| ... | ... | |
| 
             end 
   | 
||
| 
           end 
   | 
||
| 
           def _run_suites suites, type 
   | 
||
| 
           def _run_suites suites, type # :nodoc: 
   | 
||
| 
             _prepare_run(suites, type) 
   | 
||
| 
             @interrupt = nil 
   | 
||
| 
             result = [] 
   | 
||
| ... | ... | |
| 
           alias mini_run_suite _run_suite 
   | 
||
| 
           def output 
   | 
||
| 
           def output # :nodoc: 
   | 
||
| 
             (@output ||= nil) || super 
   | 
||
| 
           end 
   | 
||
| 
           def _prepare_run(suites, type) 
   | 
||
| 
           def _prepare_run(suites, type) # :nodoc: 
   | 
||
| 
             options[:job_status] ||= :replace if @tty && !@verbose 
   | 
||
| 
             case options[:color] 
   | 
||
| 
             when :always 
   | 
||
| ... | ... | |
| 
             @total_tests = total.to_s(10) 
   | 
||
| 
           end 
   | 
||
| 
           def new_test(s) 
   | 
||
| 
           def new_test(s) # :nodoc: 
   | 
||
| 
             @test_count += 1 
   | 
||
| 
             update_status(s) 
   | 
||
| 
           end 
   | 
||
| 
           def update_status(s) 
   | 
||
| 
           def update_status(s) # :nodoc: 
   | 
||
| 
             count = @test_count.to_s(10).rjust(@total_tests.size) 
   | 
||
| 
             put_status("#{@passed_color}[#{count}/#{@total_tests}]#{@reset_color} #{s}") 
   | 
||
| 
           end 
   | 
||
| 
           def _print(s); $stdout.print(s); end 
   | 
||
| 
           def succeed; del_status_line; end 
   | 
||
| 
           def _print(s); $stdout.print(s); end # :nodoc: 
   | 
||
| 
           def succeed; del_status_line; end # :nodoc: 
   | 
||
| 
           def failed(s) 
   | 
||
| 
             sep = "\n" 
   | 
||
| ... | ... | |
| 
         end 
   | 
||
| 
         class StatusLineOutput < Struct.new(:runner) 
   | 
||
| 
           def puts(*a) $stdout.puts(*a) unless a.empty? end 
   | 
||
| 
           def respond_to_missing?(*a) $stdout.respond_to?(*a) end 
   | 
||
| 
           def method_missing(*a, &b) $stdout.__send__(*a, &b) end 
   | 
||
| 
           def puts(*a) $stdout.puts(*a) unless a.empty? end # :nodoc: 
   | 
||
| 
           def respond_to_missing?(*a) $stdout.respond_to?(*a) end # :nodoc: 
   | 
||
| 
           def method_missing(*a, &b) $stdout.__send__(*a, &b) end # :nodoc: 
   | 
||
| 
           def print(s) 
   | 
||
| 
           def print(s) # :nodoc: 
   | 
||
| 
             case s 
   | 
||
| 
             when /\A(.*\#.*) = \z/ 
   | 
||
| 
               runner.new_test($1) 
   | 
||
| ... | ... | |
| 
             include Test::Unit::RequireFiles 
   | 
||
| 
           end 
   | 
||
| 
           attr_accessor :to_run, :options 
   | 
||
| 
           attr_accessor :to_run, :options # :nodoc: 
   | 
||
| 
           def initialize(force_standalone = false, default_dir = nil, argv = ARGV) 
   | 
||
| 
           def initialize(force_standalone = false, default_dir = nil, argv = ARGV) # :nodoc: 
   | 
||
| 
             @force_standalone = force_standalone 
   | 
||
| 
             @runner = Runner.new do |files, options| 
   | 
||
| 
               options[:base_directory] ||= default_dir 
   | 
||
| ... | ... | |
| 
             @argv = argv 
   | 
||
| 
           end 
   | 
||
| 
           def process_args(*args) 
   | 
||
| 
           def process_args(*args) # :nodoc: 
   | 
||
| 
             @runner.process_args(*args) 
   | 
||
| 
             !@to_run.empty? 
   | 
||
| 
           end 
   | 
||
| 
           def run 
   | 
||
| 
           def run # :nodoc: 
   | 
||
| 
             if @force_standalone and not process_args(@argv) 
   | 
||
| 
               abort @options.banner 
   | 
||
| 
             end 
   | 
||
| 
             @runner.run(@argv) || true 
   | 
||
| 
           end 
   | 
||
| 
           def self.run(*args) 
   | 
||
| 
           def self.run(*args) # :nodoc: 
   | 
||
| 
             new(*args).run 
   | 
||
| 
           end 
   | 
||
| 
         end 
   | 
||
| 
         class ProxyError < StandardError 
   | 
||
| 
           def initialize(ex) 
   | 
||
| 
           def initialize(ex) # :nodoc: 
   | 
||
| 
             @message = ex.message 
   | 
||
| 
             @backtrace = ex.backtrace 
   | 
||
| 
           end 
   | 
||
| 
           attr_accessor :message, :backtrace 
   | 
||
| 
           attr_accessor :message, :backtrace # :nodoc: 
   | 
||
| 
         end 
   | 
||
| 
       end 
   | 
||
| 
     end 
   | 
||
| 
     module MiniTest # :nodoc: 
   | 
||
| 
       module Unit # :nodoc: 
   | 
||
| 
       end 
   | 
||
| 
     end 
   | 
||
| 
     class MiniTest::Unit::TestCase 
   | 
||
| 
       undef run_test 
   | 
||
| 
       RUN_TEST_TRACE = "#{__FILE__}:#{__LINE__+3}:in `run_test'".freeze 
   | 
||
| 
       def run_test(name) 
   | 
||
| 
       RUN_TEST_TRACE = "#{__FILE__}:#{__LINE__+3}:in `run_test'".freeze # :nodoc: 
   | 
||
| 
       def run_test(name) # :nodoc: 
   | 
||
| 
         progname, $0 = $0, "#{$0}: #{self.class}##{name}" 
   | 
||
| 
         self.__send__(name) 
   | 
||
| 
       ensure 
   | 
||
| lib/test/unit/assertions.rb | ||
|---|---|---|
| 
             template.gsub(/\G((?:[^\\]|\\.)*?)(\\)?\?/) { $1 + ($2 ? "?" : mu_pp(arguments.shift)) } 
   | 
||
| 
           end 
   | 
||
| 
           def message(msg = nil, *args, &default) 
   | 
||
| 
           def message(msg = nil, *args, &default) # :nodoc: 
   | 
||
| 
             if Proc === msg 
   | 
||
| 
               super(nil, *args) do 
   | 
||
| 
                 [msg.call, (default.call if default)].compact.reject(&:empty?).join(".\n") 
   | 
||
| lib/test/unit/parallel.rb | ||
|---|---|---|
| 
     module Test 
   | 
||
| 
       module Unit 
   | 
||
| 
         class Worker < Runner 
   | 
||
| 
         class Worker < Runner # :nodoc: 
   | 
||
| 
           class << self 
   | 
||
| 
             undef autorun 
   | 
||
| 
           end 
   | 
||
| ... | ... | |
| 
           undef _run_suites 
   | 
||
| 
           undef run 
   | 
||
| 
           def increment_io(orig) 
   | 
||
| 
           def increment_io(orig) # :nodoc: 
   | 
||
| 
             *rest, io = 32.times.inject([orig.dup]){|ios, | ios << ios.last.dup } 
   | 
||
| 
             rest.each(&:close) 
   | 
||
| 
             io 
   | 
||
| 
           end 
   | 
||
| 
           def _run_suites(suites, type) 
   | 
||
| 
           def _run_suites(suites, type) # :nodoc: 
   | 
||
| 
             suites.map do |suite| 
   | 
||
| 
               _run_suite(suite, type) 
   | 
||
| 
             end 
   | 
||
| 
           end 
   | 
||
| 
           def _run_suite(suite, type) 
   | 
||
| 
           def _run_suite(suite, type) # :nodoc: 
   | 
||
| 
             @partial_report = [] 
   | 
||
| 
             orig_testout = MiniTest::Unit.output 
   | 
||
| 
             i,o = IO.pipe 
   | 
||
| ... | ... | |
| 
             i.close if i && !i.closed? 
   | 
||
| 
           end 
   | 
||
| 
           def run(args = []) 
   | 
||
| 
           def run(args = []) # :nodoc: 
   | 
||
| 
             process_args args 
   | 
||
| 
             @@stop_auto_run = true 
   | 
||
| 
             @opts = @options.dup 
   | 
||
| ... | ... | |
| 
             end 
   | 
||
| 
           end 
   | 
||
| 
           def _report(res, *args) 
   | 
||
| 
           def _report(res, *args) # :nodoc: 
   | 
||
| 
             res = "#{res} #{args.pack("m0")}" unless args.empty? 
   | 
||
| 
             @stdout.puts(res) 
   | 
||
| 
           end 
   | 
||
| 
           def puke(klass, meth, e) 
   | 
||
| 
           def puke(klass, meth, e) # :nodoc: 
   | 
||
| 
             @partial_report << [klass.name, meth, e.is_a?(MiniTest::Assertion) ? e : ProxyError.new(e)] 
   | 
||
| 
             super 
   | 
||
| 
           end 
   | 
||
| ... | ... | |
| 
         module Unit 
   | 
||
| 
           class TestCase < MiniTest::Unit::TestCase 
   | 
||
| 
             undef on_parallel_worker? 
   | 
||
| 
             def on_parallel_worker? 
   | 
||
| 
             def on_parallel_worker? # :nodoc: 
   | 
||
| 
               true 
   | 
||
| 
             end 
   | 
||
| 
           end 
   | 
||
| 
         end 
   | 
||
| 
       end 
   | 
||
| 
       require 'rubygems' 
   | 
||
| 
       module Gem # :nodoc 
   | 
||
| 
       end 
   | 
||
| 
       class Gem::TestCase < MiniTest::Unit::TestCase 
   | 
||
| 
         @@project_dir = File.expand_path('../../../..', __FILE__) 
   | 
||
| 
       end 
   | 
||
| lib/test/unit/testcase.rb | ||
|---|---|---|
| 
         class TestCase < MiniTest::Unit::TestCase 
   | 
||
| 
           include Assertions 
   | 
||
| 
           def on_parallel_worker? 
   | 
||
| 
           def on_parallel_worker? # :nodoc: 
   | 
||
| 
             false 
   | 
||
| 
           end 
   | 
||
| 
           def run runner 
   | 
||
| 
           def run runner # :nodoc: 
   | 
||
| 
             @options = runner.options 
   | 
||
| 
             super runner 
   | 
||
| 
           end 
   | 
||
| 
           def self.test_order 
   | 
||
| 
           def self.test_order # :nodoc: 
   | 
||
| 
             :sorted 
   | 
||
| 
           end 
   | 
||
| 
           def self.method_added(name) 
   | 
||
| 
           def self.method_added(name) # :nodoc: 
   | 
||
| 
             return unless name.to_s.start_with?("test_") 
   | 
||
| 
             @test_methods ||= {} 
   | 
||
| 
             if @test_methods[name] 
   | 
||