Class: EagerEye::Baseline
- Inherits:
-
Object
- Object
- EagerEye::Baseline
- 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.}" rescue KeyError => e raise InvalidBaselineError, "Baseline issue missing field #{e.}" end |