class Mutest::Runner::Sink

Public Class Methods

new(*) click to toggle source

Initialize object

@return [undefined]

Calls superclass method
# File lib/mutest/runner/sink.rb, line 9
def initialize(*)
  super
  @start           = Time.now
  @subject_results = {}
end

Public Instance Methods

result(mutation_result) click to toggle source

Handle mutation finish

@param [Result::Mutation] mutation_result

@return [self]

# File lib/mutest/runner/sink.rb, line 38
def result(mutation_result)
  subject = mutation_result.mutation.subject

  @subject_results[subject] = Result::Subject.new(
    subject:          subject,
    mutation_results: previous_mutation_results(subject) + [mutation_result],
    tests:            mutation_result.test_result.tests
  )

  self
end
status() click to toggle source

Runner status

@return [Result::Env]

# File lib/mutest/runner/sink.rb, line 18
def status
  Result::Env.new(
    env:             env,
    runtime:         Time.now - @start,
    subject_results: @subject_results.values
  )
end
stop?() click to toggle source

Test if scheduling stopped

@return [Boolean]

# File lib/mutest/runner/sink.rb, line 29
def stop?
  env.config.fail_fast && !status.subject_results.all?(&:success?)
end

Private Instance Methods

previous_mutation_results(subject) click to toggle source

Return previous results

@param [Subject]

@return [Array<Result::Mutation>]

# File lib/mutest/runner/sink.rb, line 57
def previous_mutation_results(subject)
  subject_result = @subject_results.fetch(subject) { return EMPTY_ARRAY }
  subject_result.mutation_results
end