Class: Evilution::Runner::MutationExecutor

Inherits:
Object
  • Object
show all
Defined in:
lib/evilution/runner/mutation_executor/result_cache.rb,
lib/evilution/runner/mutation_executor.rb,
lib/evilution/runner/mutation_executor/result_packer.rb,
lib/evilution/runner/mutation_executor/mutation_runner.rb,
lib/evilution/runner/mutation_executor/result_notifier.rb,
lib/evilution/runner/mutation_executor/strategy/parallel.rb,
lib/evilution/runner/mutation_executor/strategy/sequential.rb,
lib/evilution/runner/mutation_executor/neutralization_pipeline.rb,
lib/evilution/runner/mutation_executor/neutralizer/infra_error.rb,
lib/evilution/runner/mutation_executor/neutralizer/baseline_failed.rb

Overview

rubocop:disable Lint/EmptyClass

Defined Under Namespace

Modules: Neutralizer, Strategy Classes: MutationRunner, NeutralizationPipeline, ResultCache, ResultNotifier, ResultPacker

Constant Summary collapse

InfraError =
Neutralizer::InfraError
BaselineFailed =
Neutralizer::BaselineFailed
Sequential =
Strategy::Sequential
Parallel =
Strategy::Parallel

Instance Method Summary collapse

Constructor Details

#initialize(config, isolator:, baseline_runner:, cache:, hooks:, diagnostics:, on_result: nil) ⇒ MutationExecutor

Returns a new instance of MutationExecutor.



22
23
24
25
26
27
28
29
30
31
# File 'lib/evilution/runner/mutation_executor.rb', line 22

def initialize(config, isolator:, baseline_runner:, cache:, hooks:, diagnostics:, on_result: nil)
  @config = config
  @isolator = isolator
  @baseline_runner = baseline_runner
  @cache = ResultCache.new(cache)
  @packer = ResultPacker.new
  @hooks = hooks
  @diagnostics = diagnostics
  @on_result = on_result
end

Instance Method Details

#call(mutations, baseline_result = nil) ⇒ Object



33
34
35
36
37
38
39
40
41
# File 'lib/evilution/runner/mutation_executor.rb', line 33

def call(mutations, baseline_result = nil)
  integration = @baseline_runner.build_integration
  spec_resolver = baseline_failed?(baseline_result) ? @baseline_runner.neutralization_resolver : nil
  notifier = build_notifier
  pipeline = build_pipeline(spec_resolver)
  strategy = @config.jobs > 1 ? build_parallel(notifier, pipeline) : build_sequential(notifier, pipeline)

  strategy.call(mutations, baseline_result: baseline_result, integration: integration)
end