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 Reporter

#simple_record, synchronize

Constructor Details

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

:startdoc:



588
589
590
591
592
593
594
595
596
597
598
599
# File 'lib/minitest.rb', line 588

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:



578
579
580
# File 'lib/minitest.rb', line 578

def assertions
  @assertions
end

#countObject

Returns the value of attribute count.



579
580
581
# File 'lib/minitest.rb', line 579

def count
  @count
end

#errorsObject

Returns the value of attribute errors.



584
585
586
# File 'lib/minitest.rb', line 584

def errors
  @errors
end

#failuresObject

Returns the value of attribute failures.



583
584
585
# File 'lib/minitest.rb', line 583

def failures
  @failures
end

#resultsObject

Returns the value of attribute results.



580
581
582
# File 'lib/minitest.rb', line 580

def results
  @results
end

#skipsObject

Returns the value of attribute skips.



585
586
587
# File 'lib/minitest.rb', line 585

def skips
  @skips
end

#start_timeObject

Returns the value of attribute start_time.



581
582
583
# File 'lib/minitest.rb', line 581

def start_time
  @start_time
end

#total_timeObject

Returns the value of attribute total_time.



582
583
584
# File 'lib/minitest.rb', line 582

def total_time
  @total_time
end

Instance Method Details

#passed?Boolean

:nodoc:

Returns:

  • (Boolean)


601
602
603
# File 'lib/minitest.rb', line 601

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

#record(result) ⇒ Object

:nodoc:



609
610
611
612
613
614
# File 'lib/minitest.rb', line 609

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

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

#reportObject

:nodoc:



616
617
618
619
620
621
622
623
624
# File 'lib/minitest.rb', line 616

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

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

#startObject

:nodoc:



605
606
607
# File 'lib/minitest.rb', line 605

def start # :nodoc:
  self.start_time = Time.now
end