class RSpec::GoldenFiles::GoldenFilesMatcher
Public Class Methods
new(filename, file_reader_type, template_vars)
click to toggle source
# File lib/rspec-golden-files.rb, line 57 def initialize(filename, file_reader_type, template_vars) @filename = filename @file_reader_type = file_reader_type @template_vars = template_vars end
Public Instance Methods
actual()
click to toggle source
# File lib/rspec-golden-files.rb, line 93 def actual @value end
description()
click to toggle source
# File lib/rspec-golden-files.rb, line 101 def description "be matching golden file with name #{@filename}" end
diffable?()
click to toggle source
# File lib/rspec-golden-files.rb, line 105 def diffable? true end
expected()
click to toggle source
# File lib/rspec-golden-files.rb, line 97 def expected @expected_value end
failure_message()
click to toggle source
# File lib/rspec-golden-files.rb, line 109 def failure_message "expected #{@value.inspect} does not match golden file '#{@filename}'" end
failure_message_when_negated()
click to toggle source
# File lib/rspec-golden-files.rb, line 113 def failure_message_when_negated "expected #{@value.inspect} matches golden file '#{@filename}'" end
matches?(value)
click to toggle source
# File lib/rspec-golden-files.rb, line 63 def matches?(value) unless File.exist?(@filename) raise ArgumentError, "golden file '#{@filename}' not found" end @value = value actual_tmpfile = Tempfile.new('actual') actual_tmpfile.write(value.to_s) actual_tmpfile.close(false) file_reader = case @file_reader_type.to_sym when :simple SimpleFileReader.new(@filename) when :erb ErbFileReader.new(@filename, @template_vars) else raise ArgumentError, "unknown file reader type #{@file_reader_type}. `simple` and `erb` are supported" end @expected_value = file_reader.expected_value system("diff #{actual_tmpfile.path} #{file_reader.filename} > /dev/null") is_successful = $CHILD_STATUS.to_i.zero? file_reader.close actual_tmpfile.delete is_successful end