libclimate-ruby 0.13.0 → 0.14.0
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/examples/flag_and_option_specifications.from_DATA.md +225 -0
- data/examples/flag_and_option_specifications.from_DATA.rb +11 -10
- data/examples/flag_and_option_specifications.md +1 -1
- data/lib/libclimate/climate.rb +43 -8
- data/lib/libclimate/version.rb +2 -2
- data/test/unit/tc_abort.rb +12 -12
- data/test/unit/tc_minimal.rb +94 -68
- data/test/unit/tc_minimal_CLASP.rb +44 -46
- data/test/unit/tc_test_specifications.rb +4 -4
- data/test/unit/tc_values.rb +81 -25
- data/test/unit/tc_with_blocks.rb +4 -4
- data/test/unit/tc_with_blocks_CLASP.rb +4 -4
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f003cbc8499db9924001bc35c3c5312de4e6423151d9acfaa8e835e0f7f331f3
|
4
|
+
data.tar.gz: 65e7371f5ded01f26074bad1413f329abd8c62237556162cef5ca0e9397deb9d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 52fc0d2b96d707bedb7e12643e0cfc1d9a3724003f7454c8b64bc573b1704360fe8ce366bca0388411957f0420e777629e8e631038c3b6524aebaa2af92cfd9a
|
7
|
+
data.tar.gz: 5909f06e2b6ad0ca47e3da8d141382e20c93f17f80d2b8ea397364c9c0ebf7159e510373de0ed2a743ece65ae6a78202e9fed8c261f8fdbc692a044876f89f04
|
@@ -0,0 +1,225 @@
|
|
1
|
+
# libCLImate.Ruby Example - **flag_and_option_specifications.from_DATA**
|
2
|
+
|
3
|
+
## Summary
|
4
|
+
|
5
|
+
Example illustrating various kinds of *flag* and *option* specifications, including the combination of short-names, loaded from the ``__END__``/``DATA`` section of the program file in **YAML** form.
|
6
|
+
|
7
|
+
## Source
|
8
|
+
|
9
|
+
```ruby
|
10
|
+
#!/usr/bin/env ruby
|
11
|
+
|
12
|
+
# examples/flag_and_option_specifications.from_DATA.rb
|
13
|
+
|
14
|
+
|
15
|
+
# requires
|
16
|
+
|
17
|
+
require 'libclimate'
|
18
|
+
|
19
|
+
|
20
|
+
# Specify aliases, parse, and checking standard flags
|
21
|
+
|
22
|
+
options = {}
|
23
|
+
climate = LibCLImate::Climate.load DATA do |cl|
|
24
|
+
|
25
|
+
cl.on_flag('--debug') { options[:debug] = true }
|
26
|
+
|
27
|
+
cl.on_option('--verbosity') { |o, a| options[:verbosity] = o.value }
|
28
|
+
end
|
29
|
+
|
30
|
+
r = climate.run ARGV
|
31
|
+
|
32
|
+
|
33
|
+
# Program-specific processing of flags/options
|
34
|
+
|
35
|
+
if options[:verbosity]
|
36
|
+
|
37
|
+
$stdout.puts "verbosity is specified as: #{options[:verbosity]}"
|
38
|
+
end
|
39
|
+
|
40
|
+
if options[:debug]
|
41
|
+
|
42
|
+
$stdout.puts 'Debug mode is specified'
|
43
|
+
end
|
44
|
+
|
45
|
+
|
46
|
+
# some notional output
|
47
|
+
|
48
|
+
$stdout.puts "processing in '#{r.values[0]}'" + (r.values.size > 1 ? " and '#{r.values[1]}'" : '')
|
49
|
+
|
50
|
+
|
51
|
+
__END__
|
52
|
+
---
|
53
|
+
libclimate:
|
54
|
+
clasp:
|
55
|
+
specifications:
|
56
|
+
- flag:
|
57
|
+
name: --debug
|
58
|
+
alias: -d
|
59
|
+
help: runs in Debug mode
|
60
|
+
required: false
|
61
|
+
- option:
|
62
|
+
name: --verbosity
|
63
|
+
alias: -v
|
64
|
+
help: specifies the verbosity
|
65
|
+
values:
|
66
|
+
- silent
|
67
|
+
- quiet
|
68
|
+
- terse
|
69
|
+
- chatty
|
70
|
+
- verbose
|
71
|
+
- alias:
|
72
|
+
resolved: --verbosity=chatty
|
73
|
+
aliases:
|
74
|
+
- --chatty
|
75
|
+
- -c
|
76
|
+
constrain_values: !ruby/range 1..2
|
77
|
+
exit_on_missing: true
|
78
|
+
flags_and_options: "[... flags/options ...]"
|
79
|
+
usage_values: "<dir-1> [ <dir-2> ]"
|
80
|
+
value_names:
|
81
|
+
- first directory
|
82
|
+
- second directory
|
83
|
+
info_lines:
|
84
|
+
- libCLImate.Ruby examples
|
85
|
+
- :version
|
86
|
+
- Illustrates use of libCLImate.Ruby's specification of flags, options, and aliases, from DATA
|
87
|
+
-
|
88
|
+
version:
|
89
|
+
- 0
|
90
|
+
- 1
|
91
|
+
- "2"
|
92
|
+
```
|
93
|
+
```ruby
|
94
|
+
```
|
95
|
+
|
96
|
+
## Usage
|
97
|
+
|
98
|
+
NOTE: in order to demonstrate fully the utility of the *loading-from-source-file-YAML* facility, I've added a constraint for 1-2 values - notionally directories -
|
99
|
+
|
100
|
+
### No arguments
|
101
|
+
|
102
|
+
If executed with no arguments
|
103
|
+
|
104
|
+
```
|
105
|
+
ruby examples/flag_and_option_specifications.from_DATA.rb
|
106
|
+
```
|
107
|
+
|
108
|
+
or (in a Unix shell):
|
109
|
+
|
110
|
+
```
|
111
|
+
./examples/flag_and_option_specifications.from_DATA.rb
|
112
|
+
```
|
113
|
+
|
114
|
+
it gives the output (with an exit code of **1**):
|
115
|
+
|
116
|
+
```
|
117
|
+
flag_and_option_specifications.from_DATA(.rb): first directory not specified; use --help for usage
|
118
|
+
```
|
119
|
+
|
120
|
+
|
121
|
+
### Show usage
|
122
|
+
|
123
|
+
If executed with the arguments
|
124
|
+
|
125
|
+
```
|
126
|
+
ruby examples/flag_and_option_specifications.from_DATA.rb --help
|
127
|
+
```
|
128
|
+
|
129
|
+
it gives the output:
|
130
|
+
|
131
|
+
```
|
132
|
+
libCLImate.Ruby examples
|
133
|
+
flag_and_option_specifications.from_DATA(.rb) 0.1.2
|
134
|
+
Illustrates use of libCLImate.Ruby's specification of flags, options, and aliases, from DATA
|
135
|
+
|
136
|
+
USAGE: flag_and_option_specifications.from_DATA(.rb) [... flags/options ...] <dir-1> [ <dir-2> ]
|
137
|
+
|
138
|
+
flags/options:
|
139
|
+
|
140
|
+
--help
|
141
|
+
shows this help and terminates
|
142
|
+
|
143
|
+
--version
|
144
|
+
shows version and terminates
|
145
|
+
|
146
|
+
-d
|
147
|
+
--debug
|
148
|
+
runs in Debug mode
|
149
|
+
|
150
|
+
--chatty --verbosity=chatty
|
151
|
+
-c --verbosity=chatty
|
152
|
+
--verbosity=<value>
|
153
|
+
specifies the verbosity
|
154
|
+
where <value> one of:
|
155
|
+
silent
|
156
|
+
quiet
|
157
|
+
terse
|
158
|
+
chatty
|
159
|
+
verbose
|
160
|
+
|
161
|
+
```
|
162
|
+
|
163
|
+
### Specify flags and options in long-form
|
164
|
+
|
165
|
+
If executed with the arguments
|
166
|
+
|
167
|
+
```
|
168
|
+
ruby examples/flag_and_option_specifications.from_DATA.rb dir-1 dir-2 --debug --verbosity=silent
|
169
|
+
```
|
170
|
+
|
171
|
+
it gives the output:
|
172
|
+
|
173
|
+
```
|
174
|
+
verbosity is specified as: silent
|
175
|
+
Debug mode is specified
|
176
|
+
processing in 'dir-1' and 'dir-2'
|
177
|
+
```
|
178
|
+
|
179
|
+
### Specify flags and options in short-form
|
180
|
+
|
181
|
+
If executed with the arguments
|
182
|
+
|
183
|
+
```
|
184
|
+
ruby examples/flag_and_option_specifications.from_DATA.rb dir-1 dir-2 -v silent -d
|
185
|
+
```
|
186
|
+
|
187
|
+
it gives the (same) output:
|
188
|
+
|
189
|
+
```
|
190
|
+
verbosity is specified as: silent
|
191
|
+
Debug mode is specified
|
192
|
+
processing in 'dir-1' and 'dir-2'
|
193
|
+
```
|
194
|
+
|
195
|
+
### Specify flags and options in short-form, including an alias for an option-with-value
|
196
|
+
|
197
|
+
If executed with the arguments
|
198
|
+
|
199
|
+
```
|
200
|
+
ruby examples/flag_and_option_specifications.from_DATA.rb dir-1 dir-2 -c -d
|
201
|
+
```
|
202
|
+
|
203
|
+
it gives the output:
|
204
|
+
|
205
|
+
```
|
206
|
+
verbosity is specified as: chatty
|
207
|
+
Debug mode is specified
|
208
|
+
processing in 'dir-1' and 'dir-2'
|
209
|
+
```
|
210
|
+
|
211
|
+
### Specify flags and options with combined short-form
|
212
|
+
|
213
|
+
If executed with the arguments
|
214
|
+
|
215
|
+
```
|
216
|
+
ruby examples/flag_and_option_specifications.from_DATA.rb dir-1 dir-2 -dc
|
217
|
+
```
|
218
|
+
|
219
|
+
it gives the (same) output:
|
220
|
+
|
221
|
+
```
|
222
|
+
verbosity is specified as: chatty
|
223
|
+
Debug mode is specified
|
224
|
+
processing in 'dir-1' and 'dir-2'
|
225
|
+
```
|
@@ -8,11 +8,6 @@
|
|
8
8
|
require 'libclimate'
|
9
9
|
|
10
10
|
|
11
|
-
# constants
|
12
|
-
|
13
|
-
PROGRAM_VERSION = '0.0.1'
|
14
|
-
|
15
|
-
|
16
11
|
# Specify aliases, parse, and checking standard flags
|
17
12
|
|
18
13
|
options = {}
|
@@ -39,6 +34,11 @@ if options[:debug]
|
|
39
34
|
end
|
40
35
|
|
41
36
|
|
37
|
+
# some notional output
|
38
|
+
|
39
|
+
$stdout.puts "processing in '#{r.values[0]}'" + (r.values.size > 1 ? " and '#{r.values[1]}'" : '')
|
40
|
+
|
41
|
+
|
42
42
|
__END__
|
43
43
|
---
|
44
44
|
libclimate:
|
@@ -51,6 +51,7 @@ libclimate:
|
|
51
51
|
required: false
|
52
52
|
- option:
|
53
53
|
name: --verbosity
|
54
|
+
alias: -v
|
54
55
|
help: specifies the verbosity
|
55
56
|
values:
|
56
57
|
- silent
|
@@ -66,10 +67,10 @@ libclimate:
|
|
66
67
|
constrain_values: !ruby/range 1..2
|
67
68
|
exit_on_missing: true
|
68
69
|
flags_and_options: "[... flags/options ...]"
|
69
|
-
usage_values: "<
|
70
|
+
usage_values: "<dir-1> [ <dir-2> ]"
|
70
71
|
value_names:
|
71
|
-
- directory
|
72
|
-
- directory
|
72
|
+
- first directory
|
73
|
+
- second directory
|
73
74
|
info_lines:
|
74
75
|
- libCLImate.Ruby examples
|
75
76
|
- :version
|
@@ -77,6 +78,6 @@ libclimate:
|
|
77
78
|
-
|
78
79
|
version:
|
79
80
|
- 0
|
80
|
-
-
|
81
|
-
- "
|
81
|
+
- 1
|
82
|
+
- "2"
|
82
83
|
|
data/lib/libclimate/climate.rb
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
# Purpose: Definition of the ::LibCLImate::Climate class
|
6
6
|
#
|
7
7
|
# Created: 13th July 2015
|
8
|
-
# Updated:
|
8
|
+
# Updated: 15th April 2019
|
9
9
|
#
|
10
10
|
# Home: http://github.com/synesissoftware/libCLImate.Ruby
|
11
11
|
#
|
@@ -173,6 +173,17 @@ class Climate
|
|
173
173
|
GIVEN_SPECS_ = "_Given_Specs_01B59422_8407_4c89_9432_8160C52BD5AD"
|
174
174
|
end # module Climate_Constants_
|
175
175
|
|
176
|
+
def make_abort_message_ msg
|
177
|
+
|
178
|
+
if 0 != (usage_help_suffix || 0).size
|
179
|
+
|
180
|
+
"#{msg}; #{usage_help_suffix}"
|
181
|
+
else
|
182
|
+
|
183
|
+
msg
|
184
|
+
end
|
185
|
+
end
|
186
|
+
|
176
187
|
def show_usage_
|
177
188
|
|
178
189
|
options = {}
|
@@ -475,6 +486,7 @@ class Climate
|
|
475
486
|
@stderr = $stderr
|
476
487
|
@constrain_values = nil
|
477
488
|
@flags_and_options = flags_and_options
|
489
|
+
@usage_help_suffix = 'use --help for usage'
|
478
490
|
@usage_values = usage_values
|
479
491
|
@value_names = []
|
480
492
|
version_context = options[:version_context]
|
@@ -530,6 +542,8 @@ class Climate
|
|
530
542
|
attr_accessor :constrain_values
|
531
543
|
# (String) Optional string to describe the flags and options section. Defaults to "[ +...+ +flags+ +and+ +options+ +...+ ]"
|
532
544
|
attr_accessor :flags_and_options
|
545
|
+
# (String) The string that is appended to #abort calls made during #run. Defaults to "use --help for usage"
|
546
|
+
attr_accessor :usage_help_suffix
|
533
547
|
# @return (::String) Optional string to describe the program values, eg \<xyz "[ { <<directory> | <file> } ]"
|
534
548
|
attr_accessor :usage_values
|
535
549
|
# ([String]) Zero-based array of names for values to be used when that value is not present (according to the +:constrain_values+ attribute)
|
@@ -625,7 +639,7 @@ class Climate
|
|
625
639
|
results[:flags][selector] << f
|
626
640
|
else
|
627
641
|
|
628
|
-
message = "unrecognised flag '#{f}'
|
642
|
+
message = make_abort_message_("unrecognised flag '#{f}'")
|
629
643
|
|
630
644
|
if false
|
631
645
|
|
@@ -687,7 +701,7 @@ class Climate
|
|
687
701
|
results[:options][selector] << o
|
688
702
|
else
|
689
703
|
|
690
|
-
message = "unrecognised option '#{o}'
|
704
|
+
message = make_abort_message_("unrecognised option '#{o}'")
|
691
705
|
|
692
706
|
if false
|
693
707
|
|
@@ -756,16 +770,37 @@ class Climate
|
|
756
770
|
when nil
|
757
771
|
|
758
772
|
;
|
773
|
+
when ::Array
|
774
|
+
|
775
|
+
warn "value of 'constrain_values' attribute, if an #{::Array}, must not be empty and all elements must be of type #{::Integer}" if values_constraint.empty? || !values_constraint.all? { |v| ::Integer === v }
|
776
|
+
|
777
|
+
unless values_constraint.include? values.size
|
778
|
+
|
779
|
+
message = make_abort_message_("wrong number of values: #{values.size} given, #{values_constraint} required")
|
780
|
+
|
781
|
+
if exit_on_missing
|
782
|
+
|
783
|
+
self.abort message
|
784
|
+
else
|
785
|
+
|
786
|
+
if program_name && !program_name.empty?
|
787
|
+
|
788
|
+
message = "#{program_name}: #{message}"
|
789
|
+
end
|
790
|
+
|
791
|
+
stderr.puts message
|
792
|
+
end
|
793
|
+
end
|
759
794
|
when ::Integer
|
760
795
|
|
761
796
|
unless values.size == values_constraint
|
762
797
|
|
763
798
|
if name = val_names[values.size]
|
764
799
|
|
765
|
-
message = name + ' not specified
|
800
|
+
message = make_abort_message_(name + ' not specified')
|
766
801
|
else
|
767
802
|
|
768
|
-
message = "wrong number of values: #{values.size} given, #{values_constraint} required
|
803
|
+
message = make_abort_message_("wrong number of values: #{values.size} given, #{values_constraint} required")
|
769
804
|
end
|
770
805
|
|
771
806
|
if exit_on_missing
|
@@ -787,10 +822,10 @@ class Climate
|
|
787
822
|
|
788
823
|
if name = val_names[values.size]
|
789
824
|
|
790
|
-
message = name + ' not specified
|
825
|
+
message = make_abort_message_(name + ' not specified')
|
791
826
|
else
|
792
827
|
|
793
|
-
message = "wrong number of values: #{values.size} givens, #{values_constraint.begin} - #{values_constraint.end - (values_constraint.exclude_end? ? 1 : 0)} required
|
828
|
+
message = make_abort_message_("wrong number of values: #{values.size} givens, #{values_constraint.begin} - #{values_constraint.end - (values_constraint.exclude_end? ? 1 : 0)} required")
|
794
829
|
end
|
795
830
|
|
796
831
|
if exit_on_missing
|
@@ -808,7 +843,7 @@ class Climate
|
|
808
843
|
end
|
809
844
|
else
|
810
845
|
|
811
|
-
warn "value of 'constrain_values' attribute - '#{constrain_values}' (#{constrain_values.class}) - of wrong type : must be #{::Integer}, #{::Range}, or nil"
|
846
|
+
warn "value of 'constrain_values' attribute - '#{constrain_values}' (#{constrain_values.class}) - of wrong type : must be #{::Array}, #{::Integer}, #{::Range}, or nil"
|
812
847
|
end
|
813
848
|
|
814
849
|
|
data/lib/libclimate/version.rb
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
# Purpose: Version for libclimate.Ruby library
|
5
5
|
#
|
6
6
|
# Created: 13th July 2015
|
7
|
-
# Updated:
|
7
|
+
# Updated: 15th April 2019
|
8
8
|
#
|
9
9
|
# Home: http://github.com/synesissoftware/libCLImate.Ruby
|
10
10
|
#
|
@@ -43,7 +43,7 @@
|
|
43
43
|
module LibCLImate
|
44
44
|
|
45
45
|
# Current version of the libCLImate.Ruby library
|
46
|
-
VERSION = '0.
|
46
|
+
VERSION = '0.14.0'
|
47
47
|
|
48
48
|
private
|
49
49
|
VERSION_PARTS_ = VERSION.split(/[.]/).collect { |n| n.to_i } # :nodoc:
|
data/test/unit/tc_abort.rb
CHANGED
@@ -20,11 +20,11 @@ class Test_Climate_abort < Test::Unit::TestCase
|
|
20
20
|
strout = StringIO.new
|
21
21
|
strerr = StringIO.new
|
22
22
|
|
23
|
-
climate = LibCLImate::Climate.new do |
|
23
|
+
climate = LibCLImate::Climate.new do |cl|
|
24
24
|
|
25
|
-
|
26
|
-
|
27
|
-
|
25
|
+
cl.program_name = 'myprog'
|
26
|
+
cl.stdout = strout
|
27
|
+
cl.stderr = strerr
|
28
28
|
end
|
29
29
|
|
30
30
|
s = climate.abort 'something happened', exit: nil
|
@@ -42,11 +42,11 @@ class Test_Climate_abort < Test::Unit::TestCase
|
|
42
42
|
strout = StringIO.new
|
43
43
|
strerr = StringIO.new
|
44
44
|
|
45
|
-
climate = LibCLImate::Climate.new do |
|
45
|
+
climate = LibCLImate::Climate.new do |cl|
|
46
46
|
|
47
|
-
|
48
|
-
|
49
|
-
|
47
|
+
cl.program_name = 'myprog'
|
48
|
+
cl.stdout = strout
|
49
|
+
cl.stderr = strerr
|
50
50
|
end
|
51
51
|
|
52
52
|
s = climate.abort 'something happened', exit: nil, program_name: ''
|
@@ -64,11 +64,11 @@ class Test_Climate_abort < Test::Unit::TestCase
|
|
64
64
|
strout = StringIO.new
|
65
65
|
strerr = StringIO.new
|
66
66
|
|
67
|
-
climate = LibCLImate::Climate.new do |
|
67
|
+
climate = LibCLImate::Climate.new do |cl|
|
68
68
|
|
69
|
-
|
70
|
-
|
71
|
-
|
69
|
+
cl.program_name = 'myprog'
|
70
|
+
cl.stdout = strout
|
71
|
+
cl.stderr = strerr
|
72
72
|
end
|
73
73
|
|
74
74
|
s = climate.abort 'something happened', exit: nil, program_name: 'my-prog'
|
data/test/unit/tc_minimal.rb
CHANGED
@@ -17,7 +17,7 @@ class Test_Climate_minimal < Test::Unit::TestCase
|
|
17
17
|
|
18
18
|
def test_no_arguments_no_mods
|
19
19
|
|
20
|
-
climate = LibCLImate::Climate.new do |
|
20
|
+
climate = LibCLImate::Climate.new do |cl|
|
21
21
|
|
22
22
|
;
|
23
23
|
end
|
@@ -28,10 +28,10 @@ class Test_Climate_minimal < Test::Unit::TestCase
|
|
28
28
|
|
29
29
|
def test_no_arguments_set_streams
|
30
30
|
|
31
|
-
climate = LibCLImate::Climate.new do |
|
31
|
+
climate = LibCLImate::Climate.new do |cl|
|
32
32
|
|
33
|
-
|
34
|
-
|
33
|
+
cl.stdout = $stdout
|
34
|
+
cl.stderr = $stderr
|
35
35
|
end
|
36
36
|
|
37
37
|
assert $stdout.equal? climate.stdout
|
@@ -42,11 +42,11 @@ class Test_Climate_minimal < Test::Unit::TestCase
|
|
42
42
|
|
43
43
|
str = StringIO.new
|
44
44
|
|
45
|
-
climate = LibCLImate::Climate.new do |
|
45
|
+
climate = LibCLImate::Climate.new do |cl|
|
46
46
|
|
47
|
-
|
48
|
-
|
49
|
-
|
47
|
+
cl.program_name = 'program'
|
48
|
+
cl.stdout = str
|
49
|
+
cl.exit_on_usage = false
|
50
50
|
end
|
51
51
|
|
52
52
|
argv = %w{ --help }
|
@@ -89,12 +89,12 @@ class Test_Climate_minimal < Test::Unit::TestCase
|
|
89
89
|
|
90
90
|
str = StringIO.new
|
91
91
|
|
92
|
-
climate = LibCLImate::Climate.new do |
|
92
|
+
climate = LibCLImate::Climate.new do |cl|
|
93
93
|
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
94
|
+
cl.program_name = 'program'
|
95
|
+
cl.info_lines = 'Synesis Software Open Source'
|
96
|
+
cl.stdout = str
|
97
|
+
cl.exit_on_usage = false
|
98
98
|
end
|
99
99
|
|
100
100
|
argv = %w{ --help }
|
@@ -139,12 +139,12 @@ class Test_Climate_minimal < Test::Unit::TestCase
|
|
139
139
|
|
140
140
|
str = StringIO.new
|
141
141
|
|
142
|
-
climate = LibCLImate::Climate.new do |
|
142
|
+
climate = LibCLImate::Climate.new do |cl|
|
143
143
|
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
144
|
+
cl.program_name = 'program'
|
145
|
+
cl.version = [ 1, 2, 3, 4 ]
|
146
|
+
cl.stdout = str
|
147
|
+
cl.exit_on_usage = false
|
148
148
|
end
|
149
149
|
|
150
150
|
argv = %w{ --version }
|
@@ -164,12 +164,12 @@ class Test_Climate_minimal < Test::Unit::TestCase
|
|
164
164
|
strout = StringIO.new
|
165
165
|
strerr = StringIO.new
|
166
166
|
|
167
|
-
climate = LibCLImate::Climate.new do |
|
167
|
+
climate = LibCLImate::Climate.new do |cl|
|
168
168
|
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
169
|
+
cl.program_name = 'program'
|
170
|
+
cl.stdout = strout
|
171
|
+
cl.stderr = strerr
|
172
|
+
cl.exit_on_unknown = false
|
173
173
|
end
|
174
174
|
|
175
175
|
argv = %w{ --unknown }
|
@@ -184,17 +184,43 @@ class Test_Climate_minimal < Test::Unit::TestCase
|
|
184
184
|
assert_equal "program: unrecognised flag '--unknown'; use --help for usage", lines_err[0]
|
185
185
|
end
|
186
186
|
|
187
|
+
def test_unrecognised_flag_terse
|
188
|
+
|
189
|
+
strout = StringIO.new
|
190
|
+
strerr = StringIO.new
|
191
|
+
|
192
|
+
climate = LibCLImate::Climate.new do |cl|
|
193
|
+
|
194
|
+
cl.program_name = 'program'
|
195
|
+
cl.stdout = strout
|
196
|
+
cl.stderr = strerr
|
197
|
+
cl.exit_on_unknown = false
|
198
|
+
cl.usage_help_suffix = ''
|
199
|
+
end
|
200
|
+
|
201
|
+
argv = %w{ --unknown }
|
202
|
+
|
203
|
+
climate.run argv
|
204
|
+
|
205
|
+
lines_out = strout.string.split /\n/
|
206
|
+
lines_err = strerr.string.split /\n/
|
207
|
+
|
208
|
+
assert_equal 0, lines_out.size
|
209
|
+
assert_equal 1, lines_err.size
|
210
|
+
assert_equal "program: unrecognised flag '--unknown'", lines_err[0]
|
211
|
+
end
|
212
|
+
|
187
213
|
def test_unrecognised_option
|
188
214
|
|
189
215
|
strout = StringIO.new
|
190
216
|
strerr = StringIO.new
|
191
217
|
|
192
|
-
climate = LibCLImate::Climate.new do |
|
218
|
+
climate = LibCLImate::Climate.new do |cl|
|
193
219
|
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
220
|
+
cl.program_name = 'program'
|
221
|
+
cl.stdout = strout
|
222
|
+
cl.stderr = strerr
|
223
|
+
cl.exit_on_unknown = false
|
198
224
|
end
|
199
225
|
|
200
226
|
argv = %w{ --unknown=10 }
|
@@ -215,16 +241,16 @@ class Test_Climate_minimal < Test::Unit::TestCase
|
|
215
241
|
|
216
242
|
is_verbose = false
|
217
243
|
|
218
|
-
climate = LibCLImate::Climate.new do |
|
244
|
+
climate = LibCLImate::Climate.new do |cl|
|
219
245
|
|
220
|
-
|
221
|
-
|
222
|
-
|
246
|
+
cl.program_name = 'program'
|
247
|
+
cl.stdout = str
|
248
|
+
cl.exit_on_usage = false
|
223
249
|
|
224
250
|
bl = false#proc { is_verbose = true }
|
225
251
|
|
226
|
-
|
227
|
-
|
252
|
+
cl.add_flag('--succinct', alias: '-s', help: 'operates succinctly')
|
253
|
+
cl.add_flag('--verbose', alias: '-v', help: 'operates verbosely', extras: { :handle => proc { is_verbose = true }})
|
228
254
|
end
|
229
255
|
|
230
256
|
argv = %w{ --help --verbose --succinct }
|
@@ -276,13 +302,13 @@ class Test_Climate_minimal < Test::Unit::TestCase
|
|
276
302
|
|
277
303
|
is_verbose = false
|
278
304
|
|
279
|
-
climate = LibCLImate::Climate.new do |
|
305
|
+
climate = LibCLImate::Climate.new do |cl|
|
280
306
|
|
281
|
-
|
282
|
-
|
283
|
-
|
307
|
+
cl.program_name = 'program'
|
308
|
+
cl.stdout = str
|
309
|
+
cl.exit_on_usage = false
|
284
310
|
|
285
|
-
|
311
|
+
cl.add_flag('--verbose', alias: '-v', help: 'operates verbosely', extras: { handle: proc { is_verbose = true }})
|
286
312
|
end
|
287
313
|
|
288
314
|
argv = %w{ --verbose }
|
@@ -321,13 +347,13 @@ class Test_Climate_minimal < Test::Unit::TestCase
|
|
321
347
|
|
322
348
|
verbosity = 1
|
323
349
|
|
324
|
-
climate = LibCLImate::Climate.new do |
|
350
|
+
climate = LibCLImate::Climate.new do |cl|
|
325
351
|
|
326
|
-
|
327
|
-
|
328
|
-
|
352
|
+
cl.program_name = 'program'
|
353
|
+
cl.stdout = str
|
354
|
+
cl.exit_on_usage = false
|
329
355
|
|
330
|
-
|
356
|
+
cl.add_option('--verbosity', alias: '-v', help: 'determines level of verbose operation', extras: { handle: proc { |o| verbosity = o.value }})
|
331
357
|
end
|
332
358
|
|
333
359
|
argv = %w{ -v 2 }
|
@@ -364,11 +390,11 @@ class Test_Climate_minimal < Test::Unit::TestCase
|
|
364
390
|
|
365
391
|
str = StringIO.new
|
366
392
|
|
367
|
-
climate = LibCLImate::Climate.new do |
|
393
|
+
climate = LibCLImate::Climate.new do |cl|
|
368
394
|
|
369
|
-
|
395
|
+
cl.program_name = 'program'
|
370
396
|
|
371
|
-
|
397
|
+
cl.add_option('--verbosity', alias: '-v', help: 'determines level of verbose operation', required: true)
|
372
398
|
end
|
373
399
|
|
374
400
|
assert climate.specifications[2].required?
|
@@ -405,15 +431,15 @@ class Test_Climate_minimal < Test::Unit::TestCase
|
|
405
431
|
str = StringIO.new
|
406
432
|
stre = StringIO.new
|
407
433
|
|
408
|
-
climate = LibCLImate::Climate.new do |
|
434
|
+
climate = LibCLImate::Climate.new do |cl|
|
409
435
|
|
410
|
-
|
411
|
-
|
412
|
-
|
413
|
-
|
414
|
-
|
436
|
+
cl.program_name = 'program'
|
437
|
+
cl.stdout = str
|
438
|
+
cl.stderr = stre
|
439
|
+
cl.exit_on_usage = false
|
440
|
+
cl.exit_on_missing = false
|
415
441
|
|
416
|
-
|
442
|
+
cl.add_option('--verbosity', alias: '-v', help: 'determines level of verbose operation', required: true)
|
417
443
|
end
|
418
444
|
|
419
445
|
r = climate.run %w{ }
|
@@ -455,15 +481,15 @@ class Test_Climate_minimal < Test::Unit::TestCase
|
|
455
481
|
str = StringIO.new
|
456
482
|
stre = StringIO.new
|
457
483
|
|
458
|
-
climate = LibCLImate::Climate.new do |
|
484
|
+
climate = LibCLImate::Climate.new do |cl|
|
459
485
|
|
460
|
-
|
461
|
-
|
462
|
-
|
463
|
-
|
464
|
-
|
486
|
+
cl.program_name = 'program'
|
487
|
+
cl.stdout = str
|
488
|
+
cl.stderr = stre
|
489
|
+
cl.exit_on_usage = false
|
490
|
+
cl.exit_on_missing = false
|
465
491
|
|
466
|
-
|
492
|
+
cl.add_option('--verbosity', alias: '-v', help: 'determines level of verbose operation', required: true, required_message: 'Verbosity not specified')
|
467
493
|
end
|
468
494
|
|
469
495
|
r = climate.run %w{ }
|
@@ -505,15 +531,15 @@ class Test_Climate_minimal < Test::Unit::TestCase
|
|
505
531
|
str = StringIO.new
|
506
532
|
stre = StringIO.new
|
507
533
|
|
508
|
-
climate = LibCLImate::Climate.new do |
|
534
|
+
climate = LibCLImate::Climate.new do |cl|
|
509
535
|
|
510
|
-
|
511
|
-
|
512
|
-
|
513
|
-
|
514
|
-
|
536
|
+
cl.program_name = 'program'
|
537
|
+
cl.stdout = str
|
538
|
+
cl.stderr = stre
|
539
|
+
cl.exit_on_usage = false
|
540
|
+
cl.exit_on_missing = false
|
515
541
|
|
516
|
-
|
542
|
+
cl.add_option('--verbosity', alias: '-v', help: 'determines level of verbose operation', required: true, required_message: "\0Verbosity")
|
517
543
|
end
|
518
544
|
|
519
545
|
r = climate.run %w{ }
|
@@ -17,7 +17,7 @@ class Test_Climate_minimal_CLASP < Test::Unit::TestCase
|
|
17
17
|
|
18
18
|
def test_no_arguments_no_mods
|
19
19
|
|
20
|
-
climate = LibCLImate::Climate.new do |
|
20
|
+
climate = LibCLImate::Climate.new do |cl|
|
21
21
|
|
22
22
|
;
|
23
23
|
end
|
@@ -28,10 +28,10 @@ class Test_Climate_minimal_CLASP < Test::Unit::TestCase
|
|
28
28
|
|
29
29
|
def test_no_arguments_set_streams
|
30
30
|
|
31
|
-
climate = LibCLImate::Climate.new do |
|
31
|
+
climate = LibCLImate::Climate.new do |cl|
|
32
32
|
|
33
|
-
|
34
|
-
|
33
|
+
cl.stdout = $stdout
|
34
|
+
cl.stderr = $stderr
|
35
35
|
end
|
36
36
|
|
37
37
|
assert $stdout.equal? climate.stdout
|
@@ -42,11 +42,11 @@ class Test_Climate_minimal_CLASP < Test::Unit::TestCase
|
|
42
42
|
|
43
43
|
str = StringIO.new
|
44
44
|
|
45
|
-
climate = LibCLImate::Climate.new do |
|
45
|
+
climate = LibCLImate::Climate.new do |cl|
|
46
46
|
|
47
|
-
|
48
|
-
|
49
|
-
|
47
|
+
cl.program_name = 'program'
|
48
|
+
cl.stdout = str
|
49
|
+
cl.exit_on_usage = false
|
50
50
|
end
|
51
51
|
|
52
52
|
argv = %w{ --help }
|
@@ -89,12 +89,12 @@ class Test_Climate_minimal_CLASP < Test::Unit::TestCase
|
|
89
89
|
|
90
90
|
str = StringIO.new
|
91
91
|
|
92
|
-
climate = LibCLImate::Climate.new do |
|
92
|
+
climate = LibCLImate::Climate.new do |cl|
|
93
93
|
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
94
|
+
cl.program_name = 'program'
|
95
|
+
cl.info_lines = 'Synesis Software Open Source'
|
96
|
+
cl.stdout = str
|
97
|
+
cl.exit_on_usage = false
|
98
98
|
end
|
99
99
|
|
100
100
|
argv = %w{ --help }
|
@@ -139,12 +139,12 @@ class Test_Climate_minimal_CLASP < Test::Unit::TestCase
|
|
139
139
|
|
140
140
|
str = StringIO.new
|
141
141
|
|
142
|
-
climate = LibCLImate::Climate.new do |
|
142
|
+
climate = LibCLImate::Climate.new do |cl|
|
143
143
|
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
144
|
+
cl.program_name = 'program'
|
145
|
+
cl.version = [ 1, 2, 3, 4 ]
|
146
|
+
cl.stdout = str
|
147
|
+
cl.exit_on_usage = false
|
148
148
|
end
|
149
149
|
|
150
150
|
argv = %w{ --version }
|
@@ -164,12 +164,12 @@ class Test_Climate_minimal_CLASP < Test::Unit::TestCase
|
|
164
164
|
strout = StringIO.new
|
165
165
|
strerr = StringIO.new
|
166
166
|
|
167
|
-
climate = LibCLImate::Climate.new do |
|
167
|
+
climate = LibCLImate::Climate.new do |cl|
|
168
168
|
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
169
|
+
cl.program_name = 'program'
|
170
|
+
cl.stdout = strout
|
171
|
+
cl.stderr = strerr
|
172
|
+
cl.exit_on_unknown = false
|
173
173
|
end
|
174
174
|
|
175
175
|
argv = %w{ --unknown }
|
@@ -189,12 +189,12 @@ class Test_Climate_minimal_CLASP < Test::Unit::TestCase
|
|
189
189
|
strout = StringIO.new
|
190
190
|
strerr = StringIO.new
|
191
191
|
|
192
|
-
climate = LibCLImate::Climate.new do |
|
192
|
+
climate = LibCLImate::Climate.new do |cl|
|
193
193
|
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
194
|
+
cl.program_name = 'program'
|
195
|
+
cl.stdout = strout
|
196
|
+
cl.stderr = strerr
|
197
|
+
cl.exit_on_unknown = false
|
198
198
|
end
|
199
199
|
|
200
200
|
argv = %w{ --unknown=10 }
|
@@ -215,16 +215,14 @@ class Test_Climate_minimal_CLASP < Test::Unit::TestCase
|
|
215
215
|
|
216
216
|
is_verbose = false
|
217
217
|
|
218
|
-
climate = LibCLImate::Climate.new do |
|
218
|
+
climate = LibCLImate::Climate.new do |cl|
|
219
219
|
|
220
|
-
|
221
|
-
|
222
|
-
|
220
|
+
cl.program_name = 'program'
|
221
|
+
cl.stdout = str
|
222
|
+
cl.exit_on_usage = false
|
223
223
|
|
224
|
-
|
225
|
-
|
226
|
-
climate.add_flag('--succinct', alias: '-s', help: 'operates succinctly')
|
227
|
-
climate.add_flag('--verbose', alias: '-v', help: 'operates verbosely', extras: { :handle => proc { is_verbose = true }})
|
224
|
+
cl.add_flag('--succinct', alias: '-s', help: 'operates succinctly')
|
225
|
+
cl.add_flag('--verbose', alias: '-v', help: 'operates verbosely', extras: { :handle => proc { is_verbose = true }})
|
228
226
|
end
|
229
227
|
|
230
228
|
argv = %w{ --help --verbose --succinct }
|
@@ -275,13 +273,13 @@ class Test_Climate_minimal_CLASP < Test::Unit::TestCase
|
|
275
273
|
|
276
274
|
is_verbose = false
|
277
275
|
|
278
|
-
climate = LibCLImate::Climate.new do |
|
276
|
+
climate = LibCLImate::Climate.new do |cl|
|
279
277
|
|
280
|
-
|
281
|
-
|
282
|
-
|
278
|
+
cl.program_name = 'program'
|
279
|
+
cl.stdout = str
|
280
|
+
cl.exit_on_usage = false
|
283
281
|
|
284
|
-
|
282
|
+
cl.add_flag('--verbose', alias: '-v', help: 'operates verbosely', extras: { handle: proc { is_verbose = true }})
|
285
283
|
end
|
286
284
|
|
287
285
|
argv = %w{ --verbose }
|
@@ -319,13 +317,13 @@ class Test_Climate_minimal_CLASP < Test::Unit::TestCase
|
|
319
317
|
|
320
318
|
verbosity = 1
|
321
319
|
|
322
|
-
climate = LibCLImate::Climate.new do |
|
320
|
+
climate = LibCLImate::Climate.new do |cl|
|
323
321
|
|
324
|
-
|
325
|
-
|
326
|
-
|
322
|
+
cl.program_name = 'program'
|
323
|
+
cl.stdout = str
|
324
|
+
cl.exit_on_usage = false
|
327
325
|
|
328
|
-
|
326
|
+
cl.add_option('--verbosity', alias: '-v', help: 'determines level of verbose operation', extras: { handle: proc { |o| verbosity = o.value }})
|
329
327
|
end
|
330
328
|
|
331
329
|
argv = %w{ -v 2 }
|
@@ -19,11 +19,11 @@ class Test_Climate_minimal < Test::Unit::TestCase
|
|
19
19
|
|
20
20
|
options = {}
|
21
21
|
|
22
|
-
climate = LibCLImate::Climate.new do |
|
22
|
+
climate = LibCLImate::Climate.new do |cl|
|
23
23
|
|
24
|
-
|
25
|
-
|
26
|
-
|
24
|
+
cl.add_option('--action', alias: '-a') { |o, a| options[:action] = o.value }
|
25
|
+
cl.add_alias('--action=list', '-l')
|
26
|
+
cl.add_alias('--action=change', '-c')
|
27
27
|
end
|
28
28
|
|
29
29
|
# invoke via option
|
data/test/unit/tc_values.rb
CHANGED
@@ -19,21 +19,21 @@ class Test_Climate_values_constraints < Test::Unit::TestCase
|
|
19
19
|
|
20
20
|
climate = LibCLImate::Climate.new do |cl|
|
21
21
|
|
22
|
-
cl.
|
22
|
+
cl.exit_on_missing = false
|
23
23
|
|
24
24
|
cl.stdout = stdout
|
25
25
|
cl.stderr = stderr
|
26
26
|
end
|
27
27
|
|
28
|
-
stdout.
|
29
|
-
stderr.
|
28
|
+
stdout.string = ''
|
29
|
+
stderr.string = ''
|
30
30
|
r = climate.run [ ]
|
31
31
|
assert_equal 0, r.values.size
|
32
32
|
assert_empty stdout.string
|
33
33
|
assert_empty stderr.string
|
34
34
|
|
35
|
-
stdout.
|
36
|
-
stderr.
|
35
|
+
stdout.string = ''
|
36
|
+
stderr.string = ''
|
37
37
|
r = climate.run [ 'value-1' ]
|
38
38
|
assert_equal 1, r.values.size
|
39
39
|
assert_empty stdout.string
|
@@ -47,7 +47,7 @@ class Test_Climate_values_constraints < Test::Unit::TestCase
|
|
47
47
|
|
48
48
|
climate = LibCLImate::Climate.new do |cl|
|
49
49
|
|
50
|
-
cl.
|
50
|
+
cl.exit_on_missing = false
|
51
51
|
|
52
52
|
cl.stdout = stdout
|
53
53
|
cl.stderr = stderr
|
@@ -55,31 +55,31 @@ class Test_Climate_values_constraints < Test::Unit::TestCase
|
|
55
55
|
cl.constrain_values = 2
|
56
56
|
end
|
57
57
|
|
58
|
-
stdout.
|
59
|
-
stderr.
|
58
|
+
stdout.string = ''
|
59
|
+
stderr.string = ''
|
60
60
|
r = climate.run [ ]
|
61
61
|
assert_equal 0, r.values.size
|
62
62
|
assert_empty stdout.string
|
63
63
|
assert_not_empty stderr.string
|
64
64
|
assert_match /wrong number of values.*0 given.*2 required.*/, stderr.string
|
65
65
|
|
66
|
-
stdout.
|
67
|
-
stderr.
|
66
|
+
stdout.string = ''
|
67
|
+
stderr.string = ''
|
68
68
|
r = climate.run [ 'value-1' ]
|
69
69
|
assert_equal 1, r.values.size
|
70
70
|
assert_empty stdout.string
|
71
71
|
assert_not_empty stderr.string
|
72
72
|
assert_match /wrong number of values.*1 given.*2 required.*/, stderr.string
|
73
73
|
|
74
|
-
stdout.
|
75
|
-
stderr.
|
74
|
+
stdout.string = ''
|
75
|
+
stderr.string = ''
|
76
76
|
r = climate.run [ 'value-1', 'value-2' ]
|
77
77
|
assert_equal 2, r.values.size
|
78
78
|
assert_empty stdout.string
|
79
79
|
assert_empty stderr.string
|
80
80
|
|
81
|
-
stdout.
|
82
|
-
stderr.
|
81
|
+
stdout.string = ''
|
82
|
+
stderr.string = ''
|
83
83
|
r = climate.run [ 'value-1', 'value-2', 'value-3' ]
|
84
84
|
assert_equal 3, r.values.size
|
85
85
|
assert_empty stdout.string
|
@@ -94,7 +94,7 @@ class Test_Climate_values_constraints < Test::Unit::TestCase
|
|
94
94
|
|
95
95
|
climate = LibCLImate::Climate.new do |cl|
|
96
96
|
|
97
|
-
cl.
|
97
|
+
cl.exit_on_missing = false
|
98
98
|
|
99
99
|
cl.stdout = stdout
|
100
100
|
cl.stderr = stderr
|
@@ -102,40 +102,96 @@ class Test_Climate_values_constraints < Test::Unit::TestCase
|
|
102
102
|
cl.constrain_values = 0..2
|
103
103
|
end
|
104
104
|
|
105
|
-
stdout.
|
106
|
-
stderr.
|
105
|
+
stdout.string = ''
|
106
|
+
stderr.string = ''
|
107
107
|
r = climate.run [ ]
|
108
108
|
assert_equal 0, r.values.size
|
109
109
|
assert_empty stdout.string
|
110
110
|
assert_empty stderr.string
|
111
111
|
|
112
|
-
stdout.
|
113
|
-
stderr.
|
112
|
+
stdout.string = ''
|
113
|
+
stderr.string = ''
|
114
114
|
r = climate.run [ 'value-1' ]
|
115
115
|
assert_equal 1, r.values.size
|
116
116
|
assert_empty stdout.string
|
117
117
|
assert_empty stderr.string
|
118
118
|
|
119
|
-
stdout.
|
120
|
-
stderr.
|
119
|
+
stdout.string = ''
|
120
|
+
stderr.string = ''
|
121
121
|
r = climate.run [ 'value-1', 'value-2' ]
|
122
122
|
assert_equal 2, r.values.size
|
123
123
|
assert_empty stdout.string
|
124
124
|
assert_empty stderr.string
|
125
125
|
|
126
|
-
stdout.
|
127
|
-
stderr.
|
126
|
+
stdout.string = ''
|
127
|
+
stderr.string = ''
|
128
128
|
r = climate.run [ 'value-1', 'value-2', 'value-3' ]
|
129
129
|
assert_equal 3, r.values.size
|
130
130
|
assert_empty stdout.string
|
131
131
|
assert_not_empty stderr.string
|
132
132
|
|
133
|
-
stdout.
|
134
|
-
stderr.
|
133
|
+
stdout.string = ''
|
134
|
+
stderr.string = ''
|
135
135
|
r = climate.run [ 'value-1', 'value-2', 'value-3', 'value-4' ]
|
136
136
|
assert_equal 4, r.values.size
|
137
137
|
assert_empty stdout.string
|
138
138
|
assert_not_empty stderr.string
|
139
139
|
end
|
140
|
+
|
141
|
+
def test_constrain_with_simple_array
|
142
|
+
|
143
|
+
stdout = StringIO.new
|
144
|
+
stderr = StringIO.new
|
145
|
+
|
146
|
+
climate = LibCLImate::Climate.new do |cl|
|
147
|
+
|
148
|
+
cl.exit_on_missing = false
|
149
|
+
|
150
|
+
cl.stdout = stdout
|
151
|
+
cl.stderr = stderr
|
152
|
+
|
153
|
+
cl.constrain_values = [ 1, 3 ]
|
154
|
+
|
155
|
+
cl.program_name = "myprog"
|
156
|
+
cl.usage_help_suffix = ''
|
157
|
+
end
|
158
|
+
|
159
|
+
stdout.string = ''
|
160
|
+
stderr.string = ''
|
161
|
+
r = climate.run [ ]
|
162
|
+
assert_equal 0, r.values.size
|
163
|
+
assert_empty stdout.string
|
164
|
+
assert_not_empty stderr.string
|
165
|
+
|
166
|
+
stdout.string = ''
|
167
|
+
stderr.string = ''
|
168
|
+
r = climate.run [ 'value-1' ]
|
169
|
+
assert_equal 1, r.values.size
|
170
|
+
assert_empty stdout.string
|
171
|
+
assert_empty stderr.string
|
172
|
+
|
173
|
+
stdout.string = ''
|
174
|
+
stderr.string = ''
|
175
|
+
r = climate.run [ 'value-1', 'value-2' ]
|
176
|
+
assert_equal 2, r.values.size
|
177
|
+
assert_empty stdout.string
|
178
|
+
assert_not_empty stderr.string
|
179
|
+
|
180
|
+
stdout.string = ''
|
181
|
+
stderr.string = ''
|
182
|
+
r = climate.run [ 'value-1', 'value-2', 'value-3' ]
|
183
|
+
assert_equal 3, r.values.size
|
184
|
+
assert_empty stdout.string
|
185
|
+
assert_empty stderr.string
|
186
|
+
|
187
|
+
stdout.string = ''
|
188
|
+
stderr.string = ''
|
189
|
+
assert_equal '', stderr.string
|
190
|
+
r = climate.run [ 'value-1', 'value-2', 'value-3', 'value-4' ]
|
191
|
+
assert_equal 4, r.values.size
|
192
|
+
assert_empty stdout.string
|
193
|
+
assert_not_empty stderr.string
|
194
|
+
assert_equal "myprog: wrong number of values: 4 given, [1, 3] required\n", stderr.string
|
195
|
+
end
|
140
196
|
end
|
141
197
|
|
data/test/unit/tc_with_blocks.rb
CHANGED
@@ -19,9 +19,9 @@ class Test_Climate_with_blocks < Test::Unit::TestCase
|
|
19
19
|
|
20
20
|
is_verbose = false
|
21
21
|
|
22
|
-
climate = LibCLImate::Climate.new do |
|
22
|
+
climate = LibCLImate::Climate.new do |cl|
|
23
23
|
|
24
|
-
|
24
|
+
cl.add_flag('--verbose') { is_verbose = true }
|
25
25
|
end
|
26
26
|
|
27
27
|
argv = %w{ --verbose }
|
@@ -35,9 +35,9 @@ class Test_Climate_with_blocks < Test::Unit::TestCase
|
|
35
35
|
|
36
36
|
flavour = nil
|
37
37
|
|
38
|
-
climate = LibCLImate::Climate.new do |
|
38
|
+
climate = LibCLImate::Climate.new do |cl|
|
39
39
|
|
40
|
-
|
40
|
+
cl.add_option('--flavour') { |o| flavour = o.value }
|
41
41
|
end
|
42
42
|
|
43
43
|
argv = %w{ --flavour=blueberry }
|
@@ -19,9 +19,9 @@ class Test_Climate_with_blocks_CLASP < Test::Unit::TestCase
|
|
19
19
|
|
20
20
|
is_verbose = false
|
21
21
|
|
22
|
-
climate = LibCLImate::Climate.new do |
|
22
|
+
climate = LibCLImate::Climate.new do |cl|
|
23
23
|
|
24
|
-
|
24
|
+
cl.add_flag('--verbose') { is_verbose = true }
|
25
25
|
end
|
26
26
|
|
27
27
|
argv = %w{ --verbose }
|
@@ -35,9 +35,9 @@ class Test_Climate_with_blocks_CLASP < Test::Unit::TestCase
|
|
35
35
|
|
36
36
|
flavour = nil
|
37
37
|
|
38
|
-
climate = LibCLImate::Climate.new do |
|
38
|
+
climate = LibCLImate::Climate.new do |cl|
|
39
39
|
|
40
|
-
|
40
|
+
cl.add_option('--flavour') { |o| flavour = o.value }
|
41
41
|
end
|
42
42
|
|
43
43
|
argv = %w{ --flavour=blueberry }
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: libclimate-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.14.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matt Wilson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-04-
|
11
|
+
date: 2019-04-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: clasp-ruby
|
@@ -46,6 +46,7 @@ extra_rdoc_files: []
|
|
46
46
|
files:
|
47
47
|
- LICENSE
|
48
48
|
- README.md
|
49
|
+
- examples/flag_and_option_specifications.from_DATA.md
|
49
50
|
- examples/flag_and_option_specifications.from_DATA.rb
|
50
51
|
- examples/flag_and_option_specifications.md
|
51
52
|
- examples/flag_and_option_specifications.rb
|