From 7b581ed9173a05a5b5b2c0e41be1d890f8f9cfbe Mon Sep 17 00:00:00 2001 From: Jonathan Hoyt Date: Tue, 23 May 2017 16:50:10 -0700 Subject: [PATCH] Test that -colorspace is not included if colorspace option is nil --- lib/grim/image_magick_processor.rb | 35 +++++++++++--------- spec/lib/grim/image_magick_processor_spec.rb | 13 ++++++++ 2 files changed, 33 insertions(+), 15 deletions(-) diff --git a/lib/grim/image_magick_processor.rb b/lib/grim/image_magick_processor.rb index df6bad4..bb16174 100644 --- a/lib/grim/image_magick_processor.rb +++ b/lib/grim/image_magick_processor.rb @@ -23,6 +23,25 @@ def count(path) end def save(pdf, index, path, options) + command = prepare_command(pdf, index, path, options) + command_env = {} + + if @ghostscript_path && @ghostscript_path != DefaultGhostScriptPath + command_env['PATH'] = "#{File.dirname(@ghostscript_path)}#{File::PATH_SEPARATOR}#{ENV['PATH']}" + end + + Grim.logger.debug { "Running imagemagick command" } + if command_env.any? + Grim.logger.debug { command_env.map {|k,v| "#{k}=#{v}" }.join(" ") } + end + Grim.logger.debug { command.join(" ") } + + result, status = Open3.capture2e(command_env, command.join(" ")) + + status.success? || raise(UnprocessablePage, result) + end + + def prepare_command(pdf, index, path, options) width = options.fetch(:width, Grim::WIDTH) density = options.fetch(:density, Grim::DENSITY) quality = options.fetch(:quality, Grim::QUALITY) @@ -42,21 +61,7 @@ def save(pdf, index, path, options) command << "#{Shellwords.shellescape(pdf.path)}[#{index}]" command << path - command_env = {} - - if @ghostscript_path && @ghostscript_path != DefaultGhostScriptPath - command_env['PATH'] = "#{File.dirname(@ghostscript_path)}#{File::PATH_SEPARATOR}#{ENV['PATH']}" - end - - Grim.logger.debug { "Running imagemagick command" } - if command_env.any? - Grim.logger.debug { command_env.map {|k,v| "#{k}=#{v}" }.join(" ") } - end - Grim.logger.debug { command.join(" ") } - - result, status = Open3.capture2e(command_env, command.join(" ")) - - status.success? || raise(UnprocessablePage, result) + command end end end diff --git a/spec/lib/grim/image_magick_processor_spec.rb b/spec/lib/grim/image_magick_processor_spec.rb index 8ca1c99..db10062 100644 --- a/spec/lib/grim/image_magick_processor_spec.rb +++ b/spec/lib/grim/image_magick_processor_spec.rb @@ -128,4 +128,17 @@ expect(`convert #{@path2} -verbose info:`.downcase.include?("alpha")).to be(false) end end + + describe "#prepare_command" do + before(:each) do + @path = tmp_path("to_png_spec.jpg") + @pdf = Grim::Pdf.new(fixture_path("smoker.pdf")) + end + + it "removes -colorspace if colorspace option is nil" do + processor = Grim::ImageMagickProcessor.new + expect(processor.prepare_command(@pdf, 0, @path, {:colorspace => nil}).join(" ")).not_to \ + match(/-colorspace/) + end + end end