class RSpec::Core::ExampleStatusPersister
Persists example ids and their statuses so that we can filter to just the ones that failed the last time they ran. @private
Public Class Methods
# File rspec-core/lib/rspec/core/example_status_persister.rb, line 9 def self.load_from(file_name) return [] unless File.exist?(file_name) ExampleStatusParser.parse(File.read(file_name)) end
# File rspec-core/lib/rspec/core/example_status_persister.rb, line 18 def initialize(examples, file_name) @examples = examples @file_name = file_name end
# File rspec-core/lib/rspec/core/example_status_persister.rb, line 14 def self.persist(examples, file_name) new(examples, file_name).persist end
Public Instance Methods
# File rspec-core/lib/rspec/core/example_status_persister.rb, line 23 def persist RSpec::Support::DirectoryMaker.mkdir_p(File.dirname(@file_name)) File.open(@file_name, File::RDWR | File::CREAT) do |f| # lock the file while reading / persisting to avoid a race # condition where parallel or unrelated spec runs race to # update the same file f.flock(File::LOCK_EX) unparsed_previous_runs = f.read f.rewind f.write(dump_statuses(unparsed_previous_runs)) f.flush f.truncate(f.pos) end end