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:



508
509
510
511
512
513
514
515
516
517
518
519
# File 'lib/minitest.rb', line 508

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:



498
499
500
# File 'lib/minitest.rb', line 498

def assertions
  @assertions
end

#countObject

Returns the value of attribute count.



499
500
501
# File 'lib/minitest.rb', line 499

def count
  @count
end

#errorsObject

Returns the value of attribute errors.



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

def errors
  @errors
end

#failuresObject

Returns the value of attribute failures.



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

def failures
  @failures
end

#resultsObject

Returns the value of attribute results.



500
501
502
# File 'lib/minitest.rb', line 500

def results
  @results
end

#skipsObject

Returns the value of attribute skips.



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

def skips
  @skips
end

#start_timeObject

Returns the value of attribute start_time.



501
502
503
# File 'lib/minitest.rb', line 501

def start_time
  @start_time
end

#total_timeObject

Returns the value of attribute total_time.



502
503
504
# File 'lib/minitest.rb', line 502

def total_time
  @total_time
end

Instance Method Details

#passed?Boolean

:nodoc:

Returns:

  • (Boolean)


521
522
523
# File 'lib/minitest.rb', line 521

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

#record(result) ⇒ Object

:nodoc:



529
530
531
532
533
534
# File 'lib/minitest.rb', line 529

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

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

#reportObject

:nodoc:



536
537
538
539
540
541
542
543
544
# File 'lib/minitest.rb', line 536

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:



525
526
527
# File 'lib/minitest.rb', line 525

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