Commit 0216d4d7 by Jon Yurek

Some better errors when commands aren't found, and tests to ensure the errors show

parent a2d5e5a1
...@@ -19,6 +19,8 @@ module Paperclip ...@@ -19,6 +19,8 @@ module Paperclip
Paperclip.run("identify", "-format %wx%h :file", :file => "#{file}[0]") Paperclip.run("identify", "-format %wx%h :file", :file => "#{file}[0]")
rescue Cocaine::ExitStatusError rescue Cocaine::ExitStatusError
"" ""
rescue Cocaine::CommandNotFoundError => e
raise Paperclip::CommandNotFoundError.new("Could not run the `identify` command. Please install ImageMagick.")
end end
parse(geometry) || parse(geometry) ||
raise(NotIdentifiedByImageMagickError.new("#{file} is not recognized by the 'identify' command.")) raise(NotIdentifiedByImageMagickError.new("#{file} is not recognized by the 'identify' command."))
......
...@@ -59,8 +59,10 @@ module Paperclip ...@@ -59,8 +59,10 @@ module Paperclip
parameters = parameters.flatten.compact.join(" ").strip.squeeze(" ") parameters = parameters.flatten.compact.join(" ").strip.squeeze(" ")
success = Paperclip.run("convert", parameters, :source => "#{File.expand_path(src.path)}[0]", :dest => File.expand_path(dst.path)) success = Paperclip.run("convert", parameters, :source => "#{File.expand_path(src.path)}[0]", :dest => File.expand_path(dst.path))
rescue Cocaine::CommandLineError => e rescue Cocaine::ExitStatusError => e
raise PaperclipError, "There was an error processing the thumbnail for #{@basename}" if @whiny raise PaperclipError, "There was an error processing the thumbnail for #{@basename}" if @whiny
rescue Cocaine::CommandNotFoundError => e
raise Paperclip::CommandNotFoundError.new("Could not run the `convert` command. Please install ImageMagick.")
end end
dst dst
......
...@@ -120,6 +120,19 @@ class GeometryTest < Test::Unit::TestCase ...@@ -120,6 +120,19 @@ class GeometryTest < Test::Unit::TestCase
assert_raise(Paperclip::NotIdentifiedByImageMagickError){ @geo = Paperclip::Geometry.from_file(file) } assert_raise(Paperclip::NotIdentifiedByImageMagickError){ @geo = Paperclip::Geometry.from_file(file) }
end end
should "let us know when a command isn't found versus a processing error" do
old_path = ENV['PATH']
begin
ENV['PATH'] = ''
assert_raises(Paperclip::CommandNotFoundError) do
file = File.join(File.dirname(__FILE__), "fixtures", "5k.png")
@geo = Paperclip::Geometry.from_file(file)
end
ensure
ENV['PATH'] = old_path
end
end
[['vertical', 900, 1440, true, false, false, 1440, 900, 0.625], [['vertical', 900, 1440, true, false, false, 1440, 900, 0.625],
['horizontal', 1024, 768, false, true, false, 1024, 768, 1.3333], ['horizontal', 1024, 768, false, true, false, 1024, 768, 1.3333],
['square', 100, 100, false, false, true, 100, 100, 1]].each do |args| ['square', 100, 100, false, false, true, 100, 100, 1]].each do |args|
......
...@@ -73,6 +73,18 @@ class ThumbnailTest < Test::Unit::TestCase ...@@ -73,6 +73,18 @@ class ThumbnailTest < Test::Unit::TestCase
@thumb = Paperclip::Thumbnail.new(@file, :geometry => "100x50#") @thumb = Paperclip::Thumbnail.new(@file, :geometry => "100x50#")
end end
should "let us know when a command isn't found versus a processing error" do
old_path = ENV['PATH']
begin
ENV['PATH'] = ''
assert_raises(Paperclip::CommandNotFoundError) do
@thumb.make
end
ensure
ENV['PATH'] = old_path
end
end
should "report its correct current and target geometries" do should "report its correct current and target geometries" do
assert_equal "100x50#", @thumb.target_geometry.to_s assert_equal "100x50#", @thumb.target_geometry.to_s
assert_equal "434x66", @thumb.current_geometry.to_s assert_equal "434x66", @thumb.current_geometry.to_s
...@@ -182,6 +194,18 @@ class ThumbnailTest < Test::Unit::TestCase ...@@ -182,6 +194,18 @@ class ThumbnailTest < Test::Unit::TestCase
@thumb.make @thumb.make
end end
end end
should "let us know when a command isn't found versus a processing error" do
old_path = ENV['PATH']
begin
ENV['PATH'] = ''
assert_raises(Paperclip::CommandNotFoundError) do
@thumb.make
end
ensure
ENV['PATH'] = old_path
end
end
end end
end end
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment