Class: Minitest::StatisticsReporter

Inherits:
Reporter show all
Defined in:
lib/minitest.rb

Overview

A reporter that gathers statistics about a test run. Does not do any IO because meant to be used as a parent class for a reporter that does.

If you want to create an entirely different type of output (eg, CI, HTML, etc), this is the place to start.

Direct Known Subclasses

SummaryReporter

Instance Attribute Summary collapse

Attributes inherited from Reporter

#io, #options

Instance Method Summary collapse

Constructor Details

#initialize(io = $stdout, options = {}) ⇒ StatisticsReporter

:startdoc:


491
492
493
494
495
496
497
498
499
500
501
502
# File 'lib/minitest.rb', line 491

def initialize io = $stdout, options = {} # :nodoc:
  super

  self.assertions = 0
  self.count      = 0
  self.results    = []
  self.start_time = nil
  self.total_time = nil
  self.failures   = nil
  self.errors     = nil
  self.skips      = nil
end

Instance Attribute Details

#assertionsObject

:stopdoc:


481
482
483
# File 'lib/minitest.rb', line 481

def assertions
  @assertions
end

#countObject

Returns the value of attribute count


482
483
484
# File 'lib/minitest.rb', line 482

def count
  @count
end

#errorsObject

Returns the value of attribute errors


487
488
489
# File 'lib/minitest.rb', line 487

def errors
  @errors
end

#failuresObject

Returns the value of attribute failures


486
487
488
# File 'lib/minitest.rb', line 486

def failures
  @failures
end

#resultsObject

Returns the value of attribute results


483
484
485
# File 'lib/minitest.rb', line 483

def results
  @results
end

#skipsObject

Returns the value of attribute skips


488
489
490
# File 'lib/minitest.rb', line 488

def skips
  @skips
end

#start_timeObject

Returns the value of attribute start_time


484
485
486
# File 'lib/minitest.rb', line 484

def start_time
  @start_time
end

#total_timeObject

Returns the value of attribute total_time


485
486
487
# File 'lib/minitest.rb', line 485

def total_time
  @total_time
end

Instance Method Details

#passed?Boolean

:nodoc:

Returns:

  • (Boolean)

504
505
506
# File 'lib/minitest.rb', line 504

def passed? # :nodoc:
  results.all?(&:skipped?)
end

#record(result) ⇒ Object

:nodoc:


512
513
514
515
516
517
# File 'lib/minitest.rb', line 512

def record result # :nodoc:
  self.count += 1
  self.assertions += result.assertions

  results << result if not result.passed? or result.skipped?
end

#reportObject

:nodoc:


519
520
521
522
523
524
525
526
527
# File 'lib/minitest.rb', line 519

def report # :nodoc:
  aggregate = results.group_by { |r| r.failure.class }
  aggregate.default = [] # dumb. group_by should provide this

  self.total_time = Minitest.clock_time - start_time
  self.failures   = aggregate[Assertion].size
  self.errors     = aggregate[UnexpectedError].size
  self.skips      = aggregate[Skip].size
end

#startObject

:nodoc:


508
509
510
# File 'lib/minitest.rb', line 508

def start # :nodoc:
  self.start_time = Minitest.clock_time
end