Class: Evilution::Runner::MutationExecutor::Strategy::Sequential

Inherits:
Object
  • Object
show all
Defined in:
lib/evilution/runner/mutation_executor/strategy/sequential.rb

Instance Method Summary collapse

Constructor Details

#initialize(runner:, pipeline:, notifier:) ⇒ Sequential

Returns a new instance of Sequential.



8
9
10
11
12
# File 'lib/evilution/runner/mutation_executor/strategy/sequential.rb', line 8

def initialize(runner:, pipeline:, notifier:)
  @runner = runner
  @pipeline = pipeline
  @notifier = notifier
end

Instance Method Details

#call(mutations, baseline_result:, integration:) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/evilution/runner/mutation_executor/strategy/sequential.rb', line 14

def call(mutations, baseline_result:, integration:)
  @notifier.start(mutations.length)
  results = []
  truncated = false

  mutations.each_with_index do |mutation, index|
    result = @runner.call(mutation, integration: integration)
    mutation.strip_sources!
    result = @pipeline.call(result, baseline_result: baseline_result)
    results << result

    if @notifier.notify(result, index + 1) == :truncate
      truncated = true
      break
    end
  end

  @notifier.finish
  [results, truncated]
end