Class: Evilution::Runner
- Inherits:
-
Object
- Object
- Evilution::Runner
- Defined in:
- lib/evilution/runner.rb
Constant Summary collapse
- INTEGRATIONS =
{ rspec: Evilution::Integration::RSpec, minitest: Evilution::Integration::Minitest }.freeze
- PRELOAD_CANDIDATES =
[ File.join("spec", "rails_helper.rb"), File.join("test", "test_helper.rb") ].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.
43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/evilution/runner.rb', line 43 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 @disable_detector = Evilution::DisableComment.new @disabled_ranges_cache = {} @sig_detector = Evilution::AST::SorbetSigDetector.new @sig_ranges_cache = {} end |
Instance Attribute Details
#config ⇒ Object (readonly)
Returns the value of attribute config.
41 42 43 |
# File 'lib/evilution/runner.rb', line 41 def config @config end |
Instance Method Details
#call ⇒ Object
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
# File 'lib/evilution/runner.rb', line 56 def call install_signal_handlers start_time = Process.clock_gettime(Process::CLOCK_MONOTONIC) subjects = parse_and_filter_subjects log_memory("after parse_subjects", "#{subjects.length} subjects") perform_preload log_memory("after preload") if rails_root_detected? baseline_result = run_baseline(subjects) mutations, skipped_count, disabled_mutations = generate_mutations(subjects) equivalent_mutations, mutations = filter_equivalent(mutations) release_subject_nodes(subjects) clear_operator_caches results, truncated = run_mutations(mutations, baseline_result) results += equivalent_mutations.map do |m| m.strip_sources! equivalent_result(m) end 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: skipped_count, disabled_mutations: disabled_mutations) output_report(summary) save_session(summary) summary end |
#parse_and_filter_subjects ⇒ Object
90 91 92 93 94 95 96 |
# File 'lib/evilution/runner.rb', line 90 def parse_and_filter_subjects subjects = parse_subjects subjects = filter_by_descendants(subjects) if descendants_target? subjects = filter_by_target(subjects) if method_target? subjects = filter_by_line_ranges(subjects) if config.line_ranges? subjects end |