mojo_magick 0.5.3 → 0.6.0

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,7 +1,6 @@
1
- require File::join(File::dirname(__FILE__), 'test_helper')
2
-
3
- class MojoMagickOptBuilderTest < MiniTest::Unit::TestCase
1
+ require_relative "test_helper"
4
2
 
3
+ class MojoMagickOptBuilderTest < MiniTest::Test
5
4
  # These tests make the assumption that if we call #raw_command with the
6
5
  # correct strings, ImageMagick itself will operate correctly. We're only
7
6
  # verifying that the option builder produces the correct strings
@@ -11,36 +10,36 @@ class MojoMagickOptBuilderTest < MiniTest::Unit::TestCase
11
10
  end
12
11
 
13
12
  def test_annotate
14
- @builder.annotate 'blah'
15
- assert_equal '-annotate 0 blah', @builder.to_s
13
+ @builder.annotate "blah"
14
+ assert_equal %w[-annotate 0 blah], @builder.to_a
16
15
  end
17
16
 
18
17
  def test_annotate_with_escapeable_string
19
- @builder.annotate 'it\'s'
20
- assert_equal '-annotate 0 "it\'s"', @builder.to_s
18
+ @builder.annotate "it's"
19
+ assert_equal %w[-annotate 0 it's], @builder.to_a
21
20
  end
22
21
 
23
22
  def test_annotate_with_full_args
24
- @builder.annotate '5 it\'s'
25
- assert_equal '-annotate 5 "it\'s"', @builder.to_s
23
+ @builder.annotate "5 it's"
24
+ assert_equal %w[-annotate 5 it's], @builder.to_a
26
25
  end
27
26
 
28
27
  def test_option_builder_with_blocks
29
28
  # Passing in basic commands produces a string
30
29
  b = MojoMagick::OptBuilder.new
31
30
  b.image_block do
32
- b.background 'red'
31
+ b.background "red"
33
32
  end
34
33
  b.image_block do
35
- b.background 'blue'
34
+ b.background "blue"
36
35
  end
37
- assert_equal '\( -background red \) \( -background blue \)', b.to_s
36
+ assert_equal ['\(', "-background", "red", '\)', '\(', "-background", "blue", '\)'], b.to_a
38
37
  end
39
38
 
40
- def test_option_builder_with_hex_colors
39
+ def test_option_builder_with_hex_colors
41
40
  b = MojoMagick::OptBuilder.new
42
- b.background '#000000'
43
- assert_equal '-background "#000000"', b.to_s
41
+ b.background "#000000"
42
+ assert_equal %w[-background #000000], b.to_a
44
43
  end
45
44
 
46
45
  def test_option_builder
@@ -48,85 +47,83 @@ class MojoMagickOptBuilderTest < MiniTest::Unit::TestCase
48
47
  b = MojoMagick::OptBuilder.new
49
48
  b.strip
50
49
  b.repage
51
- assert_equal '-strip -repage', b.to_s
50
+ assert_equal "-strip -repage", b.to_s
52
51
 
53
52
  # Chaining commands works
54
53
  b = MojoMagick::OptBuilder.new.strip.repage
55
- assert_equal '-strip -repage', b.to_s
54
+ assert_equal "-strip -repage", b.to_s
56
55
 
57
56
  # Bang (!) indicates the plus version of commands
58
57
  b = MojoMagick::OptBuilder.new
59
58
  b.repage
60
59
  b.repage!
61
- assert_equal '-repage +repage', b.to_s
60
+ assert_equal "-repage +repage", b.to_s
62
61
 
63
62
  # Accepts raw data as-is
64
63
  b = MojoMagick::OptBuilder.new
65
64
  b.opt1
66
- b << 'a ! b !'
65
+ b << "a ! b !"
67
66
  b.opt2
68
- assert_equal '-opt1 a ! b ! -opt2', b.to_s
67
+ assert_equal "-opt1 a ! b ! -opt2", b.to_s
69
68
 
70
69
  # Treats an array of raw data as different arguments
71
70
  b = MojoMagick::OptBuilder.new
72
- b << ['leave this data','alone']
73
- assert_equal 'leave this data alone', b.to_s
71
+ b << ["leave this data", "alone"]
72
+ assert_equal "leave this data alone", b.to_s
74
73
 
75
74
  # String includes command arguments
76
75
  b = MojoMagick::OptBuilder.new
77
- b.extent '256x256+0+0'
78
- b.crop '64x64'
79
- assert_equal '-extent 256x256+0+0 -crop 64x64', b.to_s
76
+ b.extent "256x256+0+0"
77
+ b.crop "64x64"
78
+ assert_equal %w[-extent 256x256+0+0 -crop 64x64], b.to_a
80
79
 
81
80
  # Arguments are quoted (doublequote) if appropriate
82
81
  b = MojoMagick::OptBuilder.new
83
- b.comment 'white space'
84
- b.comment 'w&b'
85
- b.crop '6x6^'
86
- assert_equal '-comment "white space" -comment "w&b" -crop "6x6^"', b.to_s
82
+ b.comment "white space"
83
+ b.comment "w&b"
84
+ b.crop "6x6^"
85
+ assert_equal ["-comment", "white space", "-comment", "w&b", "-crop", "6x6^"], b.to_a
87
86
 
88
87
  # Existing doublequotes are escaped
89
88
  b = MojoMagick::OptBuilder.new
90
89
  b.comment 'Fred "Woot" Rook'
91
- assert_equal '-comment "Fred \"Woot\" Rook"', b.to_s
90
+ assert_equal ["-comment", "Fred \"Woot\" Rook"], b.to_a
92
91
 
93
92
  # Multi-argument commands should not be quoted together
94
93
  b = MojoMagick::OptBuilder.new
95
- b.set 'comment', 'the "best" comment'
96
- assert_equal '-set comment "the \"best\" comment"', b.to_s
94
+ b.set "comment", 'the "best" comment'
95
+ assert_equal ["-set", "comment", "the \"best\" comment"], b.to_a
97
96
 
98
97
  # File and files are helper methods
99
98
  b = MojoMagick::OptBuilder.new
100
- b.files 'source.jpg', 'source2.jpg'
99
+ b.files "source.jpg", "source2.jpg"
101
100
  b.append
102
- b.crop '64x64'
103
- b.file 'dest%d.jpg'
104
- assert_equal 'source.jpg source2.jpg -append -crop 64x64 dest%d.jpg', b.to_s
101
+ b.crop "64x64"
102
+ b.file "dest%d.jpg"
103
+ assert_equal %w[source.jpg source2.jpg -append -crop 64x64 dest%d.jpg], b.to_a
105
104
 
106
105
  # Files are quoted (doublequote) if appropriate
107
106
  b = MojoMagick::OptBuilder.new
108
- b.file 'probably on windows.jpg'
109
- assert_equal '"probably on windows.jpg"', b.to_s
107
+ b.file "probably on windows.jpg"
108
+ assert_equal ["probably on windows.jpg"], b.to_a
110
109
 
111
110
  # Blob is a shortcut for the #tempfile helper method
112
111
  b = MojoMagick::OptBuilder.new
113
- b.blob 'binary data'
112
+ b.blob "binary data"
114
113
  filename = b.to_s
115
- File.open(filename, 'rb') do |f|
116
- assert_equal f.read, 'binary data'
114
+ File.open(filename, "rb") do |f|
115
+ assert_equal "binary data", f.read
117
116
  end
118
117
 
119
- #label for text should use 'label:"the string"' if specified
120
- [[ 'mylabel', 'mylabel' ],
121
- [ 'my " label', '"my \" label"' ],
122
- [ 'Rock it, cuz i said so!', '"Rock it, cuz i said so!"'],
123
- [ "it's like this", '"it\'s like this"'],
124
- [ '#$%^&*', '"#$%^&*"']].each do |labels|
125
-
118
+ # label for text should use 'label:"the string"' if specified
119
+ [%w[mylabel mylabel],
120
+ ['my " label', '"my \" label"'],
121
+ ["Rock it, cuz i said so!", '"Rock it, cuz i said so!"'],
122
+ ["it's like this", '"it\'s like this"'],
123
+ ["\#$%^&*", '"#$%^&*"']].each do |labels|
126
124
  b = MojoMagick::OptBuilder.new
127
125
  b.label labels[0]
128
126
  assert_equal "label:#{labels[1]}", b.to_s
129
127
  end
130
-
131
128
  end
132
129
  end
@@ -1,30 +1,29 @@
1
- require File::join(File::dirname(__FILE__), 'test_helper')
1
+ require_relative "test_helper"
2
2
 
3
- IDENTIFY_FONT_RESPONSE =<<EOF
3
+ IDENTIFY_FONT_RESPONSE = <<~EOFONT
4
4
 
5
- Font: Zapf-Dingbats
6
- family: Zapf Dingbats
7
- style: Normal
8
- stretch: Normal
9
- weight: 400
10
- glyphs: /System/Library/Fonts/ZapfDingbats.ttf
5
+ Font: Zapf-Dingbats
6
+ family: Zapf Dingbats
7
+ style: Normal
8
+ stretch: Normal
9
+ weight: 400
10
+ glyphs: /System/Library/Fonts/ZapfDingbats.ttf
11
11
 
12
- Font: Zapfino
13
- family: Zapfino
14
- style: Italic
15
- stretch: Normal
16
- weight: 400
17
- glyphs: /Library/Fonts/Zapfino.ttf
12
+ Font: Zapfino
13
+ family: Zapfino
14
+ style: Italic
15
+ stretch: Normal
16
+ weight: 400
17
+ glyphs: /Library/Fonts/Zapfino.ttf
18
18
 
19
19
 
20
- EOF
21
-
22
- class ParserTest < MiniTest::Unit::TestCase
20
+ EOFONT
23
21
 
22
+ class ParserTest < MiniTest::Test
24
23
  def test_parse_fonts
25
24
  parser = MojoMagick::Util::Parser.new
26
25
  parsed_fonts = parser.parse_fonts(IDENTIFY_FONT_RESPONSE)
27
26
  assert_equal parsed_fonts.length, 2
28
- assert_equal parsed_fonts[1].style, 'Italic'
27
+ assert_equal parsed_fonts[1].style, "Italic"
29
28
  end
30
29
  end
@@ -1,6 +1,8 @@
1
- require 'test/unit'
2
- require File::expand_path(File::join(File::dirname(__FILE__), '..', 'init'))
3
- require 'fileutils'
4
- require 'tempfile'
5
- require 'rspec/expectations'
1
+ require "simplecov"
2
+ SimpleCov.start
6
3
 
4
+ require "minitest/autorun"
5
+ require File.expand_path(File.join(File.dirname(__FILE__), "..", "init"))
6
+ require "fileutils"
7
+ require "tempfile"
8
+ require "rspec/expectations"
metadata CHANGED
@@ -1,69 +1,131 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mojo_magick
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.3
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Steve Midgley
8
8
  - Elliot Nelson
9
9
  - Jon Rogers
10
- autorequire:
10
+ autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2013-11-27 00:00:00.000000000 Z
13
+ date: 2021-01-22 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
- name: rake
16
+ name: bundler
17
+ requirement: !ruby/object:Gem::Requirement
18
+ requirements:
19
+ - - ">="
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ version: '0'
29
+ - !ruby/object:Gem::Dependency
30
+ name: bundle-audit
17
31
  requirement: !ruby/object:Gem::Requirement
18
32
  requirements:
19
- - - '>='
33
+ - - ">="
20
34
  - !ruby/object:Gem::Version
21
35
  version: '0'
22
36
  type: :development
23
37
  prerelease: false
24
38
  version_requirements: !ruby/object:Gem::Requirement
25
39
  requirements:
26
- - - '>='
40
+ - - ">="
27
41
  - !ruby/object:Gem::Version
28
42
  version: '0'
29
43
  - !ruby/object:Gem::Dependency
30
- name: simplecov
44
+ name: minitest
45
+ requirement: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: '0'
50
+ type: :development
51
+ prerelease: false
52
+ version_requirements: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ version: '0'
57
+ - !ruby/object:Gem::Dependency
58
+ name: rake
31
59
  requirement: !ruby/object:Gem::Requirement
32
60
  requirements:
33
- - - '>='
61
+ - - ">="
34
62
  - !ruby/object:Gem::Version
35
63
  version: '0'
36
64
  type: :development
37
65
  prerelease: false
38
66
  version_requirements: !ruby/object:Gem::Requirement
39
67
  requirements:
40
- - - '>='
68
+ - - ">="
41
69
  - !ruby/object:Gem::Version
42
70
  version: '0'
43
71
  - !ruby/object:Gem::Dependency
44
72
  name: rspec-expectations
45
73
  requirement: !ruby/object:Gem::Requirement
46
74
  requirements:
47
- - - '>='
75
+ - - ">="
48
76
  - !ruby/object:Gem::Version
49
77
  version: '0'
50
78
  type: :development
51
79
  prerelease: false
52
80
  version_requirements: !ruby/object:Gem::Requirement
53
81
  requirements:
54
- - - '>='
82
+ - - ">="
83
+ - !ruby/object:Gem::Version
84
+ version: '0'
85
+ - !ruby/object:Gem::Dependency
86
+ name: rubocop
87
+ requirement: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - ">="
90
+ - !ruby/object:Gem::Version
91
+ version: '0'
92
+ type: :development
93
+ prerelease: false
94
+ version_requirements: !ruby/object:Gem::Requirement
95
+ requirements:
96
+ - - ">="
97
+ - !ruby/object:Gem::Version
98
+ version: '0'
99
+ - !ruby/object:Gem::Dependency
100
+ name: rubocop-performance
101
+ requirement: !ruby/object:Gem::Requirement
102
+ requirements:
103
+ - - ">="
104
+ - !ruby/object:Gem::Version
105
+ version: '0'
106
+ type: :development
107
+ prerelease: false
108
+ version_requirements: !ruby/object:Gem::Requirement
109
+ requirements:
110
+ - - ">="
55
111
  - !ruby/object:Gem::Version
56
112
  version: '0'
57
113
  description: Simple Ruby stateless module interface to imagemagick.
58
114
  email:
59
- - public@misuse.org
115
+ - science@misuse.org
60
116
  - jon@rcode5.com
61
117
  executables: []
62
118
  extensions: []
63
119
  extra_rdoc_files: []
64
120
  files:
65
- - .gitignore
66
- - .ruby-version
121
+ - ".circleci/config.yml"
122
+ - ".github/dependabot.yml"
123
+ - ".gitignore"
124
+ - ".rubocop-common.yml"
125
+ - ".rubocop-performance.yml"
126
+ - ".rubocop-rspec.yml"
127
+ - ".rubocop.yml"
128
+ - ".ruby-version"
67
129
  - Gemfile
68
130
  - Gemfile.lock
69
131
  - LICENSE.txt
@@ -73,10 +135,10 @@ files:
73
135
  - examples/composite.rb
74
136
  - init.rb
75
137
  - lib/image_magick/fonts.rb
76
- - lib/image_magick/resource_limits.rb
77
- - lib/image_resources.rb
78
138
  - lib/initializers/hash.rb
79
139
  - lib/mojo_magick.rb
140
+ - lib/mojo_magick/command_status.rb
141
+ - lib/mojo_magick/errors.rb
80
142
  - lib/mojo_magick/font.rb
81
143
  - lib/mojo_magick/opt_builder.rb
82
144
  - lib/mojo_magick/util/parser.rb
@@ -84,13 +146,13 @@ files:
84
146
  - mojo_magick.gemspec
85
147
  - test/fixtures/5742.jpg
86
148
  - test/fixtures/not_an_image.jpg
149
+ - test/fixtures/roll with it.jpg
87
150
  - test/fixtures/zero_byte_image.jpg
88
151
  - test/font_test.rb
89
152
  - test/fonts_test.rb
90
153
  - test/mojo_magick_test.rb
91
154
  - test/opt_builder_test.rb
92
155
  - test/parser_test.rb
93
- - test/resource_limits_test.rb
94
156
  - test/test_helper.rb
95
157
  homepage: http://github.com/rcode5/mojo_magick
96
158
  licenses:
@@ -110,28 +172,28 @@ require_paths:
110
172
  - lib
111
173
  required_ruby_version: !ruby/object:Gem::Requirement
112
174
  requirements:
113
- - - '>='
175
+ - - ">="
114
176
  - !ruby/object:Gem::Version
115
- version: '0'
177
+ version: 2.6.0
116
178
  required_rubygems_version: !ruby/object:Gem::Requirement
117
179
  requirements:
118
- - - '>='
180
+ - - ">="
119
181
  - !ruby/object:Gem::Version
120
182
  version: '0'
121
183
  requirements: []
122
- rubyforge_project: mojo_magick
123
- rubygems_version: 2.0.14
124
- signing_key:
184
+ rubygems_version: 3.0.3
185
+ signing_key:
125
186
  specification_version: 4
126
- summary: mojo_magick-0.5.3
187
+ summary: mojo_magick-0.6.0
127
188
  test_files:
128
189
  - test/fixtures/5742.jpg
129
190
  - test/fixtures/not_an_image.jpg
191
+ - test/fixtures/roll with it.jpg
130
192
  - test/fixtures/zero_byte_image.jpg
131
193
  - test/font_test.rb
132
194
  - test/fonts_test.rb
133
195
  - test/mojo_magick_test.rb
134
196
  - test/opt_builder_test.rb
135
197
  - test/parser_test.rb
136
- - test/resource_limits_test.rb
137
198
  - test/test_helper.rb
199
+ ...
@@ -1,94 +0,0 @@
1
- # This module provides some mix-in methods to permit resource limitation commands in MojoMagick
2
- module ImageMagick
3
- module ResourceLimits
4
- @@resource_limits = {}
5
-
6
- # controls limits on memory and other resources for imagemagick.
7
- # possible values for type can include:
8
- # Area, Disk, File, Map, or Memory
9
- # value is byte size for everything but Disk, where it's number of files
10
- # type can be string or symbol.
11
- # Just limiting Memory will not solve problems with imagemagick going out of
12
- # control with resource consumption on certain bad files. You have to set disk,
13
- # area and map limits too. Read up on imagemagick website for more.
14
- # Different options have different units
15
- # DISK: N GB
16
- # AREA, MAP, MEMORY: N MB
17
- # FILE: N num file handles
18
- # Examples:
19
- # # set disk to 5 gigabytes limit
20
- # MiniMagick::Image::set_limit(:disk => 5)
21
- # # set memory to 32mb, map to 64mb and disk to 0
22
- # MiniMagick::Image::set_limit(:memory => 32, 'map' => 64, 'disk' => 0)
23
- def set_limits(options)
24
- mem_fix = 1
25
- options.each do |resource, value|
26
- @@resource_limits[resource.to_s.downcase.to_sym] = value.to_s
27
- end
28
- end
29
-
30
- # remove a limit
31
- def remove_limits(*options)
32
- mem_fix = 1
33
- @@resource_limits.delete_if do |resource, value|
34
- idx = options.index(resource)
35
- resource == options.values_at(idx)[0].to_s.downcase.to_sym if idx
36
- end
37
- end
38
-
39
- # remove limits from resources
40
- def unset_limits(options = {})
41
- mem_fix = 1
42
- @@resource_limits = {}
43
- if options[:unset_env]
44
- ENV["MAGICK_AREA_LIMIT"]=nil
45
- ENV["MAGICK_MAP_LIMIT"]=nil
46
- ENV["MAGICK_MEMORY_LIMIT"]=nil
47
- ENV["MAGICK_DISK_LIMIT"]=nil
48
- end
49
- end
50
-
51
- # returns the default limits that imagemagick is using, when run with no "-limit" parameters
52
- # options:
53
- # :show_actual_values => true (default false) - will return integers instead of readable values
54
- def get_default_limits(options = {})
55
- mem_fix = 1
56
- parse_limits(options.merge(:get_current_limits => false))
57
- end
58
-
59
- # returns the limits that imagemagick is running based on any "set_limits" calls
60
- def get_current_limits(options = {})
61
- mem_fix = 1
62
- parse_limits(options.merge(:get_current_limits => true))
63
- end
64
-
65
- alias :get_limits :get_current_limits
66
-
67
- def parse_limits(options)
68
- show_actual_values = options[:show_actual_values]
69
- if options[:get_current_limits]
70
- raw_limits = self.raw_command('identify', '-list resource')
71
- else
72
- # we run a raw shell command here to obtain limits without applying command line limit params
73
- raw_limits = `identify -list resource`
74
- end
75
- actual_values, readable_values = parser.parse_limits(raw_limits)
76
- show_actual_values ? actual_values : readable_values
77
- end # parse_limits
78
-
79
- # returns a string suitable for passing as a set of imagemagick params
80
- # that contains all the limit constraints
81
- def get_limits_as_params
82
- retval = ''
83
- # we upcase the value here for newer versions of ImageMagick (>=6.8.x)
84
- @@resource_limits.each do |type, value|
85
- retval += " -limit #{type.to_s} #{value.upcase} "
86
- end
87
- retval
88
- end
89
-
90
- def parser
91
- @parser ||= MojoMagick::Util::Parser.new
92
- end
93
- end
94
- end