class RSpec::Core::ExampleStatusPersister
@private
to just the ones that failed the last time they ran.
Persists example ids and their statuses so that we can filter
def self.load_from(file_name)
def self.load_from(file_name) return [] unless File.exist?(file_name) ExampleStatusParser.parse(File.read(file_name)) end
def self.persist(examples, file_name)
def self.persist(examples, file_name) new(examples, file_name).persist end
def dumped_statuses
def dumped_statuses ExampleStatusDumper.dump(merged_statuses) end
def initialize(examples, file_name)
def initialize(examples, file_name) @examples = examples @file_name = file_name end
def merged_statuses
def merged_statuses ExampleStatusMerger.merge(statuses_from_this_run, statuses_from_previous_runs) end
def persist
def persist write dumped_statuses end
def statuses_from_previous_runs
def statuses_from_previous_runs self.class.load_from(@file_name) end
def statuses_from_this_run
def statuses_from_this_run @examples.map do |ex| result = ex.execution_result { :example_id => ex.id, :status => result.status ? result.status.to_s : Configuration::UNKNOWN_STATUS, :run_time => result.run_time ? Formatters::Helpers.format_duration(result.run_time) : "" } end end
def write(statuses)
def write(statuses) RSpec::Support::DirectoryMaker.mkdir_p(File.dirname(@file_name)) File.open(@file_name, "w") { |f| f.write(statuses) } end