opt_parse_validator 0.0.6 → 0.0.7
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.
- checksums.yaml +4 -4
- data/README.md +5 -2
- data/lib/opt_parse_validator/opts/array.rb +2 -3
- data/lib/opt_parse_validator/opts/base.rb +21 -3
- data/lib/opt_parse_validator/opts/choice.rb +1 -2
- data/lib/opt_parse_validator/opts/integer_range.rb +21 -0
- data/lib/opt_parse_validator/opts/multi_choices.rb +52 -0
- data/lib/opt_parse_validator/opts.rb +1 -1
- data/lib/opt_parse_validator/version.rb +1 -1
- data/lib/opt_parse_validator.rb +1 -1
- data/opt_parse_validator.gemspec +2 -2
- data/spec/lib/opt_parse_validator/opts/array_spec.rb +17 -3
- data/spec/lib/opt_parse_validator/opts/base_spec.rb +31 -11
- data/spec/lib/opt_parse_validator/opts/integer_range_spec.rb +54 -0
- data/spec/lib/opt_parse_validator/opts/multi_choices_spec.rb +79 -0
- metadata +12 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9f71cf9bbecec6b8c33d14c3cab01c0af1112735
|
4
|
+
data.tar.gz: d033f1ef4649cd628d415657c2375d014616a3b2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 63b1f0f830f821e9639b5a6c239c20a472ba9fef16850fb7c37eabf54d589ca463bd30f087a7da906d9ee458a12a23f7162976a0d033a32c06aaec9531f9645a
|
7
|
+
data.tar.gz: 66311acd02e0b17a87d653e5b12609d94a5138e7a1a915e63a401c23004e9c00499c236cf376bf33603f3135f15c38f4e40af229dcb0a4552f1131d3bed98aff
|
data/README.md
CHANGED
@@ -26,6 +26,11 @@ OptParseValidator
|
|
26
26
|
- :readable
|
27
27
|
- :writable
|
28
28
|
- Integer
|
29
|
+
- IntegerRange
|
30
|
+
- separator (default: '-')
|
31
|
+
- MultiChoices
|
32
|
+
- choices (mandatory)
|
33
|
+
- separator (default: ',')
|
29
34
|
- Positive Integer
|
30
35
|
- Path
|
31
36
|
- :file
|
@@ -37,8 +42,6 @@ OptParseValidator
|
|
37
42
|
- Proxy
|
38
43
|
- :protocols
|
39
44
|
- :default_protocol
|
40
|
-
- Scope
|
41
|
-
- separator (default: ',')
|
42
45
|
- String
|
43
46
|
- URI
|
44
47
|
- :protocols
|
@@ -5,8 +5,7 @@ module OptParseValidator
|
|
5
5
|
#
|
6
6
|
# @return [ Array ]
|
7
7
|
def validate(value)
|
8
|
-
super(value)
|
9
|
-
value.split(separator)
|
8
|
+
super(value).split(separator)
|
10
9
|
end
|
11
10
|
|
12
11
|
# @return [ String ] The separator used to split the string into an array
|
@@ -15,7 +14,7 @@ module OptParseValidator
|
|
15
14
|
end
|
16
15
|
|
17
16
|
# See OptBase#normalize
|
18
|
-
# @param [ Array ]
|
17
|
+
# @param [ Array ] values
|
19
18
|
def normalize(values)
|
20
19
|
values.each_with_index do |value, index|
|
21
20
|
values[index] = super(value)
|
@@ -9,7 +9,7 @@ module OptParseValidator
|
|
9
9
|
# @param [ Hash ] attrs
|
10
10
|
# @option attrs [ Boolean ] :required
|
11
11
|
# @option attrs [ Mixed ] :default The default value to use if the option is not supplied
|
12
|
-
# @option attrs [
|
12
|
+
# @option attrs [ Mixed ] :value_if_empty The value to use if no arguments have been supplied
|
13
13
|
# @option attrs [ Array<Symbol> ] :normalize See #normalize
|
14
14
|
#
|
15
15
|
# @note The :default and :normalize 'logics' are done in OptParseValidator::OptParser#add_option
|
@@ -20,12 +20,30 @@ module OptParseValidator
|
|
20
20
|
|
21
21
|
# @return [ Boolean ]
|
22
22
|
def required?
|
23
|
-
@required
|
23
|
+
@required ||= attrs[:required]
|
24
|
+
end
|
25
|
+
|
26
|
+
# @return [ Mixed ]
|
27
|
+
def default
|
28
|
+
attrs[:default]
|
29
|
+
end
|
30
|
+
|
31
|
+
# @return [ Array<Mixed> ]
|
32
|
+
def choices
|
33
|
+
attrs[:choices]
|
34
|
+
end
|
35
|
+
|
36
|
+
# @return [ Mixed ]
|
37
|
+
def value_if_empty
|
38
|
+
attrs[:value_if_empty]
|
24
39
|
end
|
25
40
|
|
26
41
|
# @param [ String ] value
|
27
42
|
def validate(value)
|
28
|
-
|
43
|
+
if value.nil? || value.to_s.empty?
|
44
|
+
fail 'Empty option value supplied' if value_if_empty.nil?
|
45
|
+
return value_if_empty
|
46
|
+
end
|
29
47
|
value
|
30
48
|
end
|
31
49
|
|
@@ -16,8 +16,7 @@ module OptParseValidator
|
|
16
16
|
# If :case_sensitive if false (or nil), the downcased value of the choice
|
17
17
|
# will be returned
|
18
18
|
def validate(value)
|
19
|
-
value
|
20
|
-
choices = attrs[:choices]
|
19
|
+
value = value.to_s
|
21
20
|
|
22
21
|
unless attrs[:case_sensitive]
|
23
22
|
value.downcase!
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module OptParseValidator
|
2
|
+
# Implementation of the Integer Range Option
|
3
|
+
class OptIntegerRange < OptBase
|
4
|
+
# @param [ String ] value
|
5
|
+
#
|
6
|
+
# @return [ Range ]
|
7
|
+
def validate(value)
|
8
|
+
a = super(value).split(separator)
|
9
|
+
|
10
|
+
fail "Incorrect number of ranges found: #{a.size}, should be 2" unless a.size == 2
|
11
|
+
fail 'Argument is not a valid integer range' unless a.first.to_i.to_s == a.first && a.last.to_i.to_s == a.last
|
12
|
+
|
13
|
+
(a.first.to_i..a.last.to_i)
|
14
|
+
end
|
15
|
+
|
16
|
+
# @return [ String ]
|
17
|
+
def separator
|
18
|
+
attrs[:separator] || '-'
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
module OptParseValidator
|
2
|
+
# Implementation of the MultiChoices Option
|
3
|
+
class OptMultiChoices < OptArray
|
4
|
+
# @param [ Array ] option See OptBase#new
|
5
|
+
# @param [ Hash ] attrs
|
6
|
+
# @option attrs [ Hash ] :choices
|
7
|
+
# @options attrs [ String ] :separator See OptArray#new
|
8
|
+
def initialize(option, attrs = {})
|
9
|
+
fail 'The :choices attribute is mandatory' unless attrs.key?(:choices)
|
10
|
+
fail 'The :choices attribute must be a hash' unless attrs[:choices].is_a?(Hash)
|
11
|
+
|
12
|
+
super(option, attrs)
|
13
|
+
end
|
14
|
+
|
15
|
+
# @param [ String ] value
|
16
|
+
#
|
17
|
+
# @return [ Hash ]
|
18
|
+
def validate(value)
|
19
|
+
results = {}
|
20
|
+
|
21
|
+
super(value).each do |item|
|
22
|
+
opt = choices[item.to_sym]
|
23
|
+
|
24
|
+
if opt
|
25
|
+
opt_value = opt.value_if_empty.nil? ? true : opt.value_if_empty
|
26
|
+
else
|
27
|
+
opt, opt_value = value_from_pattern(item)
|
28
|
+
end
|
29
|
+
|
30
|
+
results[opt.to_sym] = opt.normalize(opt.validate(opt_value))
|
31
|
+
end
|
32
|
+
|
33
|
+
results
|
34
|
+
end
|
35
|
+
|
36
|
+
# @return [ Array ]
|
37
|
+
def value_from_pattern(item)
|
38
|
+
choices.each do |key, opt|
|
39
|
+
next unless item.match(/\A#{key.to_s}(.*)\z/)
|
40
|
+
|
41
|
+
return [opt, Regexp.last_match[1]]
|
42
|
+
end
|
43
|
+
|
44
|
+
fail "Unknown choice: #{item}"
|
45
|
+
end
|
46
|
+
|
47
|
+
# No normalization
|
48
|
+
def normalize(value)
|
49
|
+
value
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
data/lib/opt_parse_validator.rb
CHANGED
@@ -40,7 +40,7 @@ module OptParseValidator
|
|
40
40
|
@opts << opt
|
41
41
|
@symbols_used << opt.to_sym
|
42
42
|
# Set the default option value if it exists
|
43
|
-
@results[opt.to_sym] = opt.
|
43
|
+
@results[opt.to_sym] = opt.default unless opt.default.nil?
|
44
44
|
|
45
45
|
on(*opt.option) do |arg|
|
46
46
|
begin
|
data/opt_parse_validator.gemspec
CHANGED
@@ -26,7 +26,7 @@ Gem::Specification.new do |s|
|
|
26
26
|
s.add_development_dependency 'rake', '~> 10.4'
|
27
27
|
s.add_development_dependency 'rspec', '~> 3.2'
|
28
28
|
s.add_development_dependency 'rspec-its', '~> 1.1'
|
29
|
-
s.add_development_dependency 'bundler', '~> 1.
|
30
|
-
s.add_development_dependency 'rubocop', '~> 0.
|
29
|
+
s.add_development_dependency 'bundler', '~> 1.6'
|
30
|
+
s.add_development_dependency 'rubocop', '~> 0.29'
|
31
31
|
s.add_development_dependency 'simplecov', '~> 0.9'
|
32
32
|
end
|
@@ -5,9 +5,23 @@ describe OptParseValidator::OptArray do
|
|
5
5
|
let(:attrs) { {} }
|
6
6
|
|
7
7
|
describe '#validate' do
|
8
|
-
context 'when an empty value is given' do
|
9
|
-
|
10
|
-
|
8
|
+
context 'when an empty or nil value is given' do
|
9
|
+
context 'when no value_if_empty attribute' do
|
10
|
+
it 'raises an error' do
|
11
|
+
[nil, ''].each do |value|
|
12
|
+
expect { opt.validate(value) }.to raise_error('Empty option value supplied')
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
context 'when value_if_empty attribute' do
|
18
|
+
let(:attrs) { super().merge(value_if_empty: 'a,b') }
|
19
|
+
|
20
|
+
it 'returns the expected array' do
|
21
|
+
[nil, ''].each do |value|
|
22
|
+
expect(opt.validate(value)).to eql %w(a b)
|
23
|
+
end
|
24
|
+
end
|
11
25
|
end
|
12
26
|
end
|
13
27
|
|
@@ -6,7 +6,7 @@ describe OptParseValidator::OptBase do
|
|
6
6
|
let(:attrs) { {} }
|
7
7
|
|
8
8
|
describe '#to_long' do
|
9
|
-
after { expect(described_class.new(@option).to_long).to
|
9
|
+
after { expect(described_class.new(@option).to_long).to eql @expected }
|
10
10
|
|
11
11
|
context 'when not found' do
|
12
12
|
it 'returns nil' do
|
@@ -28,7 +28,7 @@ describe OptParseValidator::OptBase do
|
|
28
28
|
if @exception
|
29
29
|
expect { described_class.new(@option).to_sym }.to raise_error(@exception)
|
30
30
|
else
|
31
|
-
expect(described_class.new(@option).to_sym).to
|
31
|
+
expect(described_class.new(@option).to_sym).to eql(@expected)
|
32
32
|
end
|
33
33
|
end
|
34
34
|
|
@@ -112,7 +112,7 @@ describe OptParseValidator::OptBase do
|
|
112
112
|
end
|
113
113
|
|
114
114
|
describe '#normalize' do
|
115
|
-
after { expect(opt.normalize(@value)).to
|
115
|
+
after { expect(opt.normalize(@value)).to eql @expected }
|
116
116
|
|
117
117
|
context 'when no :normalize attribute' do
|
118
118
|
it 'returns the value' do
|
@@ -150,18 +150,38 @@ describe OptParseValidator::OptBase do
|
|
150
150
|
end
|
151
151
|
|
152
152
|
describe '#validate' do
|
153
|
-
context 'when
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
.
|
153
|
+
context 'when no value_if_empty attribute' do
|
154
|
+
context 'when an empty or nil value' do
|
155
|
+
it 'raises an error' do
|
156
|
+
[nil, ''].each do |value|
|
157
|
+
expect { opt.validate(value) }
|
158
|
+
.to raise_error('Empty option value supplied')
|
159
|
+
end
|
160
|
+
end
|
161
|
+
end
|
162
|
+
|
163
|
+
context 'when a valid value' do
|
164
|
+
it 'returns it' do
|
165
|
+
expect(opt.validate('testing')).to eql 'testing'
|
158
166
|
end
|
159
167
|
end
|
160
168
|
end
|
161
169
|
|
162
|
-
context 'when
|
163
|
-
|
164
|
-
|
170
|
+
context 'when value_if_empty attribute' do
|
171
|
+
let(:attrs) { super().merge(value_if_empty: 'it works') }
|
172
|
+
|
173
|
+
context 'when nil or empty value' do
|
174
|
+
it 'returns the value from the value_if_empty attribute' do
|
175
|
+
[nil, ''].each do |value|
|
176
|
+
expect(opt.validate(value)).to eql attrs[:value_if_empty]
|
177
|
+
end
|
178
|
+
end
|
179
|
+
end
|
180
|
+
|
181
|
+
context 'when a valid value' do
|
182
|
+
it 'returns it' do
|
183
|
+
expect(opt.validate('tt')).to eql 'tt'
|
184
|
+
end
|
165
185
|
end
|
166
186
|
end
|
167
187
|
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe OptParseValidator::OptIntegerRange do
|
4
|
+
subject(:opt) { described_class.new(['--range RANGE'], attrs) }
|
5
|
+
let(:attrs) { {} }
|
6
|
+
|
7
|
+
describe '#validate' do
|
8
|
+
context 'when incorrect number of ranges given' do
|
9
|
+
it 'raises an error' do
|
10
|
+
expect { opt.validate('1-2-3') }.to raise_error('Incorrect number of ranges found: 3, should be 2')
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
context 'when not an integer range' do
|
15
|
+
it 'raises an error' do
|
16
|
+
expect { opt.validate('a-e') }.to raise_error('Argument is not a valid integer range')
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
context 'when a valid range' do
|
21
|
+
it 'returns the range' do
|
22
|
+
expect(opt.validate('1-5')).to eql((1..5))
|
23
|
+
end
|
24
|
+
|
25
|
+
context 'when another separator' do
|
26
|
+
let(:attrs) { super().merge(separator: ':') }
|
27
|
+
|
28
|
+
it 'returns the range' do
|
29
|
+
expect(opt.validate('0:10')).to eql((0..10))
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
context 'when nil or "" supplied' do
|
35
|
+
context 'when no value_if_empty attribute' do
|
36
|
+
it 'raises an error' do
|
37
|
+
[nil, ''].each do |value|
|
38
|
+
expect { opt.validate(value) }.to raise_error 'Empty option value supplied'
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
context 'when value_if_empty attribute' do
|
44
|
+
let(:attrs) { super().merge(value_if_empty: '0-2') }
|
45
|
+
|
46
|
+
it 'returns the value_if_empty value' do
|
47
|
+
[nil, ''].each do |value|
|
48
|
+
expect(opt.validate(value)).to eql((0..2))
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,79 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe OptParseValidator::OptMultiChoices do
|
4
|
+
subject(:opt) { described_class.new(['--enumerate [CHOICES]'], attrs) }
|
5
|
+
let(:attrs) do
|
6
|
+
{
|
7
|
+
choices: {
|
8
|
+
vp: OptParseValidator::OptBoolean.new(['--vulenrable-plugins']),
|
9
|
+
u: OptParseValidator::OptIntegerRange.new(['--users'], value_if_empty: '1-10')
|
10
|
+
}
|
11
|
+
}
|
12
|
+
end
|
13
|
+
|
14
|
+
describe '#new' do
|
15
|
+
context 'when no choices attribute' do
|
16
|
+
let(:attrs) { {} }
|
17
|
+
|
18
|
+
it 'raises an error' do
|
19
|
+
expect { opt }.to raise_error 'The :choices attribute is mandatory'
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
context 'when choices attribute' do
|
24
|
+
context 'when not a hash' do
|
25
|
+
let(:attrs) { { choices: 'invalid' } }
|
26
|
+
|
27
|
+
it 'raises an error' do
|
28
|
+
expect { opt }.to raise_error 'The :choices attribute must be a hash'
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
context 'when a hash' do
|
33
|
+
it 'does not raise any error' do
|
34
|
+
expect { opt }.to_not raise_error
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
describe '#validate' do
|
41
|
+
context 'when an unknown choice is given' do
|
42
|
+
it 'raises an error' do
|
43
|
+
expect { opt.validate('vp,n') }.to raise_error 'Unknown choice: n'
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
context 'when nil or empty value' do
|
48
|
+
context 'when no value_if_empty attribute' do
|
49
|
+
it 'raises an error' do
|
50
|
+
[nil, ''].each do |value|
|
51
|
+
expect { opt.validate(value) }.to raise_error 'Empty option value supplied'
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
context 'when value_if_empty attribute' do
|
57
|
+
let(:attrs) { super().merge(value_if_empty: 'vp,u') }
|
58
|
+
|
59
|
+
it 'returns the expected hash' do
|
60
|
+
[nil, ''].each do |value|
|
61
|
+
expect(opt.validate(value)).to eql(vulenrable_plugins: true, users: (1..10))
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
context 'when value' do
|
68
|
+
it 'returns the expected hash' do
|
69
|
+
expect(opt.validate('u2-5')).to eql(users: (2..5))
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
describe '#normalize' do
|
75
|
+
it 'returns the same value (no normalization)' do
|
76
|
+
expect(opt.normalize('a')).to eql 'a'
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: opt_parse_validator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- WPScanTeam - Erwan le Rousseau
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-02-
|
11
|
+
date: 2015-02-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: addressable
|
@@ -72,28 +72,28 @@ dependencies:
|
|
72
72
|
requirements:
|
73
73
|
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: '1.
|
75
|
+
version: '1.6'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: '1.
|
82
|
+
version: '1.6'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: rubocop
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
87
|
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: '0.
|
89
|
+
version: '0.29'
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
94
|
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: '0.
|
96
|
+
version: '0.29'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: simplecov
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -136,6 +136,8 @@ files:
|
|
136
136
|
- lib/opt_parse_validator/opts/directory_path.rb
|
137
137
|
- lib/opt_parse_validator/opts/file_path.rb
|
138
138
|
- lib/opt_parse_validator/opts/integer.rb
|
139
|
+
- lib/opt_parse_validator/opts/integer_range.rb
|
140
|
+
- lib/opt_parse_validator/opts/multi_choices.rb
|
139
141
|
- lib/opt_parse_validator/opts/path.rb
|
140
142
|
- lib/opt_parse_validator/opts/positive_integer.rb
|
141
143
|
- lib/opt_parse_validator/opts/proxy.rb
|
@@ -158,7 +160,9 @@ files:
|
|
158
160
|
- spec/lib/opt_parse_validator/opts/credentials_spec.rb
|
159
161
|
- spec/lib/opt_parse_validator/opts/direcyory_path_spec.rb
|
160
162
|
- spec/lib/opt_parse_validator/opts/file_path_spec.rb
|
163
|
+
- spec/lib/opt_parse_validator/opts/integer_range_spec.rb
|
161
164
|
- spec/lib/opt_parse_validator/opts/integer_spec.rb
|
165
|
+
- spec/lib/opt_parse_validator/opts/multi_choices_spec.rb
|
162
166
|
- spec/lib/opt_parse_validator/opts/path_spec.rb
|
163
167
|
- spec/lib/opt_parse_validator/opts/positive_integer_spec.rb
|
164
168
|
- spec/lib/opt_parse_validator/opts/proxy_spec.rb
|
@@ -206,7 +210,9 @@ test_files:
|
|
206
210
|
- spec/lib/opt_parse_validator/opts/credentials_spec.rb
|
207
211
|
- spec/lib/opt_parse_validator/opts/direcyory_path_spec.rb
|
208
212
|
- spec/lib/opt_parse_validator/opts/file_path_spec.rb
|
213
|
+
- spec/lib/opt_parse_validator/opts/integer_range_spec.rb
|
209
214
|
- spec/lib/opt_parse_validator/opts/integer_spec.rb
|
215
|
+
- spec/lib/opt_parse_validator/opts/multi_choices_spec.rb
|
210
216
|
- spec/lib/opt_parse_validator/opts/path_spec.rb
|
211
217
|
- spec/lib/opt_parse_validator/opts/positive_integer_spec.rb
|
212
218
|
- spec/lib/opt_parse_validator/opts/proxy_spec.rb
|