Module: Evilution::Compare::Detector

Defined in:
lib/evilution/compare/detector.rb

Class Method Summary collapse

Class Method Details

.call(json) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/evilution/compare/detector.rb', line 9

def call(json)
  raise Evilution::Compare::InvalidInput, "expected Hash, got #{json.class}" unless json.is_a?(Hash)

  mutant = json.key?("subject_results")
  evilution = json.key?("summary") && Evilution::Compare::Normalizer::EVILUTION_BUCKETS.any? { |k| json.key?(k) }

  raise Evilution::Compare::InvalidInput, "ambiguous JSON shape - both mutant and evilution markers present" if mutant && evilution
  return :mutant if mutant
  return :evilution if evilution

  raise Evilution::Compare::InvalidInput, "cannot detect tool from JSON shape"
end