Module: RSpecTracer::RemoteCache::Validator Private
- Defined in:
- lib/rspec_tracer/remote_cache/validator.rb
Overview
This module is part of a private API. You should avoid using this module if possible, as it may be removed or be changed in the future.
Cache validator. Replaces 1.x’s CACHE_FILES_PER_TEST_SUITE=11 file-count check, which broke under any FILENAMES change (v2 grew from 11 to 15 files across Phase 3-6, so the old validator refused every v2 cache).
New signal: ‘schema_version` in `last_run.json`. The storage backend writes `Storage::Schema::CURRENT` on every save; this validator accepts only `Storage::Schema::SUPPORTED` values. Same policy as `Storage::JsonBackend#load_graph`: mismatch means “cold run,” no migrators, one free cold run on upgrade.
Atomicity note: ‘last_run.json` is written last via tmp+rename (see `Storage::JsonBackend#write_last_run_atomic`). If `last_run.json` exists, every other file in the run was present at write time. So the file-count sanity check 1.x did was already redundant with the atomicity guarantee; we drop it cleanly.
Class Method Summary collapse
-
.valid?(manifest) ⇒ Boolean
private
True when the given parsed last_run manifest is acceptable to this tracer version.
-
.valid_file?(path) ⇒ Boolean
private
Read + parse + validate a last_run.json file on disk.
Class Method Details
.valid?(manifest) ⇒ Boolean
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
True when the given parsed last_run manifest is acceptable to this tracer version. Missing / unparseable / wrong-shape inputs all return false without raising.
31 32 33 34 35 |
# File 'lib/rspec_tracer/remote_cache/validator.rb', line 31 def self.valid?(manifest) return false unless manifest.is_a?(Hash) RSpecTracer::Storage::Schema.supported?(manifest['schema_version']) end |
.valid_file?(path) ⇒ Boolean
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Read + parse + validate a last_run.json file on disk. Returns true iff the file exists, parses as JSON, has a Hash root, and carries a supported schema_version. Any I/O or parse failure (missing file -> Errno::ENOENT, unreadable -> Errno::EACCES, malformed JSON -> JSON::ParserError) is caught by the rescue below and degraded to false.
43 44 45 46 47 |
# File 'lib/rspec_tracer/remote_cache/validator.rb', line 43 def self.valid_file?(path) valid?(JSON.parse(File.read(path, encoding: 'UTF-8'))) rescue StandardError false end |