Class: ActiveMutator::Engine

Inherits:
Object
  • Object
show all
Defined in:
lib/active_mutator/engine.rb

Instance Method Summary collapse

Constructor Details

#initialize(operators: Operators::Base.all) ⇒ Engine

Returns a new instance of Engine.



3
4
5
# File 'lib/active_mutator/engine.rb', line 3

def initialize(operators: Operators::Base.all)
  @operators = operators
end

Instance Method Details

#analyze(subject, source: File.read(subject.file)) ⇒ Object

Raises:



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/active_mutator/engine.rb', line 7

def analyze(subject, source: File.read(subject.file))
  result = Prism.parse(source)
  raise Error, "#{subject.file} no longer parses" unless result.success?

  def_node = find_def(result.value, subject.byte_range.begin)
  raise Error, "subject not found: #{subject.name}" unless def_node

  invalid = 0
  mutations = collect_edits(def_node).filter_map do |edit|
    mutation, valid = build_mutation(subject, source, edit)
    invalid += 1 unless valid
    mutation
  end
  Analysis.new(mutations: mutations, invalid_count: invalid)
end