getopt 1.4.2 → 1.4.3
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
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/CHANGES +5 -0
- data/MANIFEST +6 -2
- data/README +1 -1
- data/Rakefile +3 -6
- data/certs/djberg96_pub.pem +21 -0
- data/getopt.gemspec +2 -1
- data/lib/getopt-long.rb +1 -0
- data/lib/getopt-std.rb +1 -0
- data/lib/getopt.rb +2 -0
- data/lib/getopt/long.rb +1 -1
- data/lib/getopt/std.rb +1 -1
- data/test/test_getopt_long.rb +226 -226
- data/test/test_getopt_std.rb +112 -113
- metadata +38 -7
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e01b97f25a4930c245cb4297d867d3c99db93bea
|
4
|
+
data.tar.gz: bae1d1f080a05aa8c87010f7b141caaefe71d94a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cb33d4cc4bc8b1f1afa3a99b3297f8e3bb79cebfd1a7bd2f7e97493c6198dc1ab6b3f0654bb22ed509a2b1079facb83e11ffe82428fa17f4676424373a3907fa
|
7
|
+
data.tar.gz: 6c8cd8707a430ee5727a43b5cb1854e169ad8838f6f42c95a37a2550c8d1e4f9c22e390be55487431f8cbe861ddf33ba8817d4dbf288eb9771b66224d8424283
|
checksums.yaml.gz.sig
ADDED
Binary file
|
data.tar.gz.sig
ADDED
Binary file
|
data/CHANGES
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
== 1.4.3 - 7-Jan-2016
|
2
|
+
* This gem is now signed.
|
3
|
+
* The gem related tasks in the Rakefile now assume Rubygems 2.x.
|
4
|
+
* Added getopt.rb, getopt-std.rb and getopt-long.rb files for convenience.
|
5
|
+
|
1
6
|
== 1.4.2 - 12-Oct-2014
|
2
7
|
* Updated Rakefile, README and gemspec.
|
3
8
|
* Minor updates to the test file and examples.
|
data/MANIFEST
CHANGED
@@ -3,9 +3,13 @@
|
|
3
3
|
* README
|
4
4
|
* Rakefile
|
5
5
|
* getopt.gemspec
|
6
|
+
* certs/djberg96_pub.pem
|
6
7
|
* examples/example_std.rb
|
7
8
|
* examples/example_long.rb
|
8
|
-
* lib/getopt
|
9
|
+
* lib/getopt.rb
|
10
|
+
* lib/getopt-long.rb
|
11
|
+
* lib/getopt-std.rb
|
9
12
|
* lib/getopt/long.rb
|
10
|
-
*
|
13
|
+
* lib/getopt/std.rb
|
11
14
|
* test/test_getopt_long.rb
|
15
|
+
* test/test_getopt_std.rb
|
data/README
CHANGED
data/Rakefile
CHANGED
@@ -7,13 +7,10 @@ CLEAN.include("**/*.gem", "**/*.rbc")
|
|
7
7
|
namespace :gem do
|
8
8
|
desc "Create the getopt gem"
|
9
9
|
task :create => [:clean] do
|
10
|
+
require 'rubygems/package'
|
10
11
|
spec = eval(IO.read('getopt.gemspec'))
|
11
|
-
|
12
|
-
|
13
|
-
else
|
14
|
-
require 'rubygems/package'
|
15
|
-
Gem::Package.build(spec)
|
16
|
-
end
|
12
|
+
spec.signing_key = File.join(Dir.home, '.ssh', 'gem-private_key.pem')
|
13
|
+
Gem::Package.build(spec, true)
|
17
14
|
end
|
18
15
|
|
19
16
|
desc "Install the getopt gem"
|
@@ -0,0 +1,21 @@
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
2
|
+
MIIDcDCCAligAwIBAgIBATANBgkqhkiG9w0BAQUFADA/MREwDwYDVQQDDAhkamJl
|
3
|
+
cmc5NjEVMBMGCgmSJomT8ixkARkWBWdtYWlsMRMwEQYKCZImiZPyLGQBGRYDY29t
|
4
|
+
MB4XDTE1MDkwMjIwNDkxOFoXDTE2MDkwMTIwNDkxOFowPzERMA8GA1UEAwwIZGpi
|
5
|
+
ZXJnOTYxFTATBgoJkiaJk/IsZAEZFgVnbWFpbDETMBEGCgmSJomT8ixkARkWA2Nv
|
6
|
+
bTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMyTkvXqRp6hLs9eoJOS
|
7
|
+
Hmi8kRYbq9Vkf15/hMxJpotYMgJVHHWrmDcC5Dye2PbnXjTkKf266Zw0PtT9h+lI
|
8
|
+
S3ts9HO+vaCFSMwFFZmnWJSpQ3CNw2RcHxjWkk9yF7imEM8Kz9ojhiDXzBetdV6M
|
9
|
+
gr0lV/alUr7TNVBDngbXEfTWscyXh1qd7xZ4EcOdsDktCe5G45N/o3662tPQvJsi
|
10
|
+
FOF0CM/KuBsa/HL1/eoEmF4B3EKIRfTHrQ3hu20Kv3RJ88QM4ec2+0dd97uX693O
|
11
|
+
zv6981fyEg+aXLkxrkViM/tz2qR2ZE0jPhHTREPYeMEgptRkTmWSKAuLVWrJEfgl
|
12
|
+
DtkCAwEAAaN3MHUwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAwHQYDVR0OBBYEFEwe
|
13
|
+
nn6bfJADmuIDiMSOzedOrL+xMB0GA1UdEQQWMBSBEmRqYmVyZzk2QGdtYWlsLmNv
|
14
|
+
bTAdBgNVHRIEFjAUgRJkamJlcmc5NkBnbWFpbC5jb20wDQYJKoZIhvcNAQEFBQAD
|
15
|
+
ggEBAHmNOCWoDVD75zHFueY0viwGDVP1BNGFC+yXcb7u2GlK+nEMCORqzURbYPf7
|
16
|
+
tL+/hzmePIRz7i30UM//64GI1NLv9jl7nIwjhPpXpf7/lu2I9hOTsvwSumb5UiKC
|
17
|
+
/sqBxI3sfj9pr79Wpv4MuikX1XPik7Ncb7NPsJPw06Lvyc3Hkg5X2XpPtLtS+Gr2
|
18
|
+
wKJnmzb5rIPS1cmsqv0M9LPWflzfwoZ/SpnmhagP+g05p8bRNKjZSA2iImM/GyYZ
|
19
|
+
EJYzxdPOrx2n6NYR3Hk+vHP0U7UBSveI6+qx+ndQYaeyCn+GRX2PKS9h66YF/Q1V
|
20
|
+
tGSHgAmcLlkdGgan182qsE/4kKM=
|
21
|
+
-----END CERTIFICATE-----
|
data/getopt.gemspec
CHANGED
@@ -2,7 +2,7 @@ require 'rubygems'
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |spec|
|
4
4
|
spec.name = 'getopt'
|
5
|
-
spec.version = '1.4.
|
5
|
+
spec.version = '1.4.3'
|
6
6
|
spec.author = 'Daniel J. Berger'
|
7
7
|
spec.license = 'Artistic 2.0'
|
8
8
|
spec.email = 'djberg96@gmail.com'
|
@@ -10,6 +10,7 @@ Gem::Specification.new do |spec|
|
|
10
10
|
spec.summary = 'Getopt::Std and Getopt::Long option parsers for Ruby'
|
11
11
|
spec.test_files = Dir['test/*.rb']
|
12
12
|
spec.files = Dir['**/*'].reject{ |f| f.include?('git') }
|
13
|
+
spec.cert_chain = Dir['certs/*']
|
13
14
|
|
14
15
|
spec.extra_rdoc_files = ['README', 'CHANGES', 'MANIFEST']
|
15
16
|
|
data/lib/getopt-long.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require_relative 'getopt/long'
|
data/lib/getopt-std.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require_relative 'getopt/std'
|
data/lib/getopt.rb
ADDED
data/lib/getopt/long.rb
CHANGED
@@ -17,7 +17,7 @@ module Getopt
|
|
17
17
|
class Error < StandardError; end
|
18
18
|
|
19
19
|
# The version of the getopt library
|
20
|
-
VERSION = '1.4.
|
20
|
+
VERSION = '1.4.3'
|
21
21
|
|
22
22
|
# Takes an array of switches. Each array consists of up to three
|
23
23
|
# elements that indicate the name and type of switch. Returns a hash
|
data/lib/getopt/std.rb
CHANGED
@@ -10,7 +10,7 @@ module Getopt
|
|
10
10
|
class Error < StandardError; end
|
11
11
|
|
12
12
|
# The version of the getopt library
|
13
|
-
VERSION = '1.4.
|
13
|
+
VERSION = '1.4.3'
|
14
14
|
|
15
15
|
# Processes single character command line options with option
|
16
16
|
# clustering. This information is parsed from ARGV and returned
|
data/test/test_getopt_long.rb
CHANGED
@@ -9,256 +9,256 @@ require 'getopt/long'
|
|
9
9
|
include Getopt
|
10
10
|
|
11
11
|
class TC_Getopt_Long < Test::Unit::TestCase
|
12
|
-
|
13
|
-
|
14
|
-
|
12
|
+
def setup
|
13
|
+
@opts = nil
|
14
|
+
end
|
15
15
|
|
16
|
-
|
17
|
-
|
18
|
-
|
16
|
+
def test_version
|
17
|
+
assert_equal('1.4.3', Long::VERSION)
|
18
|
+
end
|
19
19
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
20
|
+
def test_constants
|
21
|
+
assert_not_nil(BOOLEAN)
|
22
|
+
assert_not_nil(OPTIONAL)
|
23
|
+
assert_not_nil(REQUIRED)
|
24
|
+
assert_not_nil(INCREMENT)
|
25
|
+
end
|
26
26
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
27
|
+
def test_getopts_basic
|
28
|
+
assert_respond_to(Long, :getopts)
|
29
|
+
assert_nothing_raised{
|
30
|
+
Long.getopts(["--test"],["--help"],["--foo"])
|
31
|
+
}
|
32
|
+
assert_nothing_raised{
|
33
|
+
Long.getopts(["--test", "-x"],["--help", "-y"],["--foo", "-z"])
|
34
|
+
}
|
35
|
+
assert_nothing_raised{
|
36
|
+
Long.getopts(
|
37
|
+
["--test", "-x", BOOLEAN],
|
38
|
+
["--help", "-y", REQUIRED],
|
39
|
+
["--foo", "-z", OPTIONAL],
|
40
|
+
["--more", "-m", INCREMENT]
|
41
|
+
)
|
42
|
+
}
|
43
|
+
assert_kind_of(Hash, Long.getopts("--test"))
|
44
|
+
end
|
45
45
|
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
46
|
+
def test_getopts_using_equals
|
47
|
+
ARGV.push("--foo=hello","-b","world")
|
48
|
+
assert_nothing_raised{
|
49
|
+
@opts = Long.getopts(
|
50
|
+
["--foo", "-f", REQUIRED],
|
51
|
+
["--bar", "-b", OPTIONAL]
|
52
|
+
)
|
53
|
+
}
|
54
|
+
assert_equal("hello", @opts["foo"])
|
55
|
+
assert_equal("hello", @opts["f"])
|
56
|
+
assert_equal("world", @opts["bar"])
|
57
|
+
assert_equal("world", @opts["b"])
|
58
|
+
end
|
59
59
|
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
60
|
+
def test_getopts_long_embedded_hyphens
|
61
|
+
ARGV.push('--foo-bar', 'hello', '--test1-test2-test3', 'world')
|
62
|
+
assert_nothing_raised{
|
63
|
+
@opts = Long.getopts(
|
64
|
+
['--foo-bar', '-f', REQUIRED],
|
65
|
+
['--test1-test2-test3', '-t', REQUIRED]
|
66
|
+
)
|
67
|
+
}
|
68
|
+
assert_equal('hello', @opts['foo-bar'])
|
69
|
+
assert_equal('hello', @opts['f'])
|
70
|
+
assert_equal('world', @opts['test1-test2-test3'])
|
71
|
+
assert_equal('world', @opts['t'])
|
72
|
+
end
|
73
73
|
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
74
|
+
def test_getopts_long_embedded_hyphens_using_equals_sign
|
75
|
+
ARGV.push('--foo-bar=hello', '--test1-test2-test3=world')
|
76
|
+
assert_nothing_raised{
|
77
|
+
@opts = Long.getopts(
|
78
|
+
['--foo-bar', '-f', REQUIRED],
|
79
|
+
['--test1-test2-test3', '-t', REQUIRED]
|
80
|
+
)
|
81
|
+
}
|
82
|
+
assert_equal('hello', @opts['foo-bar'])
|
83
|
+
assert_equal('hello', @opts['f'])
|
84
|
+
assert_equal('world', @opts['test1-test2-test3'])
|
85
|
+
assert_equal('world', @opts['t'])
|
86
|
+
end
|
87
87
|
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
88
|
+
def test_getopts_short_switch_squished
|
89
|
+
ARGV.push("-f", "hello", "-bworld")
|
90
|
+
assert_nothing_raised{
|
91
|
+
@opts = Long.getopts(
|
92
|
+
["--foo", "-f", REQUIRED],
|
93
|
+
["--bar", "-b", OPTIONAL]
|
94
|
+
)
|
95
|
+
}
|
96
|
+
assert_equal("hello", @opts["f"])
|
97
|
+
assert_equal("world", @opts["b"])
|
98
|
+
end
|
99
99
|
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
100
|
+
def test_getopts_increment_type
|
101
|
+
ARGV.push("-m","-m")
|
102
|
+
assert_nothing_raised{
|
103
|
+
@opts = Long.getopts(["--more", "-m", INCREMENT])
|
104
|
+
}
|
105
|
+
assert_equal(2, @opts["more"])
|
106
|
+
assert_equal(2, @opts["m"])
|
107
|
+
end
|
108
108
|
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
109
|
+
def test_switches_exist
|
110
|
+
ARGV.push("--verbose","--test","--foo")
|
111
|
+
assert_nothing_raised{ @opts = Long.getopts("--verbose --test --foo") }
|
112
|
+
assert_equal(true, @opts.has_key?("verbose"))
|
113
|
+
assert_equal(true, @opts.has_key?("test"))
|
114
|
+
assert_equal(true, @opts.has_key?("foo"))
|
115
|
+
end
|
116
116
|
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
117
|
+
def test_short_switch_synonyms
|
118
|
+
ARGV.push("--verbose","--test","--foo")
|
119
|
+
assert_nothing_raised{ @opts = Long.getopts("--verbose --test --foo") }
|
120
|
+
assert_equal(true, @opts.has_key?("v"))
|
121
|
+
assert_equal(true, @opts.has_key?("t"))
|
122
|
+
assert_equal(true, @opts.has_key?("f"))
|
123
|
+
end
|
124
124
|
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
125
|
+
def test_short_switch_synonyms_with_explicit_types
|
126
|
+
ARGV.push("--verbose", "--test", "hello", "--foo")
|
127
|
+
assert_nothing_raised{
|
128
|
+
@opts = Long.getopts(
|
129
|
+
["--verbose", BOOLEAN],
|
130
|
+
["--test", REQUIRED],
|
131
|
+
["--foo", BOOLEAN]
|
132
|
+
)
|
133
|
+
}
|
134
|
+
assert(@opts.has_key?("v"))
|
135
|
+
assert(@opts.has_key?("t"))
|
136
|
+
assert(@opts.has_key?("f"))
|
137
|
+
end
|
138
138
|
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
139
|
+
def test_switches_with_required_arguments
|
140
|
+
ARGV.push("--foo","1","--bar","hello")
|
141
|
+
assert_nothing_raised{
|
142
|
+
@opts = Long.getopts(
|
143
|
+
["--foo", "-f", REQUIRED],
|
144
|
+
["--bar", "-b", REQUIRED]
|
145
|
+
)
|
146
|
+
}
|
147
|
+
assert_equal({"foo"=>"1", "bar"=>"hello", "f"=>"1", "b"=>"hello"}, @opts)
|
148
|
+
end
|
149
149
|
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
150
|
+
def test_compressed_switches
|
151
|
+
ARGV.push("-fb")
|
152
|
+
assert_nothing_raised{
|
153
|
+
@opts = Long.getopts(
|
154
|
+
["--foo", "-f", BOOLEAN],
|
155
|
+
["--bar", "-b", BOOLEAN]
|
156
|
+
)
|
157
|
+
}
|
158
|
+
assert_equal({"foo"=>true, "f"=>true, "b"=>true, "bar"=>true}, @opts)
|
159
|
+
end
|
160
160
|
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
)
|
168
|
-
}
|
169
|
-
assert_equal(
|
170
|
-
{"x"=>true, "expand"=>true, "f"=>"foo.txt", "file"=>"foo.txt"}, @opts
|
161
|
+
def test_compress_switches_with_required_arg
|
162
|
+
ARGV.push("-xf", "foo.txt")
|
163
|
+
assert_nothing_raised{
|
164
|
+
@opts = Long.getopts(
|
165
|
+
["--expand", "-x", BOOLEAN],
|
166
|
+
["--file", "-f", REQUIRED]
|
171
167
|
)
|
172
|
-
|
168
|
+
}
|
169
|
+
assert_equal(
|
170
|
+
{"x"=>true, "expand"=>true, "f"=>"foo.txt", "file"=>"foo.txt"}, @opts
|
171
|
+
)
|
172
|
+
end
|
173
173
|
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
)
|
181
|
-
}
|
182
|
-
assert_equal(
|
183
|
-
{"x"=>true, "expand"=>true, "f"=>"foo.txt", "file"=>"foo.txt"}, @opts
|
174
|
+
def test_compress_switches_with_compressed_required_arg
|
175
|
+
ARGV.push("-xffoo.txt")
|
176
|
+
assert_nothing_raised{
|
177
|
+
@opts = Long.getopts(
|
178
|
+
["--expand", "-x", BOOLEAN],
|
179
|
+
["--file", "-f", REQUIRED]
|
184
180
|
)
|
185
|
-
|
181
|
+
}
|
182
|
+
assert_equal(
|
183
|
+
{"x"=>true, "expand"=>true, "f"=>"foo.txt", "file"=>"foo.txt"}, @opts
|
184
|
+
)
|
185
|
+
end
|
186
186
|
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
)
|
194
|
-
}
|
195
|
-
assert_equal(
|
196
|
-
{"x"=>true, "expand"=>true, "f"=>nil, "file"=>nil}, @opts
|
187
|
+
def test_compress_switches_with_optional_arg_not_defined
|
188
|
+
ARGV.push("-xf")
|
189
|
+
assert_nothing_raised{
|
190
|
+
@opts = Long.getopts(
|
191
|
+
["--expand", "-x", BOOLEAN],
|
192
|
+
["--file", "-f", OPTIONAL]
|
197
193
|
)
|
198
|
-
|
194
|
+
}
|
195
|
+
assert_equal(
|
196
|
+
{"x"=>true, "expand"=>true, "f"=>nil, "file"=>nil}, @opts
|
197
|
+
)
|
198
|
+
end
|
199
199
|
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
)
|
207
|
-
}
|
208
|
-
assert_equal(
|
209
|
-
{"x"=>true, "expand"=>true, "f"=>"boo.txt", "file"=>"boo.txt"}, @opts
|
200
|
+
def test_compress_switches_with_optional_arg
|
201
|
+
ARGV.push("-xf", "boo.txt")
|
202
|
+
assert_nothing_raised{
|
203
|
+
@opts = Long.getopts(
|
204
|
+
["--expand", "-x", BOOLEAN],
|
205
|
+
["--file", "-f", OPTIONAL]
|
210
206
|
)
|
211
|
-
|
207
|
+
}
|
208
|
+
assert_equal(
|
209
|
+
{"x"=>true, "expand"=>true, "f"=>"boo.txt", "file"=>"boo.txt"}, @opts
|
210
|
+
)
|
211
|
+
end
|
212
212
|
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
)
|
220
|
-
}
|
221
|
-
assert_equal(
|
222
|
-
{"x"=>true, "expand"=>true, "f"=>"boo.txt", "file"=>"boo.txt"}, @opts
|
213
|
+
def test_compress_switches_with_compressed_optional_arg
|
214
|
+
ARGV.push("-xfboo.txt")
|
215
|
+
assert_nothing_raised{
|
216
|
+
@opts = Long.getopts(
|
217
|
+
["--expand", "-x", BOOLEAN],
|
218
|
+
["--file", "-f", OPTIONAL]
|
223
219
|
)
|
224
|
-
|
220
|
+
}
|
221
|
+
assert_equal(
|
222
|
+
{"x"=>true, "expand"=>true, "f"=>"boo.txt", "file"=>"boo.txt"}, @opts
|
223
|
+
)
|
224
|
+
end
|
225
225
|
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
226
|
+
def test_compressed_short_and_long_mixed
|
227
|
+
ARGV.push("-xb", "--file", "boo.txt", "-v")
|
228
|
+
assert_nothing_raised{
|
229
|
+
@opts = Long.getopts(
|
230
|
+
["--expand", "-x", BOOLEAN],
|
231
|
+
["--verbose", "-v", BOOLEAN],
|
232
|
+
["--file", "-f", REQUIRED],
|
233
|
+
["--bar", "-b", OPTIONAL]
|
234
|
+
)
|
235
|
+
assert_equal(
|
236
|
+
{ "x"=>true, "expand"=>true,
|
237
|
+
"v"=>true, "verbose"=>true,
|
238
|
+
"f"=>"boo.txt", "file"=>"boo.txt",
|
239
|
+
"b"=>nil, "bar"=>nil
|
240
|
+
},
|
241
|
+
@opts
|
242
|
+
)
|
243
|
+
}
|
244
|
+
end
|
245
245
|
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
246
|
+
def test_multiple_similar_long_switches_with_no_short_switches
|
247
|
+
ARGV.push('--to','1','--too','2','--tooo','3')
|
248
|
+
assert_nothing_raised{
|
249
|
+
@opts = Long.getopts(
|
250
|
+
["--to", REQUIRED],
|
251
|
+
["--too", REQUIRED],
|
252
|
+
["--tooo", REQUIRED]
|
253
|
+
)
|
254
|
+
}
|
255
|
+
assert_equal('1', @opts['to'])
|
256
|
+
assert_equal('2', @opts['too'])
|
257
|
+
assert_equal('3', @opts['tooo'])
|
258
|
+
end
|
259
259
|
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
260
|
+
def teardown
|
261
|
+
@opts = nil
|
262
|
+
ARGV.clear
|
263
|
+
end
|
264
264
|
end
|
data/test/test_getopt_std.rb
CHANGED
@@ -9,117 +9,116 @@ require 'getopt/std'
|
|
9
9
|
include Getopt
|
10
10
|
|
11
11
|
class TC_Getopt_Std < Test::Unit::TestCase
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
end
|
12
|
+
def test_version
|
13
|
+
assert_equal('1.4.3', Std::VERSION)
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_getopts_basic
|
17
|
+
assert_respond_to(Std, :getopts)
|
18
|
+
assert_nothing_raised{ Std.getopts("ID") }
|
19
|
+
assert_kind_of(Hash, Std.getopts("ID"))
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_getopts_separated_switches
|
23
|
+
ARGV.push("-I", "-D")
|
24
|
+
assert_equal({"I"=>true, "D"=>true}, Std.getopts("ID"))
|
25
|
+
end
|
26
|
+
|
27
|
+
# Inspired by RF bug #23477
|
28
|
+
def test_getopts_arguments_that_match_switch_are_ok
|
29
|
+
ARGV.push("-d", "d")
|
30
|
+
assert_equal({"d" => "d"}, Std.getopts("d:"))
|
31
|
+
|
32
|
+
ARGV.push("-d", "ad")
|
33
|
+
assert_equal({"d" => "ad"}, Std.getopts("d:"))
|
34
|
+
|
35
|
+
ARGV.push("-a", "ad")
|
36
|
+
assert_equal({"a" => "ad"}, Std.getopts("d:a:"))
|
37
|
+
|
38
|
+
ARGV.push("-a", "da")
|
39
|
+
assert_equal({"a" => "da"}, Std.getopts("d:a:"))
|
40
|
+
|
41
|
+
ARGV.push("-a", "d")
|
42
|
+
assert_equal({"a" => "d"}, Std.getopts("d:a:"))
|
43
|
+
|
44
|
+
ARGV.push("-a", "dad")
|
45
|
+
assert_equal({"a" => "dad"}, Std.getopts("d:a:"))
|
46
|
+
|
47
|
+
ARGV.push("-d", "d", "-a", "a")
|
48
|
+
assert_equal({"d" => "d", "a" => "a"}, Std.getopts("d:a:"))
|
49
|
+
end
|
50
|
+
|
51
|
+
def test_getopts_joined_switches
|
52
|
+
ARGV.push("-ID")
|
53
|
+
assert_equal({"I"=>true, "D"=>true}, Std.getopts("ID"))
|
54
|
+
end
|
55
|
+
|
56
|
+
def test_getopts_separated_switches_with_mandatory_arg
|
57
|
+
ARGV.push("-o", "hello", "-I", "-D")
|
58
|
+
assert_equal({"o"=>"hello", "I"=>true, "D"=>true}, Std.getopts("o:ID"))
|
59
|
+
end
|
60
|
+
|
61
|
+
def test_getopts_joined_switches_with_mandatory_arg
|
62
|
+
ARGV.push("-IDo", "hello")
|
63
|
+
assert_equal({"o"=>"hello", "I"=>true, "D"=>true}, Std.getopts("o:ID"))
|
64
|
+
end
|
65
|
+
|
66
|
+
def test_getopts_no_args
|
67
|
+
assert_nothing_raised{ Std.getopts("ID") }
|
68
|
+
assert_equal({}, Std.getopts("ID"))
|
69
|
+
assert_nil(Std.getopts("ID")["I"])
|
70
|
+
assert_nil(Std.getopts("ID")["D"])
|
71
|
+
end
|
72
|
+
|
73
|
+
# If a switch that accepts an argument appears more than once, the values
|
74
|
+
# are rolled into an array.
|
75
|
+
def test_getopts_switch_repeated
|
76
|
+
ARGV.push("-I", "-I", "-o", "hello", "-o", "world")
|
77
|
+
assert_equal({"o" => ["hello","world"], "I"=>true}, Std.getopts("o:ID"))
|
78
|
+
end
|
79
|
+
|
80
|
+
# EXPECTED ERRORS
|
81
|
+
|
82
|
+
def test_getopts_expected_errors_passing_switch_to_another_switch
|
83
|
+
ARGV.push("-d", "-d")
|
84
|
+
assert_raise(Getopt::Std::Error){ Std.getopts("d:a:") }
|
85
|
+
|
86
|
+
ARGV.push("-d", "-a")
|
87
|
+
assert_raise(Getopt::Std::Error){ Std.getopts("d:a:") }
|
88
|
+
|
89
|
+
ARGV.push("-a", "-d")
|
90
|
+
assert_raise(Getopt::Std::Error){ Std.getopts("d:a:") }
|
91
|
+
|
92
|
+
ARGV.push("-d", "-d")
|
93
|
+
assert_raise_message("cannot use switch '-d' as argument to another switch"){ Std.getopts("d:a:") }
|
94
|
+
end
|
95
|
+
|
96
|
+
def test_getopts_expected_errors_missing_arg
|
97
|
+
ARGV.push("-ID")
|
98
|
+
assert_raises(Std::Error){ Std.getopts("I:D") }
|
99
|
+
|
100
|
+
ARGV.push("-ID")
|
101
|
+
assert_raises(Std::Error){ Std.getopts("ID:") }
|
102
|
+
end
|
103
|
+
|
104
|
+
def test_getopts_expected_errors_extra_arg
|
105
|
+
ARGV.push("-I", "-D", "-X")
|
106
|
+
assert_raises(Std::Error){ Std.getopts("ID") }
|
107
|
+
|
108
|
+
ARGV.push("-IDX")
|
109
|
+
assert_raises(Std::Error){ Std.getopts("ID") }
|
110
|
+
|
111
|
+
ARGV.push("-IDX")
|
112
|
+
assert_raise_message("invalid option 'X'"){ Std.getopts("ID") }
|
113
|
+
end
|
114
|
+
|
115
|
+
def test_getopts_expected_errors_basic
|
116
|
+
assert_raises(ArgumentError){ Std.getopts }
|
117
|
+
assert_raises(NoMethodError){ Std.getopts(0) }
|
118
|
+
assert_raises(NoMethodError){ Std.getopts(nil) }
|
119
|
+
end
|
120
|
+
|
121
|
+
def teardown
|
122
|
+
ARGV.clear
|
123
|
+
end
|
125
124
|
end
|
metadata
CHANGED
@@ -1,14 +1,36 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: getopt
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.4.
|
4
|
+
version: 1.4.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel J. Berger
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
|
-
cert_chain:
|
11
|
-
|
10
|
+
cert_chain:
|
11
|
+
- |
|
12
|
+
-----BEGIN CERTIFICATE-----
|
13
|
+
MIIDcDCCAligAwIBAgIBATANBgkqhkiG9w0BAQUFADA/MREwDwYDVQQDDAhkamJl
|
14
|
+
cmc5NjEVMBMGCgmSJomT8ixkARkWBWdtYWlsMRMwEQYKCZImiZPyLGQBGRYDY29t
|
15
|
+
MB4XDTE1MDkwMjIwNDkxOFoXDTE2MDkwMTIwNDkxOFowPzERMA8GA1UEAwwIZGpi
|
16
|
+
ZXJnOTYxFTATBgoJkiaJk/IsZAEZFgVnbWFpbDETMBEGCgmSJomT8ixkARkWA2Nv
|
17
|
+
bTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMyTkvXqRp6hLs9eoJOS
|
18
|
+
Hmi8kRYbq9Vkf15/hMxJpotYMgJVHHWrmDcC5Dye2PbnXjTkKf266Zw0PtT9h+lI
|
19
|
+
S3ts9HO+vaCFSMwFFZmnWJSpQ3CNw2RcHxjWkk9yF7imEM8Kz9ojhiDXzBetdV6M
|
20
|
+
gr0lV/alUr7TNVBDngbXEfTWscyXh1qd7xZ4EcOdsDktCe5G45N/o3662tPQvJsi
|
21
|
+
FOF0CM/KuBsa/HL1/eoEmF4B3EKIRfTHrQ3hu20Kv3RJ88QM4ec2+0dd97uX693O
|
22
|
+
zv6981fyEg+aXLkxrkViM/tz2qR2ZE0jPhHTREPYeMEgptRkTmWSKAuLVWrJEfgl
|
23
|
+
DtkCAwEAAaN3MHUwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAwHQYDVR0OBBYEFEwe
|
24
|
+
nn6bfJADmuIDiMSOzedOrL+xMB0GA1UdEQQWMBSBEmRqYmVyZzk2QGdtYWlsLmNv
|
25
|
+
bTAdBgNVHRIEFjAUgRJkamJlcmc5NkBnbWFpbC5jb20wDQYJKoZIhvcNAQEFBQAD
|
26
|
+
ggEBAHmNOCWoDVD75zHFueY0viwGDVP1BNGFC+yXcb7u2GlK+nEMCORqzURbYPf7
|
27
|
+
tL+/hzmePIRz7i30UM//64GI1NLv9jl7nIwjhPpXpf7/lu2I9hOTsvwSumb5UiKC
|
28
|
+
/sqBxI3sfj9pr79Wpv4MuikX1XPik7Ncb7NPsJPw06Lvyc3Hkg5X2XpPtLtS+Gr2
|
29
|
+
wKJnmzb5rIPS1cmsqv0M9LPWflzfwoZ/SpnmhagP+g05p8bRNKjZSA2iImM/GyYZ
|
30
|
+
EJYzxdPOrx2n6NYR3Hk+vHP0U7UBSveI6+qx+ndQYaeyCn+GRX2PKS9h66YF/Q1V
|
31
|
+
tGSHgAmcLlkdGgan182qsE/4kKM=
|
32
|
+
-----END CERTIFICATE-----
|
33
|
+
date: 2016-01-07 00:00:00.000000000 Z
|
12
34
|
dependencies:
|
13
35
|
- !ruby/object:Gem::Dependency
|
14
36
|
name: test-unit
|
@@ -37,15 +59,24 @@ extra_rdoc_files:
|
|
37
59
|
- CHANGES
|
38
60
|
- MANIFEST
|
39
61
|
files:
|
62
|
+
- certs
|
63
|
+
- certs/djberg96_pub.pem
|
40
64
|
- CHANGES
|
41
|
-
-
|
42
|
-
- README
|
43
|
-
- Rakefile
|
65
|
+
- examples
|
44
66
|
- examples/example_long.rb
|
45
67
|
- examples/example_std.rb
|
46
68
|
- getopt.gemspec
|
69
|
+
- lib
|
70
|
+
- lib/getopt
|
47
71
|
- lib/getopt/long.rb
|
48
72
|
- lib/getopt/std.rb
|
73
|
+
- lib/getopt-long.rb
|
74
|
+
- lib/getopt-std.rb
|
75
|
+
- lib/getopt.rb
|
76
|
+
- MANIFEST
|
77
|
+
- Rakefile
|
78
|
+
- README
|
79
|
+
- test
|
49
80
|
- test/test_getopt_long.rb
|
50
81
|
- test/test_getopt_std.rb
|
51
82
|
homepage: https://github.com/djberg96/getopt
|
@@ -68,7 +99,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
68
99
|
version: '0'
|
69
100
|
requirements: []
|
70
101
|
rubyforge_project:
|
71
|
-
rubygems_version: 2.
|
102
|
+
rubygems_version: 2.5.1
|
72
103
|
signing_key:
|
73
104
|
specification_version: 4
|
74
105
|
summary: Getopt::Std and Getopt::Long option parsers for Ruby
|
metadata.gz.sig
ADDED
Binary file
|