The laziest way to test generated artifacts.
Similatron
compares files. It can make image, pdf, text or pure binary
comparisons.
It's designed to be used in tests, so:
- If the files are different, it'll raise an exception
- If the expected file doesn't yet exist, it'll copy the expected one over (so you can build your tests post-hoc in one go)
- It can create html/json reports after running, so you'll be able to inspect differences in the actual files, and, when available, have access to a file with the differences as computed.
One of the simplest ways to use it is the following:
after :all do
Similatron.complete
end
it "creates an image for an ugly face" do
expected = "spec/assets/expected_face.jpg"
actual = face_builder.ugly_face(:path => "tmp/ugly.jpg")
Similatron.compare(expected: expected, actual: actual)
end
Depending on the files...
- If the actual exists and is equal to the expected, the spec will pass.
- If the expected face doesn't exist,
tmp/ugly.jpg
will be copied over, and the spec will not fail. - Otherwise, the spec fails.
Whenever the images are not equal, an html report is generated so you can check the reasons for the failure.
Add this line to your application's Gemfile:
gem 'similatron'
And then execute:
$ bundle
Or install it yourself as:
$ gem install similatron
Similatron
needs Imagemagick (to compare images), and a standard
implementation of diff
.
After checking out the repo, run bin/setup
to install dependencies. Then,
run rake spec
to run the tests. You can also run bin/console
for an
interactive prompt that will allow you to experiment.
To install this gem onto your local machine, run bundle exec rake install
.
Bug reports and pull requests are welcome on GitHub at https://github.com/dgsuarez/similatron.
The gem is available as open source under the terms of the MIT License.