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:



453
454
455
456
457
458
459
460
461
462
463
464
# File 'lib/minitest.rb', line 453

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:



443
444
445
# File 'lib/minitest.rb', line 443

def assertions
  @assertions
end

#countObject

Returns the value of attribute count.



444
445
446
# File 'lib/minitest.rb', line 444

def count
  @count
end

#errorsObject

Returns the value of attribute errors.



449
450
451
# File 'lib/minitest.rb', line 449

def errors
  @errors
end

#failuresObject

Returns the value of attribute failures.



448
449
450
# File 'lib/minitest.rb', line 448

def failures
  @failures
end

#resultsObject

Returns the value of attribute results.



445
446
447
# File 'lib/minitest.rb', line 445

def results
  @results
end

#skipsObject

Returns the value of attribute skips.



450
451
452
# File 'lib/minitest.rb', line 450

def skips
  @skips
end

#start_timeObject

Returns the value of attribute start_time.



446
447
448
# File 'lib/minitest.rb', line 446

def start_time
  @start_time
end

#total_timeObject

Returns the value of attribute total_time.



447
448
449
# File 'lib/minitest.rb', line 447

def total_time
  @total_time
end

Instance Method Details

#passed?Boolean

:nodoc:

Returns:

  • (Boolean)


466
467
468
# File 'lib/minitest.rb', line 466

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

#record(result) ⇒ Object

:nodoc:



474
475
476
477
478
479
# File 'lib/minitest.rb', line 474

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

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

#reportObject

:nodoc:



481
482
483
484
485
486
487
488
489
# File 'lib/minitest.rb', line 481

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:



470
471
472
# File 'lib/minitest.rb', line 470

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