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:



494
495
496
497
498
499
500
501
502
503
504
505
# File 'lib/minitest.rb', line 494

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:



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

def assertions
  @assertions
end

#countObject

Returns the value of attribute count.



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

def count
  @count
end

#errorsObject

Returns the value of attribute errors.



490
491
492
# File 'lib/minitest.rb', line 490

def errors
  @errors
end

#failuresObject

Returns the value of attribute failures.



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

def failures
  @failures
end

#resultsObject

Returns the value of attribute results.



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

def results
  @results
end

#skipsObject

Returns the value of attribute skips.



491
492
493
# File 'lib/minitest.rb', line 491

def skips
  @skips
end

#start_timeObject

Returns the value of attribute start_time.



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

def start_time
  @start_time
end

#total_timeObject

Returns the value of attribute total_time.



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

def total_time
  @total_time
end

Instance Method Details

#passed?Boolean

:nodoc:

Returns:

  • (Boolean)


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

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

#record(result) ⇒ Object

:nodoc:



515
516
517
518
519
520
# File 'lib/minitest.rb', line 515

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

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

#reportObject

:nodoc:



522
523
524
525
526
527
528
529
530
# File 'lib/minitest.rb', line 522

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:



511
512
513
# File 'lib/minitest.rb', line 511

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