Class: Evilution::Runner
- Inherits:
-
Object
- Object
- Evilution::Runner
- Defined in:
- lib/evilution/runner/diagnostics.rb,
lib/evilution/runner.rb,
lib/evilution/runner/baseline_runner.rb,
lib/evilution/runner/mutation_planner.rb,
lib/evilution/runner/report_publisher.rb,
lib/evilution/runner/subject_pipeline.rb,
lib/evilution/runner/mutation_executor.rb,
lib/evilution/runner/isolation_resolver.rb
Overview
rubocop:disable Lint/EmptyClass
Defined Under Namespace
Classes: BaselineRunner, Diagnostics, IsolationResolver, MutationExecutor, MutationPlanner, ReportPublisher, SubjectPipeline
Constant Summary collapse
- INTEGRATIONS =
{ rspec: Evilution::Integration::RSpec, minitest: Evilution::Integration::Minitest }.freeze
Instance Attribute Summary collapse
-
#config ⇒ Object
readonly
Returns the value of attribute config.
Instance Method Summary collapse
- #call ⇒ Object
-
#initialize(config: Evilution::Config.new, on_result: nil, hooks: nil) ⇒ Runner
constructor
A new instance of Runner.
- #parse_and_filter_subjects ⇒ Object
Constructor Details
#initialize(config: Evilution::Config.new, on_result: nil, hooks: nil) ⇒ Runner
Returns a new instance of Runner.
35 36 37 38 39 40 41 42 |
# File 'lib/evilution/runner.rb', line 35 def initialize(config: Evilution::Config.new, on_result: nil, hooks: nil) @config = config @on_result = on_result @hooks = hooks @parser = Evilution::AST::Parser.new @registry = Evilution::Mutator::Registry.default @cache = config.incremental? ? Evilution::Cache.new : nil end |
Instance Attribute Details
#config ⇒ Object (readonly)
Returns the value of attribute config.
33 34 35 |
# File 'lib/evilution/runner.rb', line 33 def config @config end |
Instance Method Details
#call ⇒ Object
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/evilution/runner.rb', line 44 def call install_signal_handlers start_time = Process.clock_gettime(Process::CLOCK_MONOTONIC) subjects = subject_pipeline.call log_memory("after parse_subjects", "#{subjects.length} subjects") perform_preload log_memory("after preload") if rails_root_detected? baseline_result = run_baseline(subjects) plan = mutation_planner.call(subjects) release_subject_nodes(subjects) clear_operator_caches results, truncated = run_mutations(plan.enabled, baseline_result) results += equivalent_results(plan.equivalent) log_memory("after run_mutations", "#{results.length} results") duration = Process.clock_gettime(Process::CLOCK_MONOTONIC) - start_time summary = Evilution::Result::Summary.new(results: results, duration: duration, truncated: truncated, skipped: plan.skipped_count, disabled_mutations: plan.disabled_mutations) output_report(summary) save_session(summary) summary end |
#parse_and_filter_subjects ⇒ Object
74 75 76 |
# File 'lib/evilution/runner.rb', line 74 def parse_and_filter_subjects subject_pipeline.call end |