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

Methods inherited from AbstractReporter

#prerecord

Constructor Details

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

:startdoc:


647
648
649
650
651
652
653
654
655
656
657
658
# File 'lib/minitest.rb', line 647

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:


637
638
639
# File 'lib/minitest.rb', line 637

def assertions
  @assertions
end

#countObject

Returns the value of attribute count


638
639
640
# File 'lib/minitest.rb', line 638

def count
  @count
end

#errorsObject

Returns the value of attribute errors


643
644
645
# File 'lib/minitest.rb', line 643

def errors
  @errors
end

#failuresObject

Returns the value of attribute failures


642
643
644
# File 'lib/minitest.rb', line 642

def failures
  @failures
end

#resultsObject

Returns the value of attribute results


639
640
641
# File 'lib/minitest.rb', line 639

def results
  @results
end

#skipsObject

Returns the value of attribute skips


644
645
646
# File 'lib/minitest.rb', line 644

def skips
  @skips
end

#start_timeObject

Returns the value of attribute start_time


640
641
642
# File 'lib/minitest.rb', line 640

def start_time
  @start_time
end

#total_timeObject

Returns the value of attribute total_time


641
642
643
# File 'lib/minitest.rb', line 641

def total_time
  @total_time
end

Instance Method Details

#passed?Boolean

:nodoc:

Returns:

  • (Boolean)

660
661
662
# File 'lib/minitest.rb', line 660

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

#record(result) ⇒ Object

:nodoc:


668
669
670
671
672
673
# File 'lib/minitest.rb', line 668

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

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

#reportObject

:nodoc:


675
676
677
678
679
680
681
682
683
# File 'lib/minitest.rb', line 675

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:


664
665
666
# File 'lib/minitest.rb', line 664

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