Class: EagerEye::Baseline

Inherits:
Object
  • Object
show all
Defined in:
lib/eager_eye/baseline.rb

Overview

Loads a previous JSON report and filters out issues already present in it. Used by ‘–baseline FILE` to surface only NEW issues introduced since the baseline was captured — the typical brownfield-CI workflow: accept existing issues, fail only on regressions.

Defined Under Namespace

Classes: InvalidBaselineError

Class Method Summary collapse

Class Method Details

.filter(current_issues, baseline_path) ⇒ Object



27
28
29
30
# File 'lib/eager_eye/baseline.rb', line 27

def self.filter(current_issues, baseline_path)
  baseline_set = Set.new(load_issues(baseline_path))
  current_issues.reject { |issue| baseline_set.include?(issue) }
end

.load_issues(path) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/eager_eye/baseline.rb', line 14

def self.load_issues(path)
  raw = File.read(path)
  data = JSON.parse(raw)
  issues_data = extract_issues_array(data)
  issues_data.map { |h| Issue.from_h(h) }
rescue Errno::ENOENT
  raise InvalidBaselineError, "Baseline file not found: #{path}"
rescue JSON::ParserError => e
  raise InvalidBaselineError, "Invalid JSON in baseline #{path}: #{e.message}"
rescue KeyError => e
  raise InvalidBaselineError, "Baseline issue missing field #{e.message}"
end