trollop 2.1.2 → 2.1.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
- data/.travis.yml +7 -3
- data/Gemfile.travis +3 -0
- data/History.txt +16 -2
- data/README.md +6 -3
- data/Rakefile +1 -1
- data/lib/trollop.rb +501 -325
- data/test/support/assert_helpers.rb +46 -0
- data/test/test_helper.rb +5 -1
- data/test/trollop/command_line_error_test.rb +27 -0
- data/test/trollop/help_needed_test.rb +19 -0
- data/test/trollop/parser_educate_test.rb +175 -0
- data/test/trollop/parser_opt_test.rb +14 -0
- data/test/trollop/parser_parse_test.rb +79 -0
- data/test/{test_trollop.rb → trollop/parser_test.rb} +155 -198
- data/test/trollop/version_needed_test.rb +19 -0
- data/test/trollop_test.rb +190 -0
- data/trollop.gemspec +7 -6
- metadata +27 -50
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
module Trollop
|
4
|
+
class VersionNeededTest < ::MiniTest::Test
|
5
|
+
def test_class
|
6
|
+
assert_kind_of Exception, vn("message")
|
7
|
+
end
|
8
|
+
|
9
|
+
def test_message
|
10
|
+
assert "message", vn("message").message
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
def vn(*args)
|
16
|
+
VersionNeeded.new(*args)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,190 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class TrollopTest < MiniTest::Test
|
4
|
+
def setup
|
5
|
+
Trollop.send(:instance_variable_set, "@last_parser", nil)
|
6
|
+
end
|
7
|
+
|
8
|
+
def parser(&block)
|
9
|
+
Trollop::Parser.new(&block)
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_options
|
13
|
+
opts = Trollop.options %w(-f) do
|
14
|
+
opt :f
|
15
|
+
end
|
16
|
+
|
17
|
+
assert_equal true, opts[:f]
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_options_die_default
|
21
|
+
assert_stderr(/Error: unknown argument.*Try --help/m) do
|
22
|
+
assert_system_exit(-1) do
|
23
|
+
Trollop.options %w(-f) do
|
24
|
+
opt :x
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_options_die_educate_on_error
|
31
|
+
assert_stderr(/Error: unknown argument.*Options/m) do
|
32
|
+
assert_system_exit(-1) do
|
33
|
+
Trollop.options %w(-f) do
|
34
|
+
opt :x
|
35
|
+
educate_on_error
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_die_without_options_ever_run
|
42
|
+
assert_raises(ArgumentError) { Trollop.die 'hello' }
|
43
|
+
end
|
44
|
+
|
45
|
+
def test_die
|
46
|
+
assert_stderr(/Error: issue with parsing/) do
|
47
|
+
assert_system_exit(-1) do
|
48
|
+
Trollop.options []
|
49
|
+
Trollop.die "issue with parsing"
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
def test_die_custom_error_code
|
55
|
+
assert_stderr(/Error: issue with parsing/) do
|
56
|
+
assert_system_exit(5) do
|
57
|
+
Trollop.options []
|
58
|
+
Trollop.die "issue with parsing", nil, 5
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
def test_die_custom_error_code_two_args
|
64
|
+
assert_stderr(/Error: issue with parsing/) do
|
65
|
+
assert_system_exit(5) do
|
66
|
+
Trollop.options []
|
67
|
+
Trollop.die "issue with parsing", 5
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
def test_educate_without_options_ever_run
|
73
|
+
assert_raises(ArgumentError) { Trollop.educate }
|
74
|
+
end
|
75
|
+
|
76
|
+
def test_educate
|
77
|
+
assert_stdout(/Show this message/) do
|
78
|
+
assert_system_exit(0) do
|
79
|
+
Trollop.options []
|
80
|
+
Trollop.educate
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
def test_with_standard_exception_options
|
86
|
+
p = parser do
|
87
|
+
opt :f
|
88
|
+
end
|
89
|
+
|
90
|
+
opts = Trollop::with_standard_exception_handling p do
|
91
|
+
p.parse %w(-f)
|
92
|
+
end
|
93
|
+
|
94
|
+
assert_equal true, opts[:f]
|
95
|
+
end
|
96
|
+
|
97
|
+
def test_with_standard_exception_version_exception
|
98
|
+
p = parser do
|
99
|
+
version "5.5"
|
100
|
+
end
|
101
|
+
|
102
|
+
assert_stdout(/5\.5/) do
|
103
|
+
assert_system_exit(0) do
|
104
|
+
Trollop::with_standard_exception_handling p do
|
105
|
+
raise Trollop::VersionNeeded
|
106
|
+
end
|
107
|
+
end
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
def test_with_standard_exception_version_flag
|
112
|
+
p = parser do
|
113
|
+
version "5.5"
|
114
|
+
end
|
115
|
+
|
116
|
+
assert_stdout(/5\.5/) do
|
117
|
+
assert_system_exit(0) do
|
118
|
+
Trollop::with_standard_exception_handling p do
|
119
|
+
p.parse %w(-v)
|
120
|
+
end
|
121
|
+
end
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
def test_with_standard_exception_die_exception
|
126
|
+
assert_stderr(/Error: cl error/) do
|
127
|
+
assert_system_exit(-1) do
|
128
|
+
p = parser
|
129
|
+
Trollop.with_standard_exception_handling(p) do
|
130
|
+
raise ::Trollop::CommandlineError.new('cl error')
|
131
|
+
end
|
132
|
+
end
|
133
|
+
end
|
134
|
+
end
|
135
|
+
|
136
|
+
def test_with_standard_exception_die_exception_custom_error
|
137
|
+
assert_stderr(/Error: cl error/) do
|
138
|
+
assert_system_exit(5) do
|
139
|
+
p = parser
|
140
|
+
Trollop.with_standard_exception_handling(p) do
|
141
|
+
raise ::Trollop::CommandlineError.new('cl error', 5)
|
142
|
+
end
|
143
|
+
end
|
144
|
+
end
|
145
|
+
end
|
146
|
+
|
147
|
+
def test_with_standard_exception_die
|
148
|
+
assert_stderr(/Error: cl error/) do
|
149
|
+
assert_system_exit(-1) do
|
150
|
+
p = parser
|
151
|
+
Trollop.with_standard_exception_handling(p) do
|
152
|
+
p.die 'cl error'
|
153
|
+
end
|
154
|
+
end
|
155
|
+
end
|
156
|
+
end
|
157
|
+
|
158
|
+
def test_with_standard_exception_die_custom_error
|
159
|
+
assert_stderr(/Error: cl error/) do
|
160
|
+
assert_system_exit(3) do
|
161
|
+
p = parser
|
162
|
+
Trollop.with_standard_exception_handling(p) do
|
163
|
+
p.die 'cl error', nil, 3
|
164
|
+
end
|
165
|
+
end
|
166
|
+
end
|
167
|
+
end
|
168
|
+
|
169
|
+
def test_with_standard_exception_help_needed
|
170
|
+
assert_stdout(/Options/) do
|
171
|
+
assert_system_exit(0) do
|
172
|
+
p = parser
|
173
|
+
Trollop.with_standard_exception_handling(p) do
|
174
|
+
raise Trollop::HelpNeeded
|
175
|
+
end
|
176
|
+
end
|
177
|
+
end
|
178
|
+
end
|
179
|
+
|
180
|
+
def test_with_standard_exception_help_needed_flag
|
181
|
+
assert_stdout(/Options/) do
|
182
|
+
assert_system_exit(0) do
|
183
|
+
p = parser
|
184
|
+
Trollop.with_standard_exception_handling(p) do
|
185
|
+
p.parse(%w(-h))
|
186
|
+
end
|
187
|
+
end
|
188
|
+
end
|
189
|
+
end
|
190
|
+
end
|
data/trollop.gemspec
CHANGED
@@ -1,11 +1,10 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
lib = File.expand_path('../lib', __FILE__)
|
3
3
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
require 'trollop'
|
5
4
|
|
6
5
|
Gem::Specification.new do |spec|
|
7
6
|
spec.name = "trollop"
|
8
|
-
spec.version =
|
7
|
+
spec.version = "2.1.3"
|
9
8
|
spec.authors = ["William Morgan", "Keenan Brock"]
|
10
9
|
spec.email = "keenan@thebrocks.net"
|
11
10
|
spec.summary = "Trollop is a commandline option parser for Ruby that just gets out of your way."
|
@@ -20,13 +19,15 @@ specify."
|
|
20
19
|
spec.files = `git ls-files -z`.split("\x0")
|
21
20
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
22
21
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
22
|
+
spec.metadata = {
|
23
|
+
"changelog_uri" => "https://github.com/ManageIQ/trollop/blob/master/History.txt",
|
24
|
+
"source_code_uri" => "https://github.com/ManageIQ/trollop/",
|
25
|
+
"bug_tracker_uri" => "https://github.com/ManageIQ/trollop/issues",
|
26
|
+
}
|
23
27
|
|
24
28
|
spec.require_paths = ["lib"]
|
25
29
|
|
26
|
-
spec.add_development_dependency "minitest", "~> 4.
|
27
|
-
spec.add_development_dependency "bundler", "~> 1.6"
|
30
|
+
spec.add_development_dependency "minitest", "~> 5.4.3"
|
28
31
|
spec.add_development_dependency "rake", "~> 10.0"
|
29
32
|
spec.add_development_dependency "chronic"
|
30
|
-
spec.add_development_dependency "coveralls"
|
31
|
-
spec.add_development_dependency "mime-types"
|
32
33
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: trollop
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.1.
|
4
|
+
version: 2.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- William Morgan
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2018-07-11 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: minitest
|
@@ -17,28 +17,14 @@ dependencies:
|
|
17
17
|
requirements:
|
18
18
|
- - "~>"
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version: 4.
|
20
|
+
version: 5.4.3
|
21
21
|
type: :development
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
25
|
- - "~>"
|
26
26
|
- !ruby/object:Gem::Version
|
27
|
-
version: 4.
|
28
|
-
- !ruby/object:Gem::Dependency
|
29
|
-
name: bundler
|
30
|
-
requirement: !ruby/object:Gem::Requirement
|
31
|
-
requirements:
|
32
|
-
- - "~>"
|
33
|
-
- !ruby/object:Gem::Version
|
34
|
-
version: '1.6'
|
35
|
-
type: :development
|
36
|
-
prerelease: false
|
37
|
-
version_requirements: !ruby/object:Gem::Requirement
|
38
|
-
requirements:
|
39
|
-
- - "~>"
|
40
|
-
- !ruby/object:Gem::Version
|
41
|
-
version: '1.6'
|
27
|
+
version: 5.4.3
|
42
28
|
- !ruby/object:Gem::Dependency
|
43
29
|
name: rake
|
44
30
|
requirement: !ruby/object:Gem::Requirement
|
@@ -67,34 +53,6 @@ dependencies:
|
|
67
53
|
- - ">="
|
68
54
|
- !ruby/object:Gem::Version
|
69
55
|
version: '0'
|
70
|
-
- !ruby/object:Gem::Dependency
|
71
|
-
name: coveralls
|
72
|
-
requirement: !ruby/object:Gem::Requirement
|
73
|
-
requirements:
|
74
|
-
- - ">="
|
75
|
-
- !ruby/object:Gem::Version
|
76
|
-
version: '0'
|
77
|
-
type: :development
|
78
|
-
prerelease: false
|
79
|
-
version_requirements: !ruby/object:Gem::Requirement
|
80
|
-
requirements:
|
81
|
-
- - ">="
|
82
|
-
- !ruby/object:Gem::Version
|
83
|
-
version: '0'
|
84
|
-
- !ruby/object:Gem::Dependency
|
85
|
-
name: mime-types
|
86
|
-
requirement: !ruby/object:Gem::Requirement
|
87
|
-
requirements:
|
88
|
-
- - ">="
|
89
|
-
- !ruby/object:Gem::Version
|
90
|
-
version: '0'
|
91
|
-
type: :development
|
92
|
-
prerelease: false
|
93
|
-
version_requirements: !ruby/object:Gem::Requirement
|
94
|
-
requirements:
|
95
|
-
- - ">="
|
96
|
-
- !ruby/object:Gem::Version
|
97
|
-
version: '0'
|
98
56
|
description: |-
|
99
57
|
Trollop is a commandline option parser for Ruby that just
|
100
58
|
gets out of your way. One line of code per option is all you need to write.
|
@@ -116,13 +74,24 @@ files:
|
|
116
74
|
- Rakefile
|
117
75
|
- lib/trollop.rb
|
118
76
|
- release-script.txt
|
77
|
+
- test/support/assert_helpers.rb
|
119
78
|
- test/test_helper.rb
|
120
|
-
- test/
|
79
|
+
- test/trollop/command_line_error_test.rb
|
80
|
+
- test/trollop/help_needed_test.rb
|
81
|
+
- test/trollop/parser_educate_test.rb
|
82
|
+
- test/trollop/parser_opt_test.rb
|
83
|
+
- test/trollop/parser_parse_test.rb
|
84
|
+
- test/trollop/parser_test.rb
|
85
|
+
- test/trollop/version_needed_test.rb
|
86
|
+
- test/trollop_test.rb
|
121
87
|
- trollop.gemspec
|
122
88
|
homepage: http://manageiq.github.io/trollop/
|
123
89
|
licenses:
|
124
90
|
- MIT
|
125
|
-
metadata:
|
91
|
+
metadata:
|
92
|
+
changelog_uri: https://github.com/ManageIQ/trollop/blob/master/History.txt
|
93
|
+
source_code_uri: https://github.com/ManageIQ/trollop/
|
94
|
+
bug_tracker_uri: https://github.com/ManageIQ/trollop/issues
|
126
95
|
post_install_message:
|
127
96
|
rdoc_options: []
|
128
97
|
require_paths:
|
@@ -139,11 +108,19 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
139
108
|
version: '0'
|
140
109
|
requirements: []
|
141
110
|
rubyforge_project:
|
142
|
-
rubygems_version: 2.
|
111
|
+
rubygems_version: 2.6.13
|
143
112
|
signing_key:
|
144
113
|
specification_version: 4
|
145
114
|
summary: Trollop is a commandline option parser for Ruby that just gets out of your
|
146
115
|
way.
|
147
116
|
test_files:
|
117
|
+
- test/support/assert_helpers.rb
|
148
118
|
- test/test_helper.rb
|
149
|
-
- test/
|
119
|
+
- test/trollop/command_line_error_test.rb
|
120
|
+
- test/trollop/help_needed_test.rb
|
121
|
+
- test/trollop/parser_educate_test.rb
|
122
|
+
- test/trollop/parser_opt_test.rb
|
123
|
+
- test/trollop/parser_parse_test.rb
|
124
|
+
- test/trollop/parser_test.rb
|
125
|
+
- test/trollop/version_needed_test.rb
|
126
|
+
- test/trollop_test.rb
|