Method: Test::Unit::Worker#_run_suite
- Defined in:
- lib/test/unit/parallel.rb
#_run_suite(suite, type) ⇒ Object
:nodoc:
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
# File 'lib/test/unit/parallel.rb', line 27 def _run_suite(suite, type) # :nodoc: @partial_report = [] orig_testout = MiniTest::Unit.output i,o = IO.pipe MiniTest::Unit.output = o orig_stdin, orig_stdout = $stdin, $stdout th = Thread.new do begin while buf = (self.verbose ? i.gets : i.read(5)) _report "p", buf end rescue IOError rescue Errno::EPIPE end end e, f, s = @errors, @failures, @skips begin result = orig_run_suite(suite, type) rescue Interrupt @need_exit = true result = [nil,nil] end MiniTest::Unit.output = orig_testout $stdin = orig_stdin $stdout = orig_stdout o.close begin th.join rescue IOError raise unless ["stream closed","closed stream"].include? $!. end i.close result << @partial_report @partial_report = nil result << [@errors-e,@failures-f,@skips-s] result << ($: - @old_loadpath) result << suite.name begin _report "done", Marshal.dump(result) rescue Errno::EPIPE; end return result ensure MiniTest::Unit.output = orig_stdout $stdin = orig_stdin $stdout = orig_stdout o.close if o && !o.closed? i.close if i && !i.closed? end |