class Similatron::Run
Attributes
comparisons[R]
engines[R]
run_path[R]
Public Instance Methods
compare(expected:, actual:)
click to toggle source
# File lib/similatron/run.rb, line 20 def compare(expected:, actual:) comparison = if File.exist?(expected) real_comparison(expected, actual) else copy_comparison(expected, actual) end comparisons << comparison comparison end
compare!(expected:, actual:)
click to toggle source
# File lib/similatron/run.rb, line 31 def compare!(expected:, actual:) comparison = compare(expected: expected, actual: actual) comparison.raise_when_different end
complete()
click to toggle source
# File lib/similatron/run.rb, line 16 def complete write_reports end
failed_comparisons()
click to toggle source
# File lib/similatron/run.rb, line 54 def failed_comparisons comparisons.reject(&:same?) end
html_report_path()
click to toggle source
# File lib/similatron/run.rb, line 50 def html_report_path File.join(run_path, "report.html") end
json_report_path()
click to toggle source
# File lib/similatron/run.rb, line 46 def json_report_path File.join(run_path, "report.json") end
overwrite_comparisons()
click to toggle source
# File lib/similatron/run.rb, line 58 def overwrite_comparisons comparisons.select(&:overwrite?) end
start(base_path: "tmp")
click to toggle source
# File lib/similatron/run.rb, line 6 def start(base_path: "tmp") run_id = SecureRandom.urlsafe_base64(8) @run_path = File.join(base_path, "run_#{run_id}") @engines = build_engines @comparisons = [] FileUtils.mkdir_p(run_path) end
summary()
click to toggle source
# File lib/similatron/run.rb, line 36 def summary return "" if failed_comparisons.empty? && overwrite_comparisons.empty? [ "Similatron report:", "#{failed_comparisons.count} failures.", "#{overwrite_comparisons.count} new files.", "Report may be found in #{html_report_path}" ].join("\n") end
Private Instance Methods
best_engine(file)
click to toggle source
# File lib/similatron/run.rb, line 88 def best_engine(file) mime_type = `file --mime -b #{file}`.chomp engines.detect { |engine| engine.can_handle_mime?(mime_type) } end
build_engines()
click to toggle source
# File lib/similatron/run.rb, line 76 def build_engines engine_classes = [ PdfComparisonEngine, ImagemagickComparisonEngine, DiffComparisonEngine, BinaryDiffComparisonEngine ] engine_classes.map do |engine_class| engine_class.new(diffs_path: run_path) end end
copy_comparison(expected, actual)
click to toggle source
# File lib/similatron/run.rb, line 66 def copy_comparison(expected, actual) FileUtils.cp(actual, expected) Comparison.new( overwrite: true, expected: expected, actual: actual, score: 0 ) end
real_comparison(expected, actual)
click to toggle source
# File lib/similatron/run.rb, line 93 def real_comparison(expected, actual) engine = best_engine(expected) engine.compare( expected: expected, actual: actual ) end
to_html()
click to toggle source
# File lib/similatron/run.rb, line 106 def to_html HtmlReport.new(self).render end
to_json()
click to toggle source
# File lib/similatron/run.rb, line 102 def to_json comparisons.map(&:as_json).to_json end
write_reports()
click to toggle source
# File lib/similatron/run.rb, line 110 def write_reports File.write(html_report_path, to_html) File.write(json_report_path, to_json) end