hammer_cli 0.15.1 → 0.16.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/doc/commands_modification.md +82 -0
- data/doc/creating_commands.md +78 -38
- data/doc/developer_docs.md +2 -0
- data/doc/help_modification.md +119 -0
- data/doc/i18n.md +2 -2
- data/doc/installation_rpm.md +3 -3
- data/doc/release_notes.md +9 -1
- data/lib/hammer_cli.rb +0 -1
- data/lib/hammer_cli/abstract.rb +44 -13
- data/lib/hammer_cli/exception_handler.rb +1 -1
- data/lib/hammer_cli/help/definition.rb +55 -0
- data/lib/hammer_cli/help/definition/abstract_item.rb +38 -0
- data/lib/hammer_cli/help/definition/list.rb +53 -0
- data/lib/hammer_cli/help/definition/section.rb +36 -0
- data/lib/hammer_cli/help/definition/text.rb +21 -0
- data/lib/hammer_cli/help/text_builder.rb +26 -49
- data/lib/hammer_cli/i18n.rb +0 -1
- data/lib/hammer_cli/options/option_collector.rb +12 -9
- data/lib/hammer_cli/options/option_processor.rb +17 -0
- data/lib/hammer_cli/options/processor_list.rb +37 -0
- data/lib/hammer_cli/options/sources/base.rb +17 -0
- data/lib/hammer_cli/options/sources/command_line.rb +3 -1
- data/lib/hammer_cli/options/sources/saved_defaults.rb +3 -1
- data/lib/hammer_cli/options/validators/base.rb +20 -0
- data/lib/hammer_cli/options/validators/dsl.rb +160 -0
- data/lib/hammer_cli/options/validators/dsl_block_validator.rb +19 -0
- data/lib/hammer_cli/output/adapter/csv.rb +11 -11
- data/lib/hammer_cli/output/adapter/tree_structure.rb +5 -3
- data/lib/hammer_cli/output/definition.rb +42 -4
- data/lib/hammer_cli/output/dsl.rb +4 -2
- data/lib/hammer_cli/output/fields.rb +9 -2
- data/lib/hammer_cli/testing/messages.rb +6 -6
- data/lib/hammer_cli/utils.rb +15 -0
- data/lib/hammer_cli/version.rb +1 -1
- data/locale/ca/LC_MESSAGES/hammer-cli.mo +0 -0
- data/locale/de/LC_MESSAGES/hammer-cli.mo +0 -0
- data/locale/en/LC_MESSAGES/hammer-cli.mo +0 -0
- data/locale/en_GB/LC_MESSAGES/hammer-cli.mo +0 -0
- data/locale/es/LC_MESSAGES/hammer-cli.mo +0 -0
- data/locale/fr/LC_MESSAGES/hammer-cli.mo +0 -0
- data/locale/it/LC_MESSAGES/hammer-cli.mo +0 -0
- data/locale/ja/LC_MESSAGES/hammer-cli.mo +0 -0
- data/locale/ko/LC_MESSAGES/hammer-cli.mo +0 -0
- data/locale/pt_BR/LC_MESSAGES/hammer-cli.mo +0 -0
- data/locale/ru/LC_MESSAGES/hammer-cli.mo +0 -0
- data/locale/zh_CN/LC_MESSAGES/hammer-cli.mo +0 -0
- data/locale/zh_TW/LC_MESSAGES/hammer-cli.mo +0 -0
- data/test/unit/abstract_test.rb +70 -5
- data/test/unit/exception_handler_test.rb +1 -1
- data/test/unit/help/definition/abstract_item_test.rb +33 -0
- data/test/unit/help/definition/list_test.rb +17 -0
- data/test/unit/help/definition/section_test.rb +25 -0
- data/test/unit/help/definition/text_test.rb +11 -0
- data/test/unit/help/definition_test.rb +236 -0
- data/test/unit/help/text_builder_test.rb +170 -1
- data/test/unit/options/option_collector_test.rb +18 -9
- data/test/unit/options/processor_list_test.rb +70 -0
- data/test/unit/{validator_test.rb → options/validators/dsl_test.rb} +57 -93
- data/test/unit/output/adapter/abstract_test.rb +3 -0
- data/test/unit/output/adapter/base_test.rb +5 -0
- data/test/unit/output/adapter/csv_test.rb +3 -0
- data/test/unit/output/adapter/json_test.rb +12 -0
- data/test/unit/output/adapter/table_test.rb +5 -0
- data/test/unit/output/adapter/yaml_test.rb +11 -0
- data/test/unit/output/definition_test.rb +221 -1
- data/test/unit/utils_test.rb +23 -0
- metadata +31 -5
- data/lib/hammer_cli/validator.rb +0 -172
@@ -2,17 +2,17 @@ require_relative '../test_helper'
|
|
2
2
|
|
3
3
|
describe HammerCLI::Options::OptionCollector do
|
4
4
|
before do
|
5
|
-
recognised_options = [mock, mock]
|
6
|
-
source1_result = {:option1 => 1, :option2 => nil, :option4 => HammerCLI::NilValue}
|
7
|
-
source2_result = source1_result.merge({:option3 => 3})
|
5
|
+
@recognised_options = [mock('Option1'), mock('Option2')]
|
6
|
+
@source1_result = {:option1 => 1, :option2 => nil, :option4 => HammerCLI::NilValue}
|
7
|
+
@source2_result = @source1_result.merge({:option3 => 3})
|
8
8
|
|
9
|
-
source1 = mock
|
10
|
-
source1.expects(:
|
9
|
+
@source1 = mock('Source1')
|
10
|
+
@source1.expects(:process).with(@recognised_options, {}).returns(@source1_result)
|
11
11
|
|
12
|
-
source2 = mock
|
13
|
-
source2.expects(:
|
12
|
+
@source2 = mock('Source2')
|
13
|
+
@source2.expects(:process).with(@recognised_options, @source1_result).returns(@source2_result)
|
14
14
|
|
15
|
-
@collector = HammerCLI::Options::OptionCollector.new(recognised_options, [source1, source2])
|
15
|
+
@collector = HammerCLI::Options::OptionCollector.new(@recognised_options, [@source1, @source2])
|
16
16
|
end
|
17
17
|
|
18
18
|
describe '#options' do
|
@@ -26,10 +26,19 @@ describe HammerCLI::Options::OptionCollector do
|
|
26
26
|
assert_equal({:option1 => 1, :option2 => nil, :option3 => 3, :option4 => nil}, @collector.all_options)
|
27
27
|
end
|
28
28
|
end
|
29
|
-
|
29
|
+
|
30
30
|
describe '#all_options_raw' do
|
31
31
|
it 'returns all options with NIL values untranslated' do
|
32
32
|
assert_equal({:option1 => 1, :option2 => nil, :option3 => 3, :option4 => HammerCLI::NilValue}, @collector.all_options_raw)
|
33
33
|
end
|
34
|
+
|
35
|
+
it 'can process validations' do
|
36
|
+
validator = mock('Validator')
|
37
|
+
validator.expects(:process).with(@recognised_options, @source1_result).returns(@source1_result)
|
38
|
+
|
39
|
+
collector = HammerCLI::Options::OptionCollector.new(@recognised_options, [@source1, validator, @source2])
|
40
|
+
|
41
|
+
assert_equal({:option1 => 1, :option2 => nil, :option3 => 3, :option4 => HammerCLI::NilValue}, collector.all_options_raw)
|
42
|
+
end
|
34
43
|
end
|
35
44
|
end
|
@@ -0,0 +1,70 @@
|
|
1
|
+
require_relative '../test_helper'
|
2
|
+
|
3
|
+
describe HammerCLI::Options::ProcessorList do
|
4
|
+
let(:processor1) { stub('Processor1', :name => 'P1') }
|
5
|
+
let(:processor2) { stub('Processor2', :name => 'P2') }
|
6
|
+
let(:processor3) { stub('Processor3', :name => 'P3') }
|
7
|
+
let(:new_processor) { stub('NewProcessor', :name => 'NewP') }
|
8
|
+
|
9
|
+
let(:pl) { HammerCLI::Options::ProcessorList.new([processor1, processor2, processor3], name: 'TheProcessor') }
|
10
|
+
|
11
|
+
describe '#name' do
|
12
|
+
it 'returns the given name' do
|
13
|
+
assert_equal 'TheProcessor', pl.name
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
describe '#insert_relative' do
|
18
|
+
it 'appends' do
|
19
|
+
pl.insert_relative(:append, nil, new_processor)
|
20
|
+
assert_equal pl.map(&:name), ['P1', 'P2', 'P3', 'NewP']
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'prepends' do
|
24
|
+
pl.insert_relative(:prepend, nil, new_processor)
|
25
|
+
assert_equal pl.map(&:name), ['NewP', 'P1', 'P2', 'P3']
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'inserts after' do
|
29
|
+
pl.insert_relative(:after, 'P2', new_processor)
|
30
|
+
assert_equal pl.map(&:name), ['P1', 'P2', 'NewP', 'P3']
|
31
|
+
end
|
32
|
+
|
33
|
+
it 'inserts before' do
|
34
|
+
pl.insert_relative(:before, 'P2', new_processor)
|
35
|
+
assert_equal pl.map(&:name), ['P1', 'NewP', 'P2', 'P3']
|
36
|
+
end
|
37
|
+
|
38
|
+
it 'raises an exception when the processor was not found' do
|
39
|
+
ex = assert_raises ArgumentError do
|
40
|
+
pl.insert_relative(:before, 'Unknown', new_processor)
|
41
|
+
end
|
42
|
+
assert_equal "Option processor 'Unknown' not found", ex.message
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
describe '#find_by_name' do
|
47
|
+
it 'finds a processor' do
|
48
|
+
assert_equal processor2, pl.find_by_name('P2')
|
49
|
+
end
|
50
|
+
|
51
|
+
it 'raises an exception when the processor was not found' do
|
52
|
+
ex = assert_raises ArgumentError do
|
53
|
+
pl.find_by_name('Unknown')
|
54
|
+
end
|
55
|
+
assert_equal "Option processor 'Unknown' not found", ex.message
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
describe '#process' do
|
60
|
+
it 'calls all processors' do
|
61
|
+
defined_options = []
|
62
|
+
pl[0].expects(:process).with(defined_options, { :initial => 0 }).returns({ :initial => 0, :p1 => 1 })
|
63
|
+
pl[1].expects(:process).with(defined_options, { :initial => 0, :p1 => 1 }).returns({ :p2 => 2 })
|
64
|
+
pl[2].expects(:process).with(defined_options, { :p2 => 2 }).returns({ :p3 => 3 })
|
65
|
+
|
66
|
+
result = pl.process(defined_options, { :initial => 0 })
|
67
|
+
assert_equal({ :p3 => 3 }, result)
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
@@ -1,61 +1,50 @@
|
|
1
|
-
require
|
1
|
+
require 'hammer_cli/options/validators/dsl_block_validator'
|
2
|
+
require_relative '../../test_helper'
|
2
3
|
|
3
4
|
describe "constraints" do
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
@option_a = 1
|
12
|
-
@option_b = 1
|
13
|
-
@option_c = 1
|
14
|
-
@option_unset_d = nil
|
15
|
-
@option_unset_e = nil
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
let(:cmd) {
|
20
|
-
FakeCmd.new
|
21
|
-
}
|
5
|
+
let(:option_values) {{
|
6
|
+
:option_a => 1,
|
7
|
+
:option_b => 1,
|
8
|
+
'option_c' => 1,
|
9
|
+
:option_unset_d => nil,
|
10
|
+
:option_unset_e => nil
|
11
|
+
}}
|
22
12
|
|
23
13
|
let(:option_names) { ["a", "b", "c", "unset-d", "unset-e", "default"] }
|
24
|
-
let(:
|
14
|
+
let(:options) {
|
25
15
|
option_names.collect{ |n| Clamp::Option::Definition.new(["-"+n, "--option-"+n], n.upcase, "Option "+n.upcase) }
|
26
16
|
}
|
27
|
-
let(:options) { options_def.collect{|d| d.of(cmd) } }
|
28
17
|
|
29
|
-
describe HammerCLI::
|
18
|
+
describe HammerCLI::Options::Validators::DSL::BaseConstraint do
|
30
19
|
|
31
|
-
let(:cls) { HammerCLI::
|
20
|
+
let(:cls) { HammerCLI::Options::Validators::DSL::BaseConstraint }
|
32
21
|
|
33
22
|
describe "exist?" do
|
34
23
|
it "throws not implemented error" do
|
35
|
-
constraint = cls.new(options, [:option_a, :option_b, :option_c])
|
24
|
+
constraint = cls.new(options, option_values, [:option_a, :option_b, :option_c])
|
36
25
|
proc{ constraint.exist? }.must_raise NotImplementedError
|
37
26
|
end
|
38
27
|
end
|
39
28
|
|
40
29
|
describe "rejected" do
|
41
30
|
it "should raise exception when exist? returns true" do
|
42
|
-
constraint = cls.new(options, [])
|
31
|
+
constraint = cls.new(options, option_values, [])
|
43
32
|
constraint.stubs(:exist?).returns(true)
|
44
|
-
proc{ constraint.rejected }.must_raise HammerCLI::
|
33
|
+
proc{ constraint.rejected }.must_raise HammerCLI::Options::Validators::ValidationError
|
45
34
|
end
|
46
35
|
|
47
36
|
it "should raise exception with a message" do
|
48
|
-
constraint = cls.new(options, [])
|
37
|
+
constraint = cls.new(options, option_values, [])
|
49
38
|
constraint.stubs(:exist?).returns(true)
|
50
39
|
begin
|
51
40
|
constraint.rejected :msg => "CUSTOM MESSAGE"
|
52
|
-
rescue HammerCLI::
|
41
|
+
rescue HammerCLI::Options::Validators::ValidationError => e
|
53
42
|
e.message.must_equal "CUSTOM MESSAGE"
|
54
43
|
end
|
55
44
|
end
|
56
45
|
|
57
46
|
it "should return nil when exist? returns true" do
|
58
|
-
constraint = cls.new(options, [])
|
47
|
+
constraint = cls.new(options, option_values, [])
|
59
48
|
constraint.stubs(:exist?).returns(false)
|
60
49
|
constraint.rejected.must_equal nil
|
61
50
|
end
|
@@ -63,23 +52,23 @@ describe "constraints" do
|
|
63
52
|
|
64
53
|
describe "required" do
|
65
54
|
it "should raise exception when exist? returns true" do
|
66
|
-
constraint = cls.new(options, [])
|
55
|
+
constraint = cls.new(options, option_values, [])
|
67
56
|
constraint.stubs(:exist?).returns(false)
|
68
|
-
proc{ constraint.required }.must_raise HammerCLI::
|
57
|
+
proc{ constraint.required }.must_raise HammerCLI::Options::Validators::ValidationError
|
69
58
|
end
|
70
59
|
|
71
60
|
it "should raise exception with a message" do
|
72
|
-
constraint = cls.new(options, [])
|
61
|
+
constraint = cls.new(options, option_values, [])
|
73
62
|
constraint.stubs(:exist?).returns(false)
|
74
63
|
begin
|
75
64
|
constraint.rejected :msg => "CUSTOM MESSAGE"
|
76
|
-
rescue HammerCLI::
|
65
|
+
rescue HammerCLI::Options::Validators::ValidationError => e
|
77
66
|
e.message.must_equal "CUSTOM MESSAGE"
|
78
67
|
end
|
79
68
|
end
|
80
69
|
|
81
70
|
it "should return nil when exist? returns true" do
|
82
|
-
constraint = cls.new(options, [])
|
71
|
+
constraint = cls.new(options, option_values, [])
|
83
72
|
constraint.stubs(:exist?).returns(true)
|
84
73
|
constraint.required.must_equal nil
|
85
74
|
end
|
@@ -87,162 +76,137 @@ describe "constraints" do
|
|
87
76
|
|
88
77
|
end
|
89
78
|
|
90
|
-
describe HammerCLI::
|
79
|
+
describe HammerCLI::Options::Validators::DSL::AllConstraint do
|
91
80
|
|
92
|
-
let(:cls) { HammerCLI::
|
81
|
+
let(:cls) { HammerCLI::Options::Validators::DSL::AllConstraint }
|
93
82
|
|
94
83
|
describe "exist?" do
|
95
84
|
|
96
85
|
it "should return true when no options are passed" do
|
97
|
-
constraint = cls.new(options, [])
|
86
|
+
constraint = cls.new(options, option_values, [])
|
98
87
|
constraint.exist?.must_equal true
|
99
88
|
end
|
100
89
|
|
101
90
|
it "should return true when all the options exist" do
|
102
|
-
constraint = cls.new(options, [:option_a, :option_b, :option_c])
|
103
|
-
constraint.exist?.must_equal true
|
104
|
-
end
|
105
|
-
|
106
|
-
it "should return true when all the options exist or are set in the defaults" do
|
107
|
-
constraint = cls.new(options, [:option_a, :option_b, :option_c, :option_default])
|
91
|
+
constraint = cls.new(options, option_values, [:option_a, :option_b, :option_c])
|
108
92
|
constraint.exist?.must_equal true
|
109
93
|
end
|
110
94
|
|
111
95
|
it "should return false when one of the options is missing" do
|
112
|
-
constraint = cls.new(options, [:option_a, :option_b, :option_c, :option_unset_d])
|
96
|
+
constraint = cls.new(options, option_values, [:option_a, :option_b, :option_c, :option_unset_d])
|
113
97
|
constraint.exist?.must_equal false
|
114
98
|
end
|
115
99
|
end
|
116
100
|
|
117
101
|
end
|
118
102
|
|
119
|
-
describe HammerCLI::
|
120
|
-
let(:cls) { HammerCLI::
|
103
|
+
describe HammerCLI::Options::Validators::DSL::OneOptionConstraint do
|
104
|
+
let(:cls) { HammerCLI::Options::Validators::DSL::OneOptionConstraint }
|
121
105
|
|
122
106
|
describe "exist?" do
|
123
107
|
it "should return true when the option exist" do
|
124
|
-
constraint = cls.new(options, :option_a)
|
125
|
-
constraint.exist?.must_equal true
|
126
|
-
end
|
127
|
-
|
128
|
-
it "should return true when the option is set in the defaults" do
|
129
|
-
constraint = cls.new(options, :option_default)
|
108
|
+
constraint = cls.new(options, option_values, :option_a)
|
130
109
|
constraint.exist?.must_equal true
|
131
110
|
end
|
132
111
|
|
133
112
|
it "should return false when the option is missing" do
|
134
|
-
constraint = cls.new(options, :option_unset_d)
|
113
|
+
constraint = cls.new(options, option_values, :option_unset_d)
|
135
114
|
constraint.exist?.must_equal false
|
136
115
|
end
|
137
116
|
end
|
138
117
|
|
139
118
|
describe "#rejected" do
|
140
119
|
it "returns nil when the option is missing" do
|
141
|
-
constraint = cls.new(options, :option_unset_d)
|
120
|
+
constraint = cls.new(options, option_values, :option_unset_d)
|
142
121
|
constraint.rejected.must_equal nil
|
143
122
|
end
|
144
123
|
|
145
124
|
it "raises exception when the option is present" do
|
146
|
-
constraint = cls.new(options, :option_a)
|
147
|
-
e = proc{ constraint.rejected }.must_raise HammerCLI::
|
125
|
+
constraint = cls.new(options, option_values, :option_a)
|
126
|
+
e = proc{ constraint.rejected }.must_raise HammerCLI::Options::Validators::ValidationError
|
148
127
|
e.message.must_equal "You can't set option --option-a."
|
149
128
|
end
|
150
129
|
end
|
151
130
|
|
152
131
|
describe "#required" do
|
153
132
|
it "returns nil when the option exist" do
|
154
|
-
constraint = cls.new(options, :option_a)
|
133
|
+
constraint = cls.new(options, option_values, :option_a)
|
155
134
|
constraint.required.must_equal nil
|
156
135
|
end
|
157
136
|
|
158
137
|
it "raises exception when the option is present" do
|
159
|
-
constraint = cls.new(options, :option_unset_d)
|
160
|
-
e = proc{ constraint.required }.must_raise HammerCLI::
|
138
|
+
constraint = cls.new(options, option_values, :option_unset_d)
|
139
|
+
e = proc{ constraint.required }.must_raise HammerCLI::Options::Validators::ValidationError
|
161
140
|
e.message.must_equal 'Option --option-unset-d is required.'
|
162
141
|
end
|
163
142
|
end
|
164
143
|
|
165
144
|
describe "#value" do
|
166
145
|
it "returns value of the option" do
|
167
|
-
constraint = cls.new(options, :option_a)
|
146
|
+
constraint = cls.new(options, option_values, :option_a)
|
168
147
|
constraint.value.must_equal 1
|
169
148
|
end
|
170
149
|
|
171
|
-
it "returns value of the option defined in the defaults" do
|
172
|
-
constraint = cls.new(options, :option_default)
|
173
|
-
constraint.value.must_equal 2
|
174
|
-
end
|
175
|
-
|
176
150
|
it "returns nil when the option is missing" do
|
177
|
-
constraint = cls.new(options, :option_unset_d)
|
151
|
+
constraint = cls.new(options, option_values, :option_unset_d)
|
178
152
|
constraint.value.must_equal nil
|
179
153
|
end
|
180
154
|
end
|
181
155
|
end
|
182
156
|
|
183
|
-
describe HammerCLI::
|
157
|
+
describe HammerCLI::Options::Validators::DSL::AnyConstraint do
|
184
158
|
|
185
|
-
let(:cls) { HammerCLI::
|
159
|
+
let(:cls) { HammerCLI::Options::Validators::DSL::AnyConstraint }
|
186
160
|
|
187
161
|
describe "exist?" do
|
188
162
|
|
189
163
|
it "should return true when no options are passed" do
|
190
|
-
constraint = cls.new(options, [])
|
164
|
+
constraint = cls.new(options, option_values, [])
|
191
165
|
constraint.exist?.must_equal true
|
192
166
|
end
|
193
167
|
|
194
168
|
it "should return true when one of the options exist" do
|
195
|
-
constraint = cls.new(options, [:option_a, :option_unset_d, :option_unset_e])
|
196
|
-
constraint.exist?.must_equal true
|
197
|
-
end
|
198
|
-
|
199
|
-
it "should return true when one of the options exist and is set in the defaults" do
|
200
|
-
constraint = cls.new(options, [:option_default, :option_unset_d, :option_unset_e])
|
169
|
+
constraint = cls.new(options, option_values, [:option_a, :option_unset_d, :option_unset_e])
|
201
170
|
constraint.exist?.must_equal true
|
202
171
|
end
|
203
172
|
|
204
173
|
it "should return false when all the options are missing" do
|
205
|
-
constraint = cls.new(options, [:option_unset_d, :option_unset_e])
|
174
|
+
constraint = cls.new(options, option_values, [:option_unset_d, :option_unset_e])
|
206
175
|
constraint.exist?.must_equal false
|
207
176
|
end
|
208
177
|
end
|
209
178
|
|
210
179
|
end
|
211
180
|
|
212
|
-
describe HammerCLI::
|
181
|
+
describe HammerCLI::Options::Validators::DSL::OneOfConstraint do
|
213
182
|
|
214
|
-
let(:cls) { HammerCLI::
|
183
|
+
let(:cls) { HammerCLI::Options::Validators::DSL::OneOfConstraint }
|
215
184
|
|
216
185
|
it "raises exception when nothing to check is set" do
|
217
|
-
e = proc{ cls.new(options, []) }.must_raise RuntimeError
|
186
|
+
e = proc{ cls.new(options, option_values, []) }.must_raise RuntimeError
|
218
187
|
e.message.must_equal 'Set at least one expected option'
|
219
188
|
end
|
220
189
|
|
221
190
|
describe "#exist?" do
|
222
191
|
it "should return true when one of the options exist" do
|
223
|
-
constraint = cls.new(options, [:option_a, :option_unset_d, :option_unset_e])
|
224
|
-
constraint.exist?.must_equal true
|
225
|
-
end
|
226
|
-
|
227
|
-
it "should return true when one of the options exist and is set in the defaults" do
|
228
|
-
constraint = cls.new(options, [:option_default, :option_unset_d, :option_unset_e])
|
192
|
+
constraint = cls.new(options, option_values, [:option_a, :option_unset_d, :option_unset_e])
|
229
193
|
constraint.exist?.must_equal true
|
230
194
|
end
|
231
195
|
|
232
196
|
it "should return false when the option isn't present" do
|
233
|
-
constraint = cls.new(options, [:option_unset_d, :option_unset_e])
|
197
|
+
constraint = cls.new(options, option_values, [:option_unset_d, :option_unset_e])
|
234
198
|
constraint.exist?.must_equal false
|
235
199
|
end
|
236
200
|
|
237
201
|
it "should return false when more than one of the options is present" do
|
238
|
-
constraint = cls.new(options, [:option_a, :option_b])
|
202
|
+
constraint = cls.new(options, option_values, [:option_a, :option_b])
|
239
203
|
constraint.exist?.must_equal false
|
240
204
|
end
|
241
205
|
end
|
242
206
|
|
243
207
|
describe "#rejected" do
|
244
208
|
it "raises not implemented exception" do
|
245
|
-
constraint = cls.new(options, [:option_a, :option_unset_d])
|
209
|
+
constraint = cls.new(options, option_values, [:option_a, :option_unset_d])
|
246
210
|
e = proc{ constraint.rejected }.must_raise NotImplementedError
|
247
211
|
e.message.must_equal '#rejected is unsupported for OneOfConstraint'
|
248
212
|
end
|
@@ -250,19 +214,19 @@ describe "constraints" do
|
|
250
214
|
|
251
215
|
describe "#required" do
|
252
216
|
it "returns nil when one of the options exist" do
|
253
|
-
constraint = cls.new(options, [:option_a, :option_unset_d, :option_unset_e])
|
217
|
+
constraint = cls.new(options, option_values, [:option_a, :option_unset_d, :option_unset_e])
|
254
218
|
constraint.required.must_equal nil
|
255
219
|
end
|
256
220
|
|
257
221
|
it "raises exception when none of the options is present" do
|
258
|
-
constraint = cls.new(options, [:option_unset_d, :option_unset_e])
|
259
|
-
e = proc{ constraint.required }.must_raise HammerCLI::
|
222
|
+
constraint = cls.new(options, option_values, [:option_unset_d, :option_unset_e])
|
223
|
+
e = proc{ constraint.required }.must_raise HammerCLI::Options::Validators::ValidationError
|
260
224
|
e.message.must_equal 'One of options --option-unset-d, --option-unset-e is required.'
|
261
225
|
end
|
262
226
|
|
263
227
|
it "raises exception when more than one of the options is present" do
|
264
|
-
constraint = cls.new(options, [:option_a, :option_b])
|
265
|
-
e = proc{ constraint.required }.must_raise HammerCLI::
|
228
|
+
constraint = cls.new(options, option_values, [:option_a, :option_b])
|
229
|
+
e = proc{ constraint.required }.must_raise HammerCLI::Options::Validators::ValidationError
|
266
230
|
e.message.must_equal 'Only one of options --option-a, --option-b can be set.'
|
267
231
|
end
|
268
232
|
end
|
@@ -59,6 +59,9 @@ describe HammerCLI::Output::Adapter::Abstract do
|
|
59
59
|
proc { adapter.print_message("MESSAGE %{a}, %{b}", :a => 'A', :b => 'B') }.must_output(/.*MESSAGE A, B.*/, "")
|
60
60
|
end
|
61
61
|
|
62
|
+
it 'should print message with nil params' do
|
63
|
+
proc { adapter.print_message('MESSAGE', nil) }.must_output(/.*MESSAGE.*/, '')
|
64
|
+
end
|
62
65
|
end
|
63
66
|
|
64
67
|
it "should raise not implemented on print_collection" do
|