mojo_magick 0.5.7 → 0.6.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,3 +1,3 @@
1
1
  module MojoMagick
2
- VERSION = '0.5.7'.freeze
2
+ VERSION = "0.6.5"
3
3
  end
data/mojo_magick.gemspec CHANGED
@@ -1,7 +1,7 @@
1
- $:.push File.expand_path('lib', __dir__)
2
- require 'mojo_magick/version'
1
+ $LOAD_PATH.push File.expand_path("lib", __dir__)
2
+ require "mojo_magick/version"
3
3
 
4
- post_install_message = <<~EOF
4
+ post_install_message = <<~EOPOST_INSTALL
5
5
 
6
6
  Thanks for installing MojoMagick - keepin it simple!
7
7
 
@@ -10,29 +10,32 @@ post_install_message = <<~EOF
10
10
  If you plan to build images with text (using the "label" method) you'll need freetype and ghostscript as well.
11
11
  Check out http://www.freetype.org and http://ghostscript.com respectively for installation info.
12
12
 
13
- EOF
13
+ EOPOST_INSTALL
14
14
 
15
15
  Gem::Specification.new do |s|
16
- s.name = 'mojo_magick'
17
- s.license = 'MIT'
16
+ s.name = "mojo_magick"
17
+ s.license = "MIT"
18
18
  s.version = MojoMagick::VERSION
19
19
  s.platform = Gem::Platform::RUBY
20
- s.authors = ['Steve Midgley', 'Elliot Nelson', 'Jon Rogers']
21
- s.email = ['science@misuse.org', 'jon@rcode5.com']
22
- s.homepage = 'http://github.com/rcode5/mojo_magick'
20
+ s.authors = ["Steve Midgley", "Elliot Nelson", "Jon Rogers"]
21
+ s.email = ["science@misuse.org", "jon@rcode5.com"]
22
+ s.homepage = "http://github.com/rcode5/mojo_magick"
23
23
  s.summary = "mojo_magick-#{MojoMagick::VERSION}"
24
- s.description = 'Simple Ruby stateless module interface to imagemagick.'
24
+ s.description = "Simple Ruby stateless module interface to imagemagick."
25
+ s.required_ruby_version = ">= 2.6.0"
25
26
 
26
- s.rubyforge_project = 'mojo_magick'
27
+ s.rubyforge_project = "mojo_magick"
27
28
 
28
29
  s.files = `git ls-files`.split("\n")
29
30
  s.test_files = `git ls-files -- {test,features}/*`.split("\n")
30
31
  s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
31
- s.require_paths = ['lib']
32
- s.add_development_dependency('minitest')
33
- s.add_development_dependency('rake')
34
- s.add_development_dependency('rspec-expectations')
35
- s.add_development_dependency('simplecov')
32
+ s.require_paths = ["lib"]
33
+ s.add_development_dependency("bundle-audit")
34
+ s.add_development_dependency("bundler")
35
+ s.add_development_dependency("minitest")
36
+ s.add_development_dependency("rake")
37
+ s.add_development_dependency("rubocop")
38
+ s.add_development_dependency("rubocop-performance")
36
39
 
37
40
  s.post_install_message = post_install_message
38
41
  end
Binary file
@@ -1,6 +1,6 @@
1
- require File.join(File.dirname(__FILE__), 'test_helper')
1
+ require_relative "test_helper"
2
2
 
3
- IDENTIFY_FONT_RESPONSE = <<~EOF.freeze
3
+ IDENTIFY_FONT_RESPONSE = <<~EOFONT
4
4
 
5
5
  Font: Zapf-Dingbats
6
6
  family: Zapf Dingbats
@@ -17,13 +17,13 @@ IDENTIFY_FONT_RESPONSE = <<~EOF.freeze
17
17
  glyphs: /Library/Fonts/Zapfino.ttf
18
18
 
19
19
 
20
- EOF
20
+ EOFONT
21
21
 
22
- class ParserTest < MiniTest::Test
22
+ class FontParserTest < MiniTest::Test
23
23
  def test_parse_fonts
24
- parser = MojoMagick::Util::Parser.new
25
- parsed_fonts = parser.parse_fonts(IDENTIFY_FONT_RESPONSE)
24
+ parser = MojoMagick::Util::FontParser.new(IDENTIFY_FONT_RESPONSE)
25
+ parsed_fonts = parser.parse
26
26
  assert_equal parsed_fonts.length, 2
27
- assert_equal parsed_fonts[1].style, 'Italic'
27
+ assert_equal parsed_fonts[1].style, "Italic"
28
28
  end
29
29
  end
data/test/font_test.rb CHANGED
@@ -1,6 +1,6 @@
1
- require File.join(File.dirname(__FILE__), 'test_helper')
1
+ require_relative "test_helper"
2
2
 
3
- IDENTIFY_FONT_RESPONSE = <<~EOF.freeze
3
+ IDENTIFY_FONT_RESPONSE = <<~EO_FONTS
4
4
  Font: Zapf-Dingbats
5
5
  family: Zapf Dingbats
6
6
  style: Normal
@@ -13,7 +13,7 @@ IDENTIFY_FONT_RESPONSE = <<~EOF.freeze
13
13
  stretch: Normal
14
14
  weight: 400
15
15
  glyphs: /Library/Fonts/Zapfino.ttf
16
- EOF
16
+ EO_FONTS
17
17
 
18
18
  class FontTest < MiniTest::Test
19
19
  def test_font
@@ -21,8 +21,8 @@ class FontTest < MiniTest::Test
21
21
  assert_nil f.name
22
22
  assert_equal f.valid?, false
23
23
 
24
- f = MojoMagick::Font.new(name: 'Zapfino', weight: 400)
25
- assert_equal f.name, 'Zapfino'
24
+ f = MojoMagick::Font.new(name: "Zapfino", weight: 400)
25
+ assert_equal f.name, "Zapfino"
26
26
  assert_equal f.valid?, true
27
27
  assert_equal f.weight, 400
28
28
  end
@@ -1,24 +1,27 @@
1
- require File.join(File.dirname(__FILE__), 'test_helper')
1
+ require_relative "test_helper"
2
2
 
3
3
  class MojoMagickTest < MiniTest::Test
4
4
  # we keep a fixtures path and a working path so that we can easily test image
5
5
  # manipulation routines without tainting the original images
6
6
  def setup
7
- @fixtures_path = File.expand_path(File.join(File.dirname(__FILE__), 'fixtures'))
8
- @working_path = File.join(@fixtures_path, 'tmp')
7
+ @fixtures_path = File.expand_path(File.join(File.dirname(__FILE__), "fixtures"))
8
+ @working_path = File.join(@fixtures_path, "tmp")
9
+
10
+ reset_images
11
+
12
+ @test_image = File.join(@working_path, "5742.jpg")
13
+ @out_image = File.join(@working_path, "out1.jpg")
9
14
  end
10
15
 
11
16
  def reset_images
12
17
  FileUtils.rm_r(@working_path) if File.exist?(@working_path)
13
18
  FileUtils.mkdir(@working_path)
14
- Dir.glob(File.join(@fixtures_path, '*')).each do |file|
19
+ Dir.glob(File.join(@fixtures_path, "*")).each do |file|
15
20
  FileUtils.cp(file, @working_path) if File.file?(file)
16
21
  end
17
- @test_image = File.join(@working_path, '5742.jpg')
18
22
  end
19
23
 
20
24
  def test_get_image_size
21
- reset_images
22
25
  orig_image_size = File.size(@test_image)
23
26
  retval = MojoMagick.get_image_size(@test_image)
24
27
  assert_equal orig_image_size, File.size(@test_image)
@@ -28,11 +31,10 @@ class MojoMagickTest < MiniTest::Test
28
31
 
29
32
  def test_image_resize
30
33
  # test basic resizing
31
- reset_images
32
34
  orig_image_size = File.size(@test_image)
33
- size_test_temp = Tempfile.new('mojo_test')
35
+ size_test_temp = Tempfile.new("mojo_test")
34
36
  size_test = size_test_temp.path
35
- retval = MojoMagick.resize(@test_image, size_test, {width: 100, height: 100})
37
+ retval = MojoMagick.resize(@test_image, size_test, { width: 100, height: 100 })
36
38
  assert_equal size_test, retval
37
39
  assert_equal orig_image_size, File.size(@test_image)
38
40
  assert_equal retval, size_test
@@ -41,18 +43,17 @@ class MojoMagickTest < MiniTest::Test
41
43
  assert_equal 67, new_dimensions[:width]
42
44
 
43
45
  # we should be able to resize image right over itself
44
- retval = MojoMagick.resize(@test_image, @test_image, {width: 100, height: 100})
46
+ retval = MojoMagick.resize(@test_image, @test_image, { width: 150, height: 150 })
45
47
  assert_equal @test_image, retval
46
48
  refute_equal orig_image_size, File.size(@test_image)
47
49
  new_dimensions = MojoMagick.get_image_size(@test_image)
48
- assert_equal 100, new_dimensions[:height]
49
- assert_equal 67, new_dimensions[:width]
50
+ assert_equal 150, new_dimensions[:height]
51
+ assert_equal 100, new_dimensions[:width]
50
52
  end
51
53
 
52
54
  def test_image_resize_with_percentage
53
- reset_images
54
55
  original_size = MojoMagick.get_image_size(@test_image)
55
- retval = MojoMagick.resize(@test_image, @test_image, {percent: 50})
56
+ retval = MojoMagick.resize(@test_image, @test_image, { percent: 50 })
56
57
  assert_equal @test_image, retval
57
58
  new_dimensions = MojoMagick.get_image_size(@test_image)
58
59
  %i[height width].each do |dim|
@@ -62,10 +63,9 @@ class MojoMagickTest < MiniTest::Test
62
63
 
63
64
  def test_shrink_with_big_dimensions
64
65
  # image shouldn't resize if we specify very large dimensions and specify "shrink_only"
65
- reset_images
66
- size_test_temp = Tempfile.new('mojo_test')
66
+ size_test_temp = Tempfile.new("mojo_test")
67
67
  size_test = size_test_temp.path
68
- retval = MojoMagick.shrink(@test_image, size_test, {width: 1000, height: 1000})
68
+ retval = MojoMagick.shrink(@test_image, size_test, { width: 1000, height: 1000 })
69
69
  assert_equal size_test, retval
70
70
  new_dimensions = MojoMagick.get_image_size(@test_image)
71
71
  assert_equal 500, new_dimensions[:height]
@@ -73,9 +73,8 @@ class MojoMagickTest < MiniTest::Test
73
73
  end
74
74
 
75
75
  def test_shrink
76
- reset_images
77
76
  # image should resize if we specify small dimensions and shrink_only
78
- retval = MojoMagick.shrink(@test_image, @test_image, {width: 1000, height: 100})
77
+ retval = MojoMagick.shrink(@test_image, @test_image, { width: 1000, height: 100 })
79
78
  assert_equal @test_image, retval
80
79
  new_dimensions = MojoMagick.get_image_size(@test_image)
81
80
  assert_equal 100, new_dimensions[:height]
@@ -83,9 +82,8 @@ class MojoMagickTest < MiniTest::Test
83
82
  end
84
83
 
85
84
  def test_resize_with_shrink_only_options
86
- reset_images
87
85
  # image should resize if we specify small dimensions and shrink_only
88
- retval = MojoMagick.resize(@test_image, @test_image, {shrink_only: true, width: 400, height: 400})
86
+ retval = MojoMagick.resize(@test_image, @test_image, { shrink_only: true, width: 400, height: 400 })
89
87
  assert_equal @test_image, retval
90
88
  new_dimensions = MojoMagick.get_image_size(@test_image)
91
89
  assert_equal 400, new_dimensions[:height]
@@ -94,8 +92,8 @@ class MojoMagickTest < MiniTest::Test
94
92
 
95
93
  def test_expand_with_small_dim
96
94
  # image shouldn't resize if we specify small dimensions and expand_only
97
- reset_images
98
- retval = MojoMagick.expand(@test_image, @test_image, {width: 10, height: 10})
95
+ _orig_image_size = File.size(@test_image)
96
+ retval = MojoMagick.expand(@test_image, @test_image, { width: 10, height: 10 })
99
97
  assert_equal @test_image, retval
100
98
  new_dimensions = MojoMagick.get_image_size(@test_image)
101
99
  assert_equal 500, new_dimensions[:height]
@@ -103,9 +101,8 @@ class MojoMagickTest < MiniTest::Test
103
101
  end
104
102
 
105
103
  def test_expand
106
- reset_images
107
104
  # image should resize if we specify large dimensions and expand_only
108
- retval = MojoMagick.expand(@test_image, @test_image, {width: 1000, height: 1000})
105
+ retval = MojoMagick.expand(@test_image, @test_image, { width: 1000, height: 1000 })
109
106
  assert_equal @test_image, retval
110
107
  new_dimensions = MojoMagick.get_image_size(@test_image)
111
108
  assert_equal 1000, new_dimensions[:height]
@@ -114,26 +111,26 @@ class MojoMagickTest < MiniTest::Test
114
111
 
115
112
  def test_invalid_images
116
113
  # test bad images
117
- bad_image = File.join(@working_path, 'not_an_image.jpg')
118
- zero_image = File.join(@working_path, 'zero_byte_image.jpg')
119
- assert_raises(MojoMagick::MojoFailed) {MojoMagick.get_image_size(bad_image)}
120
- assert_raises(MojoMagick::MojoFailed) {MojoMagick.get_image_size(zero_image)}
121
- assert_raises(MojoMagick::MojoFailed) {MojoMagick.get_image_size('/file_does_not_exist_here_ok.jpg')}
114
+ bad_image = File.join(@working_path, "not_an_image.jpg")
115
+ zero_image = File.join(@working_path, "zero_byte_image.jpg")
116
+ assert_raises(MojoMagick::MojoFailed) { MojoMagick.get_image_size(bad_image) }
117
+ assert_raises(MojoMagick::MojoFailed) { MojoMagick.get_image_size(zero_image) }
118
+ assert_raises(MojoMagick::MojoFailed) do
119
+ MojoMagick.get_image_size("/file_does_not_exist_here_ok.jpg")
120
+ end
122
121
  end
123
122
 
124
123
  def test_resize_with_fill
125
- reset_images
126
- @test_image = File.join(@working_path, '5742.jpg')
127
- MojoMagick.resize(@test_image, @test_image, {fill: true, width: 100, height: 100})
124
+ @test_image = File.join(@working_path, "5742.jpg")
125
+ MojoMagick.resize(@test_image, @test_image, { fill: true, width: 100, height: 100 })
128
126
  dim = MojoMagick.get_image_size(@test_image)
129
127
  assert_equal 100, dim[:width]
130
128
  assert_equal 150, dim[:height]
131
129
  end
132
130
 
133
131
  def test_resize_with_fill_and_crop
134
- reset_images
135
- @test_image = File.join(@working_path, '5742.jpg')
136
- MojoMagick.resize(@test_image, @test_image, {fill: true, crop: true, width: 150, height: 120})
132
+ @test_image = File.join(@working_path, "5742.jpg")
133
+ MojoMagick.resize(@test_image, @test_image, { fill: true, crop: true, width: 150, height: 120 })
137
134
  dim = MojoMagick.get_image_size(@test_image)
138
135
  assert_equal 150, dim[:width]
139
136
  assert_equal 120, dim[:height]
@@ -141,25 +138,23 @@ class MojoMagickTest < MiniTest::Test
141
138
 
142
139
  def test_tempfile
143
140
  # Create a tempfile and return the path
144
- filename = MojoMagick.tempfile('binary data')
145
- File.open(filename, 'rb') do |f|
146
- assert_equal f.read, 'binary data'
141
+ filename = MojoMagick.tempfile("binary data")
142
+ File.open(filename, "rb") do |f|
143
+ assert_equal f.read, "binary data"
147
144
  end
148
145
  end
149
146
 
150
147
  def test_label
151
- reset_images
152
- out_image = File.join(@working_path, 'label_test.png')
148
+ out_image = File.join(@working_path, "label_test.png")
153
149
 
154
150
  MojoMagick.convert do |c|
155
- c.label 'rock the house'
151
+ c.label "rock the house"
156
152
  c.file out_image
157
153
  end
158
154
  end
159
155
 
160
156
  def test_label_with_quote
161
- reset_images
162
- out_image = File.join(@working_path, 'label_test.png')
157
+ out_image = File.join(@working_path, "label_test.png")
163
158
 
164
159
  MojoMagick.convert do |c|
165
160
  c.label 'rock "the house'
@@ -168,18 +163,16 @@ class MojoMagickTest < MiniTest::Test
168
163
  end
169
164
 
170
165
  def test_label_with_apostrophe
171
- reset_images
172
- out_image = File.join(@working_path, 'label_test.png')
166
+ out_image = File.join(@working_path, "label_test.png")
173
167
 
174
168
  MojoMagick.convert do |c|
175
- c.label 'rock \'the house'
169
+ c.label "rock 'the house"
176
170
  c.file out_image
177
171
  end
178
172
  end
179
173
 
180
174
  def test_label_with_quotes
181
- reset_images
182
- out_image = File.join(@working_path, 'label_test.png')
175
+ out_image = File.join(@working_path, "label_test.png")
183
176
 
184
177
  MojoMagick.convert do |c|
185
178
  c.label 'this is "it!"'
@@ -189,89 +182,107 @@ class MojoMagickTest < MiniTest::Test
189
182
 
190
183
  def test_bad_command
191
184
  MojoMagick.convert do |c|
192
- c.unknown_option 'fail'
193
- c.file 'boogabooga.whatever'
185
+ c.unknown_option "fail"
186
+ c.file "boogabooga.whatever"
194
187
  end
195
188
  rescue MojoMagick::MojoFailed => e
196
- assert e.message.include?('unrecognized option'), 'Unable to find ImageMagick commandline error in the message'
197
- assert e.message.include?('convert.c/ConvertImageCommand'), 'Unable to find ImageMagick commandline error in the message'
189
+ assert e.message.include?("unrecognized option"),
190
+ "Unable to find ImageMagick commandline error in the message"
191
+ assert e.message.include?("convert.c/ConvertImageCommand"),
192
+ "Unable to find ImageMagick commandline error in the message"
198
193
  end
199
194
 
200
- def test_blob
201
- reset_images
202
-
203
- # RGB8 test
204
- data = (16.times.map { [rand > 0.5 ? 0 : 255] * 3 }).flatten
205
- bdata = data.pack 'C' * data.size
206
- out = 'out.png'
195
+ def test_blob_rgb
196
+ data = (Array.new(16) { [rand > 0.5 ? 0 : 255] * 3 }).flatten
197
+ bdata = data.pack "C" * data.size
198
+ out = "out.png"
207
199
  MojoMagick.convert(nil, "png:#{out}") do |c|
208
- c.blob bdata, format: :rgb, depth: 8, size: '4x4'
200
+ c.blob bdata, format: :rgb, depth: 8, size: "4x4"
209
201
  end
210
202
  r = MojoMagick.get_image_size(out)
211
203
  assert r[:height] == 4
212
204
  assert r[:width] == 4
213
205
  end
214
206
 
215
- def test_command_helpers
216
- reset_images
217
- test_image = File.join(@working_path, '5742.jpg')
218
- out_image = File.join(@working_path, 'out1.jpg')
219
-
220
- # Simple convert test
207
+ def test_convert
221
208
  MojoMagick.convert do |c|
222
- c.file test_image
223
- c.crop '92x64+0+0'
209
+ c.file @test_image
210
+ c.crop "92x64+0+0"
224
211
  c.repage!
225
- c.file out_image
212
+ c.file @out_image
226
213
  end
227
- retval = MojoMagick.get_image_size(out_image)
214
+ retval = MojoMagick.get_image_size(@out_image)
228
215
  assert_equal 92, retval[:width]
229
216
  assert_equal 64, retval[:height]
217
+ end
230
218
 
219
+ def test_mogrify
220
+ MojoMagick.convert do |c|
221
+ c.file @test_image
222
+ c.file @out_image
223
+ end
231
224
  # Simple mogrify test
232
225
  MojoMagick.mogrify do |m|
233
- m.crop '32x32+0+0'
226
+ m.crop "32x32+0+0"
234
227
  m.repage!
235
- m.file out_image
228
+ m.file @out_image
236
229
  end
237
- retval = MojoMagick.get_image_size(out_image)
230
+ retval = MojoMagick.get_image_size(@out_image)
238
231
  assert_equal 32, retval[:width]
239
232
  assert_equal 32, retval[:height]
233
+ end
240
234
 
241
- # Convert test, using file shortcuts
242
- MojoMagick.convert(test_image, out_image) do |c|
243
- c.crop '100x100+0+0'
235
+ def test_convert_crop_and_repage
236
+ MojoMagick.convert(@test_image, @out_image) do |c|
237
+ c.crop "100x100+0+0"
244
238
  c.repage!
245
239
  end
246
- retval = MojoMagick.get_image_size(out_image)
240
+ retval = MojoMagick.get_image_size(@out_image)
247
241
  assert_equal 100, retval[:width]
248
242
  assert_equal 100, retval[:height]
243
+ end
249
244
 
250
- # Mogrify test, using file shortcut
251
- MojoMagick.mogrify(out_image) { |m| m.shave('25x25').repage! }
252
- retval = MojoMagick.get_image_size(out_image)
245
+ def test_mogrify_with_shave_and_repage
246
+ MojoMagick.convert do |c|
247
+ c.file @test_image
248
+ c.crop "100x100+0+0"
249
+ c.file @out_image
250
+ end
251
+ MojoMagick.mogrify(@out_image) { |m| m.shave("25x25").repage! }
252
+ retval = MojoMagick.get_image_size(@out_image)
253
253
  assert_equal 50, retval[:width]
254
254
  assert_equal 50, retval[:height]
255
+ end
255
256
 
256
- # RGB8 test
257
- bdata = 'aaaaaabbbbbbccc'
258
- out = 'out.png'
257
+ def test_convert_rgb
258
+ bdata = "aaaaaabbbbbbccc"
259
+ out = "out.png"
259
260
  MojoMagick.convert do |c|
260
- c.blob bdata, format: :rgb, depth: 8, size: '5x1'
261
+ c.blob bdata, format: :rgb, depth: 8, size: "5x1"
261
262
  c.file out
262
263
  end
263
264
  r = MojoMagick.get_image_size(out)
264
265
  assert r[:height] == 1
265
266
  assert r[:width] == 5
267
+ end
266
268
 
267
- bdata = '1111222233334444'
268
- out = 'out.png'
269
+ def test_convert_rgba
270
+ bdata = "1111222233334444"
271
+ out = "out.png"
269
272
  MojoMagick.convert do |c|
270
- c.blob bdata, format: :rgba, depth: 8, size: '4x1'
273
+ c.blob bdata, format: :rgba, depth: 8, size: "4x1"
271
274
  c.file out
272
275
  end
273
276
  r = MojoMagick.get_image_size(out)
274
277
  assert r[:height] == 1
275
278
  assert r[:width] == 4
276
279
  end
280
+
281
+ def test_available_fonts
282
+ fonts = MojoMagick.available_fonts
283
+ assert fonts.is_a? Array
284
+ assert fonts.length > 1
285
+ assert fonts.first.name
286
+ assert(fonts.first.name.is_a?(String))
287
+ end
277
288
  end