libclimate-ruby 0.17.0 → 0.17.0.1

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.
@@ -15,568 +15,568 @@ require 'stringio'
15
15
 
16
16
  class Test_Climate_minimal < Test::Unit::TestCase
17
17
 
18
- def test_no_arguments_no_mods
19
-
20
- climate = LibCLImate::Climate.new do |cl|
21
-
22
- ;
23
- end
24
-
25
- assert $stdout.equal? climate.stdout
26
- assert $stderr.equal? climate.stderr
27
- end
28
-
29
- def test_no_arguments_set_streams
30
-
31
- climate = LibCLImate::Climate.new do |cl|
32
-
33
- cl.stdout = $stdout
34
- cl.stderr = $stderr
35
- end
36
-
37
- assert $stdout.equal? climate.stdout
38
- assert $stderr.equal? climate.stderr
39
- end
40
-
41
- def test_help_to_string
42
-
43
- str = StringIO.new
44
-
45
- climate = LibCLImate::Climate.new do |cl|
46
-
47
- cl.program_name = 'program'
48
- cl.stdout = str
49
- cl.exit_on_usage = false
50
- end
51
-
52
- argv = %w{ --help }
53
-
54
- r = climate.run argv
55
-
56
- assert_not_nil r
57
- assert_kind_of ::Hash, r
58
- assert 3 <= r.size
59
- assert_not_nil r[:flags]
60
- assert_not_nil r[:options]
61
- assert_not_nil r[:values]
62
- assert_equal 4, r[:flags].size
63
- assert_equal 4, r.flags.size
64
- assert_equal 1, r[:flags][:given].size
65
- assert_equal 1, r[:flags][:handled].size
66
- assert_equal 0, r[:flags][:unhandled].size
67
- assert_equal 0, r[:flags][:unknown].size
68
- assert_equal 4, r[:options].size
69
- assert_equal 0, r[:options][:given].size
70
- assert_equal 0, r[:options][:handled].size
71
- assert_equal 0, r[:options][:unhandled].size
72
- assert_equal 0, r[:options][:unknown].size
73
- assert_equal 0, r[:values].size
74
- assert_nil r.double_slash_index
75
-
76
- lines = str.string.split(/\n/)
77
- lines = lines.reject { |line| line.chomp.strip.empty? }
78
- lines = lines.map { |line| line.chomp.strip }
79
-
80
- assert_equal 6, lines.size
81
- assert_equal "USAGE: program [ ... flags and options ... ]", lines[0]
82
- assert_equal "flags/options:", lines[1]
83
- assert_equal "--help", lines[2]
84
- assert_equal "shows this help and terminates", lines[3]
85
- assert_equal "--version", lines[4]
86
- assert_equal "shows version and terminates", lines[5]
87
- end
18
+ def test_no_arguments_no_mods
19
+
20
+ climate = LibCLImate::Climate.new do |cl|
21
+
22
+ ;
23
+ end
24
+
25
+ assert $stdout.equal? climate.stdout
26
+ assert $stderr.equal? climate.stderr
27
+ end
28
+
29
+ def test_no_arguments_set_streams
30
+
31
+ climate = LibCLImate::Climate.new do |cl|
32
+
33
+ cl.stdout = $stdout
34
+ cl.stderr = $stderr
35
+ end
36
+
37
+ assert $stdout.equal? climate.stdout
38
+ assert $stderr.equal? climate.stderr
39
+ end
40
+
41
+ def test_help_to_string
42
+
43
+ str = StringIO.new
44
+
45
+ climate = LibCLImate::Climate.new do |cl|
46
+
47
+ cl.program_name = 'program'
48
+ cl.stdout = str
49
+ cl.exit_on_usage = false
50
+ end
51
+
52
+ argv = %w{ --help }
53
+
54
+ r = climate.run argv
55
+
56
+ assert_not_nil r
57
+ assert_kind_of ::Hash, r
58
+ assert 3 <= r.size
59
+ assert_not_nil r[:flags]
60
+ assert_not_nil r[:options]
61
+ assert_not_nil r[:values]
62
+ assert_equal 4, r[:flags].size
63
+ assert_equal 4, r.flags.size
64
+ assert_equal 1, r[:flags][:given].size
65
+ assert_equal 1, r[:flags][:handled].size
66
+ assert_equal 0, r[:flags][:unhandled].size
67
+ assert_equal 0, r[:flags][:unknown].size
68
+ assert_equal 4, r[:options].size
69
+ assert_equal 0, r[:options][:given].size
70
+ assert_equal 0, r[:options][:handled].size
71
+ assert_equal 0, r[:options][:unhandled].size
72
+ assert_equal 0, r[:options][:unknown].size
73
+ assert_equal 0, r[:values].size
74
+ assert_nil r.double_slash_index
75
+
76
+ lines = str.string.split(/\n/)
77
+ lines = lines.reject { |line| line.chomp.strip.empty? }
78
+ lines = lines.map { |line| line.chomp.strip }
79
+
80
+ assert_equal 6, lines.size
81
+ assert_equal "USAGE: program [ ... flags and options ... ]", lines[0]
82
+ assert_equal "flags/options:", lines[1]
83
+ assert_equal "--help", lines[2]
84
+ assert_equal "shows this help and terminates", lines[3]
85
+ assert_equal "--version", lines[4]
86
+ assert_equal "shows version and terminates", lines[5]
87
+ end
88
88
 
89
- def test_help_to_string_with_info_line
89
+ def test_help_to_string_with_info_line
90
90
 
91
- str = StringIO.new
91
+ str = StringIO.new
92
92
 
93
- climate = LibCLImate::Climate.new do |cl|
93
+ climate = LibCLImate::Climate.new do |cl|
94
94
 
95
- cl.program_name = 'program'
96
- cl.info_lines = 'Synesis Software Open Source'
97
- cl.stdout = str
98
- cl.exit_on_usage = false
99
- end
95
+ cl.program_name = 'program'
96
+ cl.info_lines = 'Synesis Software Open Source'
97
+ cl.stdout = str
98
+ cl.exit_on_usage = false
99
+ end
100
100
 
101
- argv = %w{ --help }
101
+ argv = %w{ --help }
102
102
 
103
- r = climate.run argv
103
+ r = climate.run argv
104
104
 
105
- assert_not_nil r
106
- assert_kind_of ::Hash, r
107
- assert 3 <= r.size
108
- assert_not_nil r[:flags]
109
- assert_not_nil r[:options]
110
- assert_not_nil r[:values]
111
- assert_equal 4, r[:flags].size
112
- assert_equal 4, r.flags.size
113
- assert_equal 1, r[:flags][:given].size
114
- assert_equal 1, r[:flags][:handled].size
115
- assert_equal 0, r[:flags][:unhandled].size
116
- assert_equal 0, r[:flags][:unknown].size
117
- assert_equal 4, r[:options].size
118
- assert_equal 0, r[:options][:given].size
119
- assert_equal 0, r[:options][:handled].size
120
- assert_equal 0, r[:options][:unhandled].size
121
- assert_equal 0, r[:options][:unknown].size
122
- assert_equal 0, r[:values].size
123
- assert_nil r.double_slash_index
105
+ assert_not_nil r
106
+ assert_kind_of ::Hash, r
107
+ assert 3 <= r.size
108
+ assert_not_nil r[:flags]
109
+ assert_not_nil r[:options]
110
+ assert_not_nil r[:values]
111
+ assert_equal 4, r[:flags].size
112
+ assert_equal 4, r.flags.size
113
+ assert_equal 1, r[:flags][:given].size
114
+ assert_equal 1, r[:flags][:handled].size
115
+ assert_equal 0, r[:flags][:unhandled].size
116
+ assert_equal 0, r[:flags][:unknown].size
117
+ assert_equal 4, r[:options].size
118
+ assert_equal 0, r[:options][:given].size
119
+ assert_equal 0, r[:options][:handled].size
120
+ assert_equal 0, r[:options][:unhandled].size
121
+ assert_equal 0, r[:options][:unknown].size
122
+ assert_equal 0, r[:values].size
123
+ assert_nil r.double_slash_index
124
124
 
125
- lines = str.string.split(/\n/)
126
- lines = lines.reject { |line| line.chomp.strip.empty? }
127
- lines = lines.map { |line| line.chomp.strip }
125
+ lines = str.string.split(/\n/)
126
+ lines = lines.reject { |line| line.chomp.strip.empty? }
127
+ lines = lines.map { |line| line.chomp.strip }
128
128
 
129
- assert_equal 7, lines.size
130
- index = -1
131
- assert_equal 'Synesis Software Open Source', lines[index += 1]
132
- assert_equal "USAGE: program [ ... flags and options ... ]", lines[index += 1]
133
- assert_equal "flags/options:", lines[index += 1]
134
- assert_equal "--help", lines[index += 1]
135
- assert_equal "shows this help and terminates", lines[index += 1]
136
- assert_equal "--version", lines[index += 1]
137
- assert_equal "shows version and terminates", lines[index += 1]
138
- end
129
+ assert_equal 7, lines.size
130
+ index = -1
131
+ assert_equal 'Synesis Software Open Source', lines[index += 1]
132
+ assert_equal "USAGE: program [ ... flags and options ... ]", lines[index += 1]
133
+ assert_equal "flags/options:", lines[index += 1]
134
+ assert_equal "--help", lines[index += 1]
135
+ assert_equal "shows this help and terminates", lines[index += 1]
136
+ assert_equal "--version", lines[index += 1]
137
+ assert_equal "shows version and terminates", lines[index += 1]
138
+ end
139
139
 
140
- def test_version_to_string
140
+ def test_version_to_string
141
141
 
142
- str = StringIO.new
142
+ str = StringIO.new
143
143
 
144
- climate = LibCLImate::Climate.new do |cl|
144
+ climate = LibCLImate::Climate.new do |cl|
145
145
 
146
- cl.program_name = 'program'
147
- cl.version = [ 1, 2, 3, 4 ]
148
- cl.stdout = str
149
- cl.exit_on_usage = false
150
- end
146
+ cl.program_name = 'program'
147
+ cl.version = [ 1, 2, 3, 4 ]
148
+ cl.stdout = str
149
+ cl.exit_on_usage = false
150
+ end
151
151
 
152
- argv = %w{ --version }
152
+ argv = %w{ --version }
153
153
 
154
- climate.run argv
154
+ climate.run argv
155
155
 
156
- lines = str.string.split(/\n/)
157
- lines = lines.reject { |line| line.chomp.strip.empty? }
158
- lines = lines.map { |line| line.chomp.strip }
156
+ lines = str.string.split(/\n/)
157
+ lines = lines.reject { |line| line.chomp.strip.empty? }
158
+ lines = lines.map { |line| line.chomp.strip }
159
159
 
160
- assert_equal 1, lines.size
161
- assert_equal "program 1.2.3.4", lines[0]
162
- end
160
+ assert_equal 1, lines.size
161
+ assert_equal "program 1.2.3.4", lines[0]
162
+ end
163
163
 
164
- def test_unrecognised_flag
164
+ def test_unrecognised_flag
165
165
 
166
- strout = StringIO.new
167
- strerr = StringIO.new
166
+ strout = StringIO.new
167
+ strerr = StringIO.new
168
168
 
169
- climate = LibCLImate::Climate.new do |cl|
169
+ climate = LibCLImate::Climate.new do |cl|
170
170
 
171
- cl.program_name = 'program'
172
- cl.stdout = strout
173
- cl.stderr = strerr
174
- cl.exit_on_unknown = false
175
- end
171
+ cl.program_name = 'program'
172
+ cl.stdout = strout
173
+ cl.stderr = strerr
174
+ cl.exit_on_unknown = false
175
+ end
176
176
 
177
- argv = %w{ --unknown }
177
+ argv = %w{ --unknown }
178
178
 
179
- climate.run argv
179
+ climate.run argv
180
180
 
181
- lines_out = strout.string.split /\n/
182
- lines_err = strerr.string.split /\n/
181
+ lines_out = strout.string.split /\n/
182
+ lines_err = strerr.string.split /\n/
183
183
 
184
- assert_equal 0, lines_out.size
185
- assert_equal 1, lines_err.size
186
- assert_equal "program: unrecognised flag '--unknown'; use --help for usage", lines_err[0]
187
- end
184
+ assert_equal 0, lines_out.size
185
+ assert_equal 1, lines_err.size
186
+ assert_equal "program: unrecognised flag '--unknown'; use --help for usage", lines_err[0]
187
+ end
188
188
 
189
- def test_unrecognised_flag_terse
189
+ def test_unrecognised_flag_terse
190
190
 
191
- strout = StringIO.new
192
- strerr = StringIO.new
193
-
194
- climate = LibCLImate::Climate.new do |cl|
195
-
196
- cl.program_name = 'program'
197
- cl.stdout = strout
198
- cl.stderr = strerr
199
- cl.exit_on_unknown = false
200
- cl.usage_help_suffix = ''
201
- end
202
-
203
- argv = %w{ --unknown }
204
-
205
- climate.run argv
206
-
207
- lines_out = strout.string.split /\n/
208
- lines_err = strerr.string.split /\n/
191
+ strout = StringIO.new
192
+ strerr = StringIO.new
193
+
194
+ climate = LibCLImate::Climate.new do |cl|
195
+
196
+ cl.program_name = 'program'
197
+ cl.stdout = strout
198
+ cl.stderr = strerr
199
+ cl.exit_on_unknown = false
200
+ cl.usage_help_suffix = ''
201
+ end
202
+
203
+ argv = %w{ --unknown }
204
+
205
+ climate.run argv
206
+
207
+ lines_out = strout.string.split /\n/
208
+ lines_err = strerr.string.split /\n/
209
209
 
210
- assert_equal 0, lines_out.size
211
- assert_equal 1, lines_err.size
212
- assert_equal "program: unrecognised flag '--unknown'", lines_err[0]
213
- end
210
+ assert_equal 0, lines_out.size
211
+ assert_equal 1, lines_err.size
212
+ assert_equal "program: unrecognised flag '--unknown'", lines_err[0]
213
+ end
214
214
 
215
- def test_unrecognised_option
215
+ def test_unrecognised_option
216
216
 
217
- strout = StringIO.new
218
- strerr = StringIO.new
217
+ strout = StringIO.new
218
+ strerr = StringIO.new
219
219
 
220
- climate = LibCLImate::Climate.new do |cl|
220
+ climate = LibCLImate::Climate.new do |cl|
221
221
 
222
- cl.program_name = 'program'
223
- cl.stdout = strout
224
- cl.stderr = strerr
225
- cl.exit_on_unknown = false
226
- end
222
+ cl.program_name = 'program'
223
+ cl.stdout = strout
224
+ cl.stderr = strerr
225
+ cl.exit_on_unknown = false
226
+ end
227
227
 
228
- argv = %w{ --unknown=10 }
228
+ argv = %w{ --unknown=10 }
229
229
 
230
- climate.run argv
230
+ climate.run argv
231
231
 
232
- lines_out = strout.string.split /\n/
233
- lines_err = strerr.string.split /\n/
232
+ lines_out = strout.string.split /\n/
233
+ lines_err = strerr.string.split /\n/
234
234
 
235
- assert_equal 0, lines_out.size
236
- assert_equal 1, lines_err.size
237
- assert_equal "program: unrecognised option '--unknown=10'; use --help for usage", lines_err[0]
238
- end
235
+ assert_equal 0, lines_out.size
236
+ assert_equal 1, lines_err.size
237
+ assert_equal "program: unrecognised option '--unknown=10'; use --help for usage", lines_err[0]
238
+ end
239
239
 
240
- def test_one_custom_flag_help_to_string
240
+ def test_one_custom_flag_help_to_string
241
241
 
242
- str = StringIO.new
242
+ str = StringIO.new
243
243
 
244
- is_verbose = false
244
+ is_verbose = false
245
245
 
246
- climate = LibCLImate::Climate.new do |cl|
246
+ climate = LibCLImate::Climate.new do |cl|
247
247
 
248
- cl.program_name = 'program'
249
- cl.stdout = str
250
- cl.exit_on_usage = false
248
+ cl.program_name = 'program'
249
+ cl.stdout = str
250
+ cl.exit_on_usage = false
251
251
 
252
- bl = false#proc { is_verbose = true }
252
+ bl = false#proc { is_verbose = true }
253
253
 
254
- cl.add_flag('--succinct', alias: '-s', help: 'operates succinctly')
255
- cl.add_flag('--verbose', alias: '-v', help: 'operates verbosely') { is_verbose = true }
256
- end
254
+ cl.add_flag('--succinct', alias: '-s', help: 'operates succinctly')
255
+ cl.add_flag('--verbose', alias: '-v', help: 'operates verbosely') { is_verbose = true }
256
+ end
257
257
 
258
- argv = %w{ --help --verbose --succinct }
258
+ argv = %w{ --help --verbose --succinct }
259
259
 
260
- r = climate.run argv
260
+ r = climate.run argv
261
261
 
262
- assert_not_nil r
263
- assert_kind_of ::Hash, r
264
- assert 3 <= r.size
265
- assert argv.equal? r.argv
266
- assert_not_nil r[:flags]
267
- assert_not_nil r[:options]
268
- assert_not_nil r[:values]
269
- assert_equal 4, r[:flags].size
270
- assert_equal 3, r[:flags][:given].size
271
- assert_equal 2, r[:flags][:handled].size
272
- assert_equal 1, r[:flags][:unhandled].size
273
- assert_equal 0, r[:flags][:unknown].size
274
- assert_equal 4, r[:options].size
275
- assert_equal 0, r[:options][:given].size
276
- assert_equal 0, r[:options][:handled].size
277
- assert_equal 0, r[:options][:unhandled].size
278
- assert_equal 0, r[:options][:unknown].size
279
- assert_equal 0, r[:values].size
280
- assert_equal 0, r.values.size
281
- lines = str.string.split(/\n/)
282
- lines = lines.reject { |line| line.chomp.strip.empty? }
283
- lines = lines.map { |line| line.chomp.strip }
284
-
285
- assert_equal 12, lines.size
286
- index = -1
287
- assert_equal "USAGE: program [ ... flags and options ... ]", lines[index += 1]
288
- assert_equal "flags/options:", lines[index += 1]
289
- assert_equal "--help", lines[index += 1]
290
- assert_equal "shows this help and terminates", lines[index += 1]
291
- assert_equal "--version", lines[index += 1]
292
- assert_equal "shows version and terminates", lines[index += 1]
293
- assert_equal "-s", lines[index += 1]
294
- assert_equal "--succinct", lines[index += 1]
295
- assert_equal "operates succinctly", lines[index += 1]
296
- assert_equal "-v", lines[index += 1]
297
- assert_equal "--verbose", lines[index += 1]
298
- assert_equal "operates verbosely", lines[index += 1]
299
- end
300
-
301
- def test_one_custom_flag_with_select
302
-
303
- str = StringIO.new
304
-
305
- is_verbose = false
306
-
307
- climate = LibCLImate::Climate.new do |cl|
308
-
309
- cl.program_name = 'program'
310
- cl.stdout = str
311
- cl.exit_on_usage = false
312
-
313
- cl.add_flag('--verbose', alias: '-v', help: 'operates verbosely') { is_verbose = true }
314
- end
315
-
316
- argv = %w{ --verbose }
317
-
318
- r = climate.run argv
319
-
320
- assert_not_nil r
321
- assert_kind_of ::Hash, r
322
- assert 3 <= r.size
323
- assert argv.equal? r.argv
324
- assert_not_nil r[:flags]
325
- assert_not_nil r[:options]
326
- assert_not_nil r[:values]
327
- assert_equal 4, r[:flags].size
328
- assert_equal 1, r[:flags][:given].size
329
- assert_equal 1, r[:flags][:handled].size
330
- assert_equal 0, r[:flags][:unhandled].size
331
- assert_equal 0, r[:flags][:unknown].size
332
- assert_equal 4, r[:options].size
333
- assert_equal 0, r[:options][:given].size
334
- assert_equal 0, r[:options][:handled].size
335
- assert_equal 0, r[:options][:unhandled].size
336
- assert_equal 0, r[:options][:unknown].size
337
- assert_equal 0, r[:values].size
338
- lines = str.string.split(/\n/)
339
- lines = lines.reject { |line| line.chomp.strip.empty? }
340
- lines = lines.map { |line| line.chomp.strip }
341
-
342
- assert_equal 0, lines.size
343
- assert is_verbose, "is_verbose not altered"
344
- end
345
-
346
- def test_one_custom_option_with_select
347
-
348
- str = StringIO.new
349
-
350
- verbosity = 1
351
-
352
- climate = LibCLImate::Climate.new do |cl|
353
-
354
- cl.program_name = 'program'
355
- cl.stdout = str
356
- cl.exit_on_usage = false
357
-
358
- cl.add_option('--verbosity', alias: '-v', help: 'determines level of verbose operation') { |o| verbosity = o.value }
359
- end
360
-
361
- argv = %w{ -v 2 }
362
-
363
- r = climate.run argv
364
-
365
- assert_not_nil r
366
- assert_kind_of ::Hash, r
367
- assert 3 <= r.size
368
- assert argv.equal? r.argv
369
- assert_not_nil r[:flags]
370
- assert_not_nil r[:options]
371
- assert_not_nil r[:values]
372
- assert_equal 4, r[:flags].size
373
- assert_equal 0, r[:flags][:given].size
374
- assert_equal 0, r[:flags][:handled].size
375
- assert_equal 0, r[:flags][:unhandled].size
376
- assert_equal 0, r[:flags][:unknown].size
377
- assert_equal 4, r[:options].size
378
- assert_equal 1, r[:options][:given].size
379
- assert_equal 1, r[:options][:handled].size
380
- assert_equal 0, r[:options][:unhandled].size
381
- assert_equal 0, r[:options][:unknown].size
382
- assert_equal 0, r[:values].size
383
- lines = str.string.split(/\n/)
384
- lines = lines.reject { |line| line.chomp.strip.empty? }
385
- lines = lines.map { |line| line.chomp.strip }
386
-
387
- assert_equal 0, lines.size
388
- assert_equal '2', verbosity
389
- end
390
-
391
- def test_one_custom_option_that_is_required
392
-
393
- str = StringIO.new
394
-
395
- climate = LibCLImate::Climate.new do |cl|
396
-
397
- cl.program_name = 'program'
398
-
399
- cl.add_option('--verbosity', alias: '-v', help: 'determines level of verbose operation', required: true)
400
- end
401
-
402
- assert climate.specifications[2].required?
403
-
404
- r = climate.run %w{ -v 2 }
405
-
406
- assert_not_nil r
407
- assert_kind_of ::Hash, r
408
- assert 3 <= r.size
409
- assert_not_nil r[:flags]
410
- assert_not_nil r[:options]
411
- assert_not_nil r[:values]
412
- assert_equal 4, r[:flags].size
413
- assert_equal 0, r[:flags][:given].size
414
- assert_equal 0, r[:flags][:handled].size
415
- assert_equal 0, r[:flags][:unhandled].size
416
- assert_equal 0, r[:flags][:unknown].size
417
- assert_equal 4, r[:options].size
418
- assert_equal 1, r[:options][:given].size
419
- assert_equal 0, r[:options][:handled].size
420
- assert_equal 1, r[:options][:unhandled].size
421
- assert_equal 0, r[:options][:unknown].size
422
- assert_equal 0, r[:values].size
423
- assert_equal 0, r[:missing_option_aliases].size
424
- lines = str.string.split(/\n/)
425
- lines = lines.reject { |line| line.chomp.strip.empty? }
426
- lines = lines.map { |line| line.chomp.strip }
427
-
428
- assert_equal 0, lines.size
429
- end
430
-
431
- def test_one_custom_option_that_is_required_and_missing
432
-
433
- str = StringIO.new
434
- stre = StringIO.new
435
-
436
- climate = LibCLImate::Climate.new do |cl|
437
-
438
- cl.program_name = 'program'
439
- cl.stdout = str
440
- cl.stderr = stre
441
- cl.exit_on_usage = false
442
- cl.exit_on_missing = false
443
-
444
- cl.add_option('--verbosity', alias: '-v', help: 'determines level of verbose operation', required: true)
445
- end
446
-
447
- r = climate.run %w{ }
448
-
449
- assert climate.specifications[2].required?
450
-
451
- assert_not_nil r
452
- assert_kind_of ::Hash, r
453
- assert 3 <= r.size
454
- assert_not_nil r[:flags]
455
- assert_not_nil r[:options]
456
- assert_not_nil r[:values]
457
- assert_equal 4, r[:flags].size
458
- assert_equal 0, r[:flags][:given].size
459
- assert_equal 0, r[:flags][:handled].size
460
- assert_equal 0, r[:flags][:unhandled].size
461
- assert_equal 0, r[:flags][:unknown].size
462
- assert_equal 4, r[:options].size
463
- assert_equal 0, r[:options][:given].size
464
- assert_equal 0, r[:options][:handled].size
465
- assert_equal 0, r[:options][:unhandled].size
466
- assert_equal 0, r[:options][:unknown].size
467
- assert_equal 0, r[:values].size
468
- assert_equal 1, r[:missing_option_aliases].size
469
- lines = str.string.split(/\n/)
470
- lines = lines.reject { |line| line.chomp.strip.empty? }
471
- lines = lines.map { |line| line.chomp.strip }
472
- elines = stre.string.split(/\n/)
473
- elines = elines.reject { |line| line.chomp.strip.empty? }
474
- elines = elines.map { |line| line.chomp.strip }
475
-
476
- assert_equal 0, lines.size
477
- assert_equal 1, elines.size
478
- assert_equal "program: '--verbosity' not specified; use --help for usage", elines[0]
479
- end
480
-
481
- def test_one_custom_option_that_is_required_and_missing_with_required_message_custom
482
-
483
- str = StringIO.new
484
- stre = StringIO.new
485
-
486
- climate = LibCLImate::Climate.new do |cl|
487
-
488
- cl.program_name = 'program'
489
- cl.stdout = str
490
- cl.stderr = stre
491
- cl.exit_on_usage = false
492
- cl.exit_on_missing = false
493
-
494
- cl.add_option('--verbosity', alias: '-v', help: 'determines level of verbose operation', required: true, required_message: 'Verbosity not specified')
495
- end
496
-
497
- r = climate.run %w{ }
498
-
499
- assert climate.specifications[2].required?
500
-
501
- assert_not_nil r
502
- assert_kind_of ::Hash, r
503
- assert 3 <= r.size
504
- assert_not_nil r[:flags]
505
- assert_not_nil r[:options]
506
- assert_not_nil r[:values]
507
- assert_equal 4, r[:flags].size
508
- assert_equal 0, r[:flags][:given].size
509
- assert_equal 0, r[:flags][:handled].size
510
- assert_equal 0, r[:flags][:unhandled].size
511
- assert_equal 0, r[:flags][:unknown].size
512
- assert_equal 4, r[:options].size
513
- assert_equal 0, r[:options][:given].size
514
- assert_equal 0, r[:options][:handled].size
515
- assert_equal 0, r[:options][:unhandled].size
516
- assert_equal 0, r[:options][:unknown].size
517
- assert_equal 0, r[:values].size
518
- assert_equal 1, r[:missing_option_aliases].size
519
- lines = str.string.split(/\n/)
520
- lines = lines.reject { |line| line.chomp.strip.empty? }
521
- lines = lines.map { |line| line.chomp.strip }
522
- elines = stre.string.split(/\n/)
523
- elines = elines.reject { |line| line.chomp.strip.empty? }
524
- elines = elines.map { |line| line.chomp.strip }
525
-
526
- assert_equal 0, lines.size
527
- assert_equal 1, elines.size
528
- assert_equal "program: Verbosity not specified", elines[0]
529
- end
530
-
531
- def test_one_custom_option_that_is_required_and_missing_with_required_message_name
532
-
533
- str = StringIO.new
534
- stre = StringIO.new
535
-
536
- climate = LibCLImate::Climate.new do |cl|
537
-
538
- cl.program_name = 'program'
539
- cl.stdout = str
540
- cl.stderr = stre
541
- cl.exit_on_usage = false
542
- cl.exit_on_missing = false
543
-
544
- cl.add_option('--verbosity', alias: '-v', help: 'determines level of verbose operation', required: true, required_message: "\0Verbosity")
545
- end
546
-
547
- r = climate.run %w{ }
548
-
549
- assert climate.specifications[2].required?
550
-
551
- assert_not_nil r
552
- assert_kind_of ::Hash, r
553
- assert 3 <= r.size
554
- assert_not_nil r[:flags]
555
- assert_not_nil r[:options]
556
- assert_not_nil r[:values]
557
- assert_equal 4, r[:flags].size
558
- assert_equal 0, r[:flags][:given].size
559
- assert_equal 0, r[:flags][:handled].size
560
- assert_equal 0, r[:flags][:unhandled].size
561
- assert_equal 0, r[:flags][:unknown].size
562
- assert_equal 4, r[:options].size
563
- assert_equal 0, r[:options][:given].size
564
- assert_equal 0, r[:options][:handled].size
565
- assert_equal 0, r[:options][:unhandled].size
566
- assert_equal 0, r[:options][:unknown].size
567
- assert_equal 0, r[:values].size
568
- assert_equal 1, r[:missing_option_aliases].size
569
- lines = str.string.split(/\n/)
570
- lines = lines.reject { |line| line.chomp.strip.empty? }
571
- lines = lines.map { |line| line.chomp.strip }
572
- elines = stre.string.split(/\n/)
573
- elines = elines.reject { |line| line.chomp.strip.empty? }
574
- elines = elines.map { |line| line.chomp.strip }
575
-
576
- assert_equal 0, lines.size
577
- assert_equal 1, elines.size
578
- assert_equal "program: Verbosity not specified; use --help for usage", elines[0]
579
- end
262
+ assert_not_nil r
263
+ assert_kind_of ::Hash, r
264
+ assert 3 <= r.size
265
+ assert argv.equal? r.argv
266
+ assert_not_nil r[:flags]
267
+ assert_not_nil r[:options]
268
+ assert_not_nil r[:values]
269
+ assert_equal 4, r[:flags].size
270
+ assert_equal 3, r[:flags][:given].size
271
+ assert_equal 2, r[:flags][:handled].size
272
+ assert_equal 1, r[:flags][:unhandled].size
273
+ assert_equal 0, r[:flags][:unknown].size
274
+ assert_equal 4, r[:options].size
275
+ assert_equal 0, r[:options][:given].size
276
+ assert_equal 0, r[:options][:handled].size
277
+ assert_equal 0, r[:options][:unhandled].size
278
+ assert_equal 0, r[:options][:unknown].size
279
+ assert_equal 0, r[:values].size
280
+ assert_equal 0, r.values.size
281
+ lines = str.string.split(/\n/)
282
+ lines = lines.reject { |line| line.chomp.strip.empty? }
283
+ lines = lines.map { |line| line.chomp.strip }
284
+
285
+ assert_equal 12, lines.size
286
+ index = -1
287
+ assert_equal "USAGE: program [ ... flags and options ... ]", lines[index += 1]
288
+ assert_equal "flags/options:", lines[index += 1]
289
+ assert_equal "--help", lines[index += 1]
290
+ assert_equal "shows this help and terminates", lines[index += 1]
291
+ assert_equal "--version", lines[index += 1]
292
+ assert_equal "shows version and terminates", lines[index += 1]
293
+ assert_equal "-s", lines[index += 1]
294
+ assert_equal "--succinct", lines[index += 1]
295
+ assert_equal "operates succinctly", lines[index += 1]
296
+ assert_equal "-v", lines[index += 1]
297
+ assert_equal "--verbose", lines[index += 1]
298
+ assert_equal "operates verbosely", lines[index += 1]
299
+ end
300
+
301
+ def test_one_custom_flag_with_select
302
+
303
+ str = StringIO.new
304
+
305
+ is_verbose = false
306
+
307
+ climate = LibCLImate::Climate.new do |cl|
308
+
309
+ cl.program_name = 'program'
310
+ cl.stdout = str
311
+ cl.exit_on_usage = false
312
+
313
+ cl.add_flag('--verbose', alias: '-v', help: 'operates verbosely') { is_verbose = true }
314
+ end
315
+
316
+ argv = %w{ --verbose }
317
+
318
+ r = climate.run argv
319
+
320
+ assert_not_nil r
321
+ assert_kind_of ::Hash, r
322
+ assert 3 <= r.size
323
+ assert argv.equal? r.argv
324
+ assert_not_nil r[:flags]
325
+ assert_not_nil r[:options]
326
+ assert_not_nil r[:values]
327
+ assert_equal 4, r[:flags].size
328
+ assert_equal 1, r[:flags][:given].size
329
+ assert_equal 1, r[:flags][:handled].size
330
+ assert_equal 0, r[:flags][:unhandled].size
331
+ assert_equal 0, r[:flags][:unknown].size
332
+ assert_equal 4, r[:options].size
333
+ assert_equal 0, r[:options][:given].size
334
+ assert_equal 0, r[:options][:handled].size
335
+ assert_equal 0, r[:options][:unhandled].size
336
+ assert_equal 0, r[:options][:unknown].size
337
+ assert_equal 0, r[:values].size
338
+ lines = str.string.split(/\n/)
339
+ lines = lines.reject { |line| line.chomp.strip.empty? }
340
+ lines = lines.map { |line| line.chomp.strip }
341
+
342
+ assert_equal 0, lines.size
343
+ assert is_verbose, "is_verbose not altered"
344
+ end
345
+
346
+ def test_one_custom_option_with_select
347
+
348
+ str = StringIO.new
349
+
350
+ verbosity = 1
351
+
352
+ climate = LibCLImate::Climate.new do |cl|
353
+
354
+ cl.program_name = 'program'
355
+ cl.stdout = str
356
+ cl.exit_on_usage = false
357
+
358
+ cl.add_option('--verbosity', alias: '-v', help: 'determines level of verbose operation') { |o| verbosity = o.value }
359
+ end
360
+
361
+ argv = %w{ -v 2 }
362
+
363
+ r = climate.run argv
364
+
365
+ assert_not_nil r
366
+ assert_kind_of ::Hash, r
367
+ assert 3 <= r.size
368
+ assert argv.equal? r.argv
369
+ assert_not_nil r[:flags]
370
+ assert_not_nil r[:options]
371
+ assert_not_nil r[:values]
372
+ assert_equal 4, r[:flags].size
373
+ assert_equal 0, r[:flags][:given].size
374
+ assert_equal 0, r[:flags][:handled].size
375
+ assert_equal 0, r[:flags][:unhandled].size
376
+ assert_equal 0, r[:flags][:unknown].size
377
+ assert_equal 4, r[:options].size
378
+ assert_equal 1, r[:options][:given].size
379
+ assert_equal 1, r[:options][:handled].size
380
+ assert_equal 0, r[:options][:unhandled].size
381
+ assert_equal 0, r[:options][:unknown].size
382
+ assert_equal 0, r[:values].size
383
+ lines = str.string.split(/\n/)
384
+ lines = lines.reject { |line| line.chomp.strip.empty? }
385
+ lines = lines.map { |line| line.chomp.strip }
386
+
387
+ assert_equal 0, lines.size
388
+ assert_equal '2', verbosity
389
+ end
390
+
391
+ def test_one_custom_option_that_is_required
392
+
393
+ str = StringIO.new
394
+
395
+ climate = LibCLImate::Climate.new do |cl|
396
+
397
+ cl.program_name = 'program'
398
+
399
+ cl.add_option('--verbosity', alias: '-v', help: 'determines level of verbose operation', required: true)
400
+ end
401
+
402
+ assert climate.specifications[2].required?
403
+
404
+ r = climate.run %w{ -v 2 }
405
+
406
+ assert_not_nil r
407
+ assert_kind_of ::Hash, r
408
+ assert 3 <= r.size
409
+ assert_not_nil r[:flags]
410
+ assert_not_nil r[:options]
411
+ assert_not_nil r[:values]
412
+ assert_equal 4, r[:flags].size
413
+ assert_equal 0, r[:flags][:given].size
414
+ assert_equal 0, r[:flags][:handled].size
415
+ assert_equal 0, r[:flags][:unhandled].size
416
+ assert_equal 0, r[:flags][:unknown].size
417
+ assert_equal 4, r[:options].size
418
+ assert_equal 1, r[:options][:given].size
419
+ assert_equal 0, r[:options][:handled].size
420
+ assert_equal 1, r[:options][:unhandled].size
421
+ assert_equal 0, r[:options][:unknown].size
422
+ assert_equal 0, r[:values].size
423
+ assert_equal 0, r[:missing_option_aliases].size
424
+ lines = str.string.split(/\n/)
425
+ lines = lines.reject { |line| line.chomp.strip.empty? }
426
+ lines = lines.map { |line| line.chomp.strip }
427
+
428
+ assert_equal 0, lines.size
429
+ end
430
+
431
+ def test_one_custom_option_that_is_required_and_missing
432
+
433
+ str = StringIO.new
434
+ stre = StringIO.new
435
+
436
+ climate = LibCLImate::Climate.new do |cl|
437
+
438
+ cl.program_name = 'program'
439
+ cl.stdout = str
440
+ cl.stderr = stre
441
+ cl.exit_on_usage = false
442
+ cl.exit_on_missing = false
443
+
444
+ cl.add_option('--verbosity', alias: '-v', help: 'determines level of verbose operation', required: true)
445
+ end
446
+
447
+ r = climate.run %w{ }
448
+
449
+ assert climate.specifications[2].required?
450
+
451
+ assert_not_nil r
452
+ assert_kind_of ::Hash, r
453
+ assert 3 <= r.size
454
+ assert_not_nil r[:flags]
455
+ assert_not_nil r[:options]
456
+ assert_not_nil r[:values]
457
+ assert_equal 4, r[:flags].size
458
+ assert_equal 0, r[:flags][:given].size
459
+ assert_equal 0, r[:flags][:handled].size
460
+ assert_equal 0, r[:flags][:unhandled].size
461
+ assert_equal 0, r[:flags][:unknown].size
462
+ assert_equal 4, r[:options].size
463
+ assert_equal 0, r[:options][:given].size
464
+ assert_equal 0, r[:options][:handled].size
465
+ assert_equal 0, r[:options][:unhandled].size
466
+ assert_equal 0, r[:options][:unknown].size
467
+ assert_equal 0, r[:values].size
468
+ assert_equal 1, r[:missing_option_aliases].size
469
+ lines = str.string.split(/\n/)
470
+ lines = lines.reject { |line| line.chomp.strip.empty? }
471
+ lines = lines.map { |line| line.chomp.strip }
472
+ elines = stre.string.split(/\n/)
473
+ elines = elines.reject { |line| line.chomp.strip.empty? }
474
+ elines = elines.map { |line| line.chomp.strip }
475
+
476
+ assert_equal 0, lines.size
477
+ assert_equal 1, elines.size
478
+ assert_equal "program: '--verbosity' not specified; use --help for usage", elines[0]
479
+ end
480
+
481
+ def test_one_custom_option_that_is_required_and_missing_with_required_message_custom
482
+
483
+ str = StringIO.new
484
+ stre = StringIO.new
485
+
486
+ climate = LibCLImate::Climate.new do |cl|
487
+
488
+ cl.program_name = 'program'
489
+ cl.stdout = str
490
+ cl.stderr = stre
491
+ cl.exit_on_usage = false
492
+ cl.exit_on_missing = false
493
+
494
+ cl.add_option('--verbosity', alias: '-v', help: 'determines level of verbose operation', required: true, required_message: 'Verbosity not specified')
495
+ end
496
+
497
+ r = climate.run %w{ }
498
+
499
+ assert climate.specifications[2].required?
500
+
501
+ assert_not_nil r
502
+ assert_kind_of ::Hash, r
503
+ assert 3 <= r.size
504
+ assert_not_nil r[:flags]
505
+ assert_not_nil r[:options]
506
+ assert_not_nil r[:values]
507
+ assert_equal 4, r[:flags].size
508
+ assert_equal 0, r[:flags][:given].size
509
+ assert_equal 0, r[:flags][:handled].size
510
+ assert_equal 0, r[:flags][:unhandled].size
511
+ assert_equal 0, r[:flags][:unknown].size
512
+ assert_equal 4, r[:options].size
513
+ assert_equal 0, r[:options][:given].size
514
+ assert_equal 0, r[:options][:handled].size
515
+ assert_equal 0, r[:options][:unhandled].size
516
+ assert_equal 0, r[:options][:unknown].size
517
+ assert_equal 0, r[:values].size
518
+ assert_equal 1, r[:missing_option_aliases].size
519
+ lines = str.string.split(/\n/)
520
+ lines = lines.reject { |line| line.chomp.strip.empty? }
521
+ lines = lines.map { |line| line.chomp.strip }
522
+ elines = stre.string.split(/\n/)
523
+ elines = elines.reject { |line| line.chomp.strip.empty? }
524
+ elines = elines.map { |line| line.chomp.strip }
525
+
526
+ assert_equal 0, lines.size
527
+ assert_equal 1, elines.size
528
+ assert_equal "program: Verbosity not specified", elines[0]
529
+ end
530
+
531
+ def test_one_custom_option_that_is_required_and_missing_with_required_message_name
532
+
533
+ str = StringIO.new
534
+ stre = StringIO.new
535
+
536
+ climate = LibCLImate::Climate.new do |cl|
537
+
538
+ cl.program_name = 'program'
539
+ cl.stdout = str
540
+ cl.stderr = stre
541
+ cl.exit_on_usage = false
542
+ cl.exit_on_missing = false
543
+
544
+ cl.add_option('--verbosity', alias: '-v', help: 'determines level of verbose operation', required: true, required_message: "\0Verbosity")
545
+ end
546
+
547
+ r = climate.run %w{ }
548
+
549
+ assert climate.specifications[2].required?
550
+
551
+ assert_not_nil r
552
+ assert_kind_of ::Hash, r
553
+ assert 3 <= r.size
554
+ assert_not_nil r[:flags]
555
+ assert_not_nil r[:options]
556
+ assert_not_nil r[:values]
557
+ assert_equal 4, r[:flags].size
558
+ assert_equal 0, r[:flags][:given].size
559
+ assert_equal 0, r[:flags][:handled].size
560
+ assert_equal 0, r[:flags][:unhandled].size
561
+ assert_equal 0, r[:flags][:unknown].size
562
+ assert_equal 4, r[:options].size
563
+ assert_equal 0, r[:options][:given].size
564
+ assert_equal 0, r[:options][:handled].size
565
+ assert_equal 0, r[:options][:unhandled].size
566
+ assert_equal 0, r[:options][:unknown].size
567
+ assert_equal 0, r[:values].size
568
+ assert_equal 1, r[:missing_option_aliases].size
569
+ lines = str.string.split(/\n/)
570
+ lines = lines.reject { |line| line.chomp.strip.empty? }
571
+ lines = lines.map { |line| line.chomp.strip }
572
+ elines = stre.string.split(/\n/)
573
+ elines = elines.reject { |line| line.chomp.strip.empty? }
574
+ elines = elines.map { |line| line.chomp.strip }
575
+
576
+ assert_equal 0, lines.size
577
+ assert_equal 1, elines.size
578
+ assert_equal "program: Verbosity not specified; use --help for usage", elines[0]
579
+ end
580
580
  end
581
581
 
582
582
  # ############################## end of file ############################# #