From 8fa05434947bda9d7af1f1cd87a1bde3abe398df Mon Sep 17 00:00:00 2001 From: Joseph Wynn Date: Wed, 28 Dec 2016 23:14:13 +1300 Subject: [PATCH] Maintain source image interlace mode --- features/image-generation.feature | 12 ++++++++++++ features/step_definitions/jekyll_steps.rb | 6 ++++++ features/test-site/assets/progressive.jpeg | Bin 0 -> 5033 bytes lib/jekyll-responsive-image/resize_handler.rb | 1 + 4 files changed, 19 insertions(+) create mode 100644 features/test-site/assets/progressive.jpeg diff --git a/features/image-generation.feature b/features/image-generation.feature index c9d511f..5e05c45 100644 --- a/features/image-generation.feature +++ b/features/image-generation.feature @@ -38,6 +38,18 @@ Feature: Responsive image generation And the file "assets/resized/subdir/test-100.png" should exist And the file "_site/assets/resized/subdir/test-100.png" should exist + Scenario: Honouring source image interlace mode + Given I have a responsive_image configuration with: + """ + template: _includes/responsive-image.html + sizes: + - width: 100 + """ + + And I have a file "index.html" with "{% responsive_image path: assets/progressive.jpeg %}" + When I run Jekyll + Then the image "assets/resized/progressive-100x50.jpeg" should be interlaced + Scenario: Honouring Jekyll 'source' configuration Given I have copied my site to "my-site-copy/src" And I have a configuration with: diff --git a/features/step_definitions/jekyll_steps.rb b/features/step_definitions/jekyll_steps.rb index ca86251..f89fc72 100644 --- a/features/step_definitions/jekyll_steps.rb +++ b/features/step_definitions/jekyll_steps.rb @@ -59,6 +59,12 @@ Then /^the image "(.+)" should have the dimensions "(\d+)x(\d+)"$/ do |path, wid img.destroy! end +Then /^the image "(.+)" should be interlaced$/ do |path| + img = Magick::Image::read(path).first + assert_equal Magick::JPEGInterlace, img.interlace + img.destroy! +end + def write_file(path, contents) File.open(path, 'w') do |f| f.write(contents) diff --git a/features/test-site/assets/progressive.jpeg b/features/test-site/assets/progressive.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..2c056c1b5886bc466ead781b5cddbf3f27b89e66 GIT binary patch literal 5033 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