You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

71 lines
2.6 KiB

require 'spec_helper'
require 'squib'
require 'pp'
describe 'Squib samples' do
# This test could use some explanation
# Much of the development of Squib has been sample-driven. Every time I want
# new syntax or feature, I write a sample, get it working, and then write
# tests for boundary cases in the unit tests.
#
# This makes documentation much easier and example-driven.
# ...but I want to use those samples for regression & integration tests too.
#
# The above test is a good smoke test, but it just looks for exceptions.
# What this set of tests do is run the samples again, but mocking out Cairo,
# Pango, RSVG, and any other dependencies. We log those API calls and store
# them in a super-verbose string. We compare our runs against what happened
# before.
#
# Thus, if we ever change anything that results in a ANY change to our
# regression logs, then these tests will fail. If it's SURPRISING, then we
# caught an integration bug. If it's not, just update and overwrite the logs.
#
# So it's understood that you should have to periodically enable the
# overwrite_sample method below to store the new regression log. Just make
# sure you inspect the change and make sure it makes sense with the change
# you made to the samples or Squib.
# FOR NOW!! These two I can't get working on Travis, so I'm disabling
# Has to do with UTF-8 encoding of a special characters
# layouts.rb
# These are samples that don't really need a regression log
# colors.rb
# unicode.rb
%w(
autoscale_font/_autoscale_font.rb
basic.rb
colors/_gradients.rb
config/config_text_markup.rb
config/custom_config.rb
data/_csv.rb
data/_excel.rb
hello_world.rb
images/_cairo_access.rb
images/_more_load_images.rb
proofs/_tgc_proofs.rb
ranges/_ranges.rb
saves/_hand.rb
saves/_portrait_landscape.rb
saves/_save_pdf.rb
saves/_saves.rb
saves/_showcase.rb
shapes/_draw_shapes.rb
shapes/_proofs.rb
text/_embed_text.rb
text/_text_options.rb
units/_units.rb
).each do |sample|
it "has not changed for #{sample}", slow: true do
log = StringIO.new
mock_cairo(log)
full_sample_path = File.expand_path "#{samples_dir}/#{sample}"
Dir.chdir(File.dirname("#{samples_dir}/#{sample}")) do
load full_sample_path
end
# overwrite_sample(sample, log) # Use TEMPORARILY once happy with the new sample log
test_file_str = File.open(sample_regression_file(sample), 'r:UTF-8').read
expect(log.string).to eq(test_file_str)
end
end
end