photile 0.1.9 → 0.1.10
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.
- data/lib/photile.rb +1 -1
- data/lib/photile/cli.rb +5 -0
- data/photile.gemspec +1 -0
- data/test/test_cli.rb +66 -0
- data/test/test_consts.rb +17 -0
- metadata +20 -2
data/lib/photile.rb
CHANGED
data/lib/photile/cli.rb
CHANGED
@@ -23,6 +23,7 @@ class Photile::Cli
|
|
23
23
|
|
24
24
|
opts.on('-t', '--tile WIDTHxHEIGHT', Regexp.new(/\d+x\d+/), 'Tile to the given dimensions') do |dimensions|
|
25
25
|
dim = dimensions.split('x')
|
26
|
+
validate_2d_dimensions dim
|
26
27
|
options << {:tile => {:width => dim.first.to_i, :height => dim.last.to_i}}
|
27
28
|
end
|
28
29
|
|
@@ -68,6 +69,10 @@ class Photile::Cli
|
|
68
69
|
raise "Invalid percentage: #{metric} #{value}%. Acceptable range: 0-100" if value < 0 || value > 100
|
69
70
|
end
|
70
71
|
|
72
|
+
def self.validate_2d_dimensions(dims)
|
73
|
+
raise "Invalid dimensions: #{dims.first}x#{dims.last}. Acceptable dimensions are > 0" if dims.first <= 0 || dims.last <= 0
|
74
|
+
end
|
75
|
+
|
71
76
|
def self.validate_file_exist(file)
|
72
77
|
raise "File [#{file}] not found" if !FileTest.exists? file
|
73
78
|
end
|
data/photile.gemspec
CHANGED
@@ -15,6 +15,7 @@ Gem::Specification.new do |s|
|
|
15
15
|
s.license = 'MIT'
|
16
16
|
s.homepage = 'https://github.com/nitindhar7/photile'
|
17
17
|
s.add_development_dependency 'rake', ['>= 0.8.7']
|
18
|
+
s.add_development_dependency 'uuid', ['>= 2.3.6']
|
18
19
|
s.required_ruby_version = '>= 1.8.7'
|
19
20
|
s.requirements << 'imagemagick' << 'imagemagick-common' << 'libjpeg-turbo-progs'
|
20
21
|
end
|
data/test/test_cli.rb
ADDED
@@ -0,0 +1,66 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'photile'
|
3
|
+
require 'uuid'
|
4
|
+
|
5
|
+
class CliTest < Test::Unit::TestCase
|
6
|
+
|
7
|
+
def test_validate_percent_value
|
8
|
+
# percentage too high
|
9
|
+
exception = assert_raise RuntimeError do
|
10
|
+
Photile::Cli.validate_percent_value('metricX', 800)
|
11
|
+
end
|
12
|
+
assert_equal 'Invalid percentage: metricX 800%. Acceptable range: 0-100', exception.message
|
13
|
+
|
14
|
+
# percentage too low
|
15
|
+
exception = assert_raise RuntimeError do
|
16
|
+
Photile::Cli.validate_percent_value('metricX', -100)
|
17
|
+
end
|
18
|
+
assert_equal 'Invalid percentage: metricX -100%. Acceptable range: 0-100', exception.message
|
19
|
+
|
20
|
+
# percentage within acceptable range
|
21
|
+
Photile::Cli.validate_percent_value('metricX', 50)
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_validate_2d_dimensions
|
25
|
+
# valid dimensions
|
26
|
+
Photile::Cli.validate_2d_dimensions([1,1])
|
27
|
+
Photile::Cli.validate_2d_dimensions([100,100])
|
28
|
+
assert true
|
29
|
+
|
30
|
+
# dimensions are negative
|
31
|
+
exception = assert_raise RuntimeError do
|
32
|
+
Photile::Cli.validate_2d_dimensions([-1,-1])
|
33
|
+
end
|
34
|
+
assert_equal 'Invalid dimensions: -1x-1. Acceptable dimensions are > 0', exception.message
|
35
|
+
|
36
|
+
# dimensions are 0
|
37
|
+
exception = assert_raise RuntimeError do
|
38
|
+
Photile::Cli.validate_2d_dimensions([0,0])
|
39
|
+
end
|
40
|
+
assert_equal 'Invalid dimensions: 0x0. Acceptable dimensions are > 0', exception.message
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_validate_file_exist
|
44
|
+
# non existent files
|
45
|
+
exception = assert_raise RuntimeError do
|
46
|
+
Photile::Cli.validate_file_exist("photile-#{UUID.new.generate}.tmp")
|
47
|
+
end
|
48
|
+
|
49
|
+
# create a new file, validate it and clean it
|
50
|
+
filename = "photile-#{UUID.new.generate}.tmp"
|
51
|
+
File.new(filename, "w")
|
52
|
+
Photile::Cli.validate_file_exist(filename)
|
53
|
+
File.delete(filename)
|
54
|
+
assert true
|
55
|
+
end
|
56
|
+
|
57
|
+
def test_cli_tile_regexp
|
58
|
+
# valid regexp's
|
59
|
+
assert !Regexp.new(/\d+x\d+/).match("1x1").nil?
|
60
|
+
assert !Regexp.new(/\d+x\d+/).match("100x100").nil?
|
61
|
+
|
62
|
+
# invalid regexp structure
|
63
|
+
assert Regexp.new(/\d+x\d+/).match("1y1").nil?
|
64
|
+
end
|
65
|
+
|
66
|
+
end
|
data/test/test_consts.rb
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'photile'
|
3
|
+
|
4
|
+
class ConstsTest < Test::Unit::TestCase
|
5
|
+
|
6
|
+
def test_version
|
7
|
+
assert !Regexp.new(/\d+\.\d+\.\d+/).match(Photile::VERSION).nil?
|
8
|
+
end
|
9
|
+
|
10
|
+
def test_requirements
|
11
|
+
assert_equal "photile requires the following libraries " +
|
12
|
+
"to be installed: imagemagick, imagemagick-common " +
|
13
|
+
"and libjpeg-turbo-progs",
|
14
|
+
Photile::REQUIREMENTS
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: photile
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.10
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-01-
|
12
|
+
date: 2013-01-20 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|
@@ -27,6 +27,22 @@ dependencies:
|
|
27
27
|
- - ! '>='
|
28
28
|
- !ruby/object:Gem::Version
|
29
29
|
version: 0.8.7
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: uuid
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: 2.3.6
|
38
|
+
type: :development
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 2.3.6
|
30
46
|
description: Photile is just a layer on top of Imagemagick and Jpegtran to make certain
|
31
47
|
image processing tasks dead simple.
|
32
48
|
email: nitindhar7@yahoo.com
|
@@ -43,6 +59,8 @@ files:
|
|
43
59
|
- lib/photile.rb
|
44
60
|
- lib/photile/cli.rb
|
45
61
|
- photile.gemspec
|
62
|
+
- test/test_cli.rb
|
63
|
+
- test/test_consts.rb
|
46
64
|
- test/test_requirements.rb
|
47
65
|
homepage: https://github.com/nitindhar7/photile
|
48
66
|
licenses:
|