Module: SpecGuard::RSpec::Linter
- Defined in:
- lib/specguard/rspec/linter.rb
Overview
The shared verdict shape both renderers and the exit code derive from.
Where this sits after SPGD-867 (the cutover)
This used to be a class that APPLIED the schema to Findings the Ruby
scanner had produced. That Ruby hand-rolled validation arm is gone:
specguard-lint validates through the validate-intent binary and only
the binary (ValidatorBackend), and the formatter's half
(AnnotationLookup) asks the same binary. What survives is the one
thing both sides of the seam still share — Result, the single shape
the reporter and the exit code are both derived from, so "what was
printed" and "what we exited with" cannot drift apart.
What counts as a failure
Three things reach the same verdict from different directions:
* the payload could not be captured off the line at all
(`Finding::KIND_EXTRACTION`) — a typo'd annotation;
* it was captured but is not JSON even after normalization
(`Finding::KIND_PARSE`);
* it parsed but violates the schema.
All three are "an annotation is malformed", which the contract fixes at
exit 1. A missing annotation is not among them — "lint, don't
require" (SPGD-12 §1): a file with no @intent: at all is clean.
Finding::KIND_READ — a spec file that could not be opened or is not
valid UTF-8 — is also reported as a failure, and therefore also exits 1.
That matches validate-intent, which classifies it separately (its own
read kind) and still reports it as FAIL with exit 1.
Defined Under Namespace
Classes: Result