rubycom 0.2.5 → 0.3.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.
@@ -1,3 +1,4 @@
1
+ #!/usr/bin/env ruby
1
2
  require "#{File.expand_path(File.dirname(__FILE__))}/../../lib/rubycom.rb"
2
3
  require "#{File.expand_path(File.dirname(__FILE__))}/util_test_module.rb"
3
4
  require "#{File.expand_path(File.dirname(__FILE__))}/util_test_no_singleton.rb"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubycom
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.5
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Danny Purcell
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-06-27 00:00:00.000000000 Z
11
+ date: 2013-07-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -96,9 +96,15 @@ files:
96
96
  - README.md
97
97
  - Rakefile
98
98
  - lib/rubycom.rb
99
+ - lib/rubycom/arguments.rb
100
+ - lib/rubycom/commands.rb
101
+ - lib/rubycom/documentation.rb
99
102
  - lib/rubycom/version.rb
100
103
  - rubycom.gemspec
101
- - test/rubycom/test_rubycom.rb
104
+ - test/rubycom/arguments_test.rb
105
+ - test/rubycom/commands_test.rb
106
+ - test/rubycom/documentation_test.rb
107
+ - test/rubycom/rubycom_test.rb
102
108
  - test/rubycom/util_test_composite.rb
103
109
  - test/rubycom/util_test_job.yaml
104
110
  - test/rubycom/util_test_module.rb
@@ -129,7 +135,10 @@ signing_key:
129
135
  specification_version: 4
130
136
  summary: Converts singleton methods to command-line functions upon inclusion.
131
137
  test_files:
132
- - test/rubycom/test_rubycom.rb
138
+ - test/rubycom/arguments_test.rb
139
+ - test/rubycom/commands_test.rb
140
+ - test/rubycom/documentation_test.rb
141
+ - test/rubycom/rubycom_test.rb
133
142
  - test/rubycom/util_test_composite.rb
134
143
  - test/rubycom/util_test_job.yaml
135
144
  - test/rubycom/util_test_module.rb
@@ -1,762 +0,0 @@
1
- require 'time'
2
-
3
- require "#{File.expand_path(File.dirname(__FILE__))}/util_test_module.rb"
4
- require "#{File.expand_path(File.dirname(__FILE__))}/util_test_composite.rb"
5
- require "#{File.expand_path(File.dirname(__FILE__))}/util_test_no_singleton.rb"
6
-
7
- require 'test/unit'
8
- #noinspection RubyInstanceMethodNamingConvention
9
- class TestRubycom < Test::Unit::TestCase
10
-
11
- def test_get_doc
12
- method = UtilTestModule.public_method(:test_command_with_return)
13
- result_hash = Rubycom.get_doc(method)
14
- assert_equal('A test_command with a return argument'.gsub(/\n|\r|\s/, ''), result_hash[:desc].join("\n").gsub(/\n|\r|\s/, ''))
15
- assert_equal(2, result_hash[:param].size)
16
- assert_equal('[String] test_arg a test argument'.gsub(/\n|\r|\s/, ''), result_hash[:param][0].gsub(/\n|\r|\s/, ''))
17
- assert_equal('[Integer] test_option_int an optional test argument which happens to be an Integer'.gsub(/\n|\r|\s/, ''), result_hash[:param][1].gsub(/\n|\r|\s/, ''))
18
- assert_equal(2, result_hash[:return].size)
19
- assert_equal('[Array] an array including both params if test_option_int != 1'.gsub(/\n|\r|\s/, ''), result_hash[:return][0].gsub(/\n|\r|\s/, ''))
20
- assert_equal('[String] a the first param if test_option_int == 1'.gsub(/\n|\r|\s/, ''), result_hash[:return][1].gsub(/\n|\r|\s/, ''))
21
- end
22
-
23
- def test_get_command_usage
24
- base = UtilTestModule
25
- command_name = 'test_command_arg_false'
26
- result = Rubycom.get_command_usage(base, command_name)
27
- expected = <<-END.gsub(/^ {4}/, '')
28
- Usage: test_command_arg_false [-test_flag=val]
29
- Parameters:
30
- [Boolean] test_flag a test Boolean argument
31
- Returns:
32
- [Boolean] the flag passed in
33
- END
34
- assert_equal(expected.gsub(/\n|\r|\s/, ''), result.gsub(/\n|\r|\s/, ''))
35
- end
36
-
37
- def test_get_command_usage_nil_base
38
- base = nil
39
- command_name = 'test_command'
40
- assert_raise(Rubycom::CLIError) { Rubycom.get_command_usage(base, command_name) }
41
- end
42
-
43
- def test_get_command_usage_nil_command
44
- base = UtilTestModule
45
- command_name = nil
46
- result = Rubycom.get_command_usage(base, command_name)
47
- assert_equal('No command specified.', result)
48
- end
49
-
50
- def test_get_command_usage_no_command
51
- base = UtilTestModule
52
- command_name = ''
53
- result = Rubycom.get_command_usage(base, command_name)
54
- assert_equal('No command specified.', result)
55
- end
56
-
57
- def test_get_command_usage_bad_base
58
- base = ":asd"
59
- command_name = 'test_command_with_options'
60
- assert_raise(Rubycom::CLIError) { Rubycom.get_command_usage(base, command_name) }
61
- end
62
-
63
- def test_get_command_usage_invalid_command
64
- base = UtilTestModule
65
- command_name = '123asd!@#'
66
- assert_raise(Rubycom::CLIError) { Rubycom.get_command_usage(base, command_name) }
67
- end
68
-
69
- def test_get_command_summary
70
- base = UtilTestModule
71
- command_name = 'test_command_with_options'
72
- expected = "test_command_with_options - A test_command with an optional argument\n"
73
- result = Rubycom.get_command_summary(base, command_name)
74
- assert_equal(expected.gsub(/\n|\r|\s/, ''), result.gsub(/\n|\r|\s/, ''))
75
- end
76
-
77
- def test_get_command_summary_no_command
78
- base = UtilTestModule
79
- command_name = ''
80
- result = Rubycom.get_command_summary(base, command_name)
81
- assert_equal('No command specified.', result)
82
- end
83
-
84
- def test_get_command_summary_nil_base
85
- base = nil
86
- command_name = 'test_command_with_options'
87
- assert_raise(Rubycom::CLIError) { Rubycom.get_command_summary(base, command_name) }
88
- end
89
-
90
- def test_get_command_summary_nil_command
91
- base = UtilTestModule
92
- command_name = nil
93
- result = Rubycom.get_command_summary(base, command_name)
94
- assert_equal('No command specified.', result)
95
- end
96
-
97
- def test_get_command_summary_wrong_base
98
- base = UtilTestNoSingleton
99
- command_name = 'test_command_with_options'
100
- assert_raise(Rubycom::CLIError) { Rubycom.get_command_summary(base, command_name) }
101
- end
102
-
103
- def test_get_command_summary_bad_command
104
- base = UtilTestModule
105
- command_name = '!_fail_command_'
106
- assert_raise(Rubycom::CLIError) { Rubycom.get_command_summary(base, command_name) }
107
- end
108
-
109
- def test_get_usage
110
- base = UtilTestModule
111
- result = Rubycom.get_usage(base)
112
- expected = <<-END.gsub(/^ {4}/, '')
113
- Usage:
114
- UtilTestModule <command> [args]
115
-
116
- Commands:
117
- test_command - A basic test command
118
- test_command_no_docs
119
- test_command_with_arg - A test_command with one arg
120
- test_command_arg_named_arg - A test_command with an arg named arg
121
- test_command_with_args - A test_command with two args
122
- test_command_with_options - A test_command with an optional argument
123
- test_command_all_options - A test_command with all optional arguments
124
- test_command_options_arr - A test_command with an options array
125
- test_command_with_return - A test_command with a return argument
126
- test_command_arg_timestamp - A test_command with a Timestamp argument and an unnecessarily
127
- long description which should overflow when
128
- it tries to line up with other descriptions.
129
- test_command_arg_false - A test_command with a Boolean argument
130
- test_command_arg_arr - A test_command with an array argument
131
- test_command_arg_hash - A test_command with an Hash argument
132
- test_command_mixed_options - A test_command with several mixed options
133
-
134
- END
135
- assert_equal(expected.gsub(/\n|\r|\s/, ''), result.gsub(/\n|\r|\s/, ''))
136
- end
137
-
138
- def test_get_usage_nil_base
139
- base = nil
140
- result = Rubycom.get_usage(base)
141
- assert_equal('', result)
142
- end
143
-
144
- def test_get_usage_no_singleton_base
145
- base = UtilTestNoSingleton
146
- result = Rubycom.get_usage(base)
147
- assert_equal('', result)
148
- end
149
-
150
- def test_get_summary
151
- base = UtilTestModule
152
- result = Rubycom.get_summary(base)
153
- expected = <<-END.gsub(/^ {4}/, '')
154
- Commands:
155
- test_command - A basic test command
156
- test_command_no_docs
157
- test_command_with_arg - A test_command with one arg
158
- test_command_arg_named_arg - A test_command with an arg named arg
159
- test_command_with_args - A test_command with two args
160
- test_command_with_options - A test_command with an optional argument
161
- test_command_all_options - A test_command with all optional arguments
162
- test_command_options_arr - A test_command with an options array
163
- test_command_with_return - A test_command with a return argument
164
- test_command_arg_timestamp - A test_command with a Timestamp argument and an unnecessarily
165
- long description which should overflow when
166
- it tries to line up with other descriptions.
167
- test_command_arg_false - A test_command with a Boolean argument
168
- test_command_arg_arr - A test_command with an array argument
169
- test_command_arg_hash - A test_command with an Hash argument
170
- test_command_mixed_options - A test_command with several mixed options
171
- END
172
- assert_equal(expected.gsub(/\n|\r|\s/, ''), result.gsub(/\n|\r|\s/, ''))
173
- end
174
-
175
- def test_get_summary_nil_base
176
- base = nil
177
- result = Rubycom.get_summary(base)
178
- assert_equal('No Commands found for .', result)
179
- end
180
-
181
- def test_get_summary_no_singleton_base
182
- base = UtilTestNoSingleton
183
- result = Rubycom.get_summary(base)
184
- assert_equal('No Commands found for UtilTestNoSingleton.', result)
185
- end
186
-
187
- def test_get_top_level_commands
188
- test_command_list = [:test_command, :test_command_no_docs, :test_command_with_arg, :test_command_arg_named_arg,
189
- :test_command_with_args, :test_command_with_options, :test_command_all_options,
190
- :test_command_options_arr, :test_command_with_return, :test_command_arg_timestamp,
191
- :test_command_arg_false, :test_command_arg_arr, :test_command_arg_hash,
192
- :test_command_mixed_options]
193
- result_command_list = Rubycom.get_top_level_commands(UtilTestModule)
194
- assert_equal(test_command_list.length, result_command_list.length)
195
- test_command_list.each { |sym|
196
- assert_includes(result_command_list, sym)
197
- }
198
- end
199
-
200
- def test_get_top_level_commands_nil_base
201
- test_command_list = []
202
- result_command_list = Rubycom.get_top_level_commands(nil)
203
- assert_equal(test_command_list.length, result_command_list.length)
204
- test_command_list.each { |sym|
205
- assert_includes(result_command_list, sym)
206
- }
207
- end
208
-
209
- def test_get_commands_nil_base
210
- test_command_list = []
211
- result_command_list = Rubycom.get_commands(nil)
212
- assert_equal(test_command_list.length, result_command_list.length)
213
- test_command_list.each { |sym|
214
- assert_includes(result_command_list, sym)
215
- }
216
- end
217
-
218
- def test_get_top_level_commands_singleton_base
219
- test_command_list = []
220
- result_command_list = Rubycom.get_top_level_commands(UtilTestNoSingleton)
221
- assert_equal(test_command_list.length, result_command_list.length)
222
- test_command_list.each { |sym|
223
- assert_includes(result_command_list, sym)
224
- }
225
- end
226
-
227
- def test_parse_arg_string
228
- test_arg = "test_arg"
229
- result = Rubycom.parse_arg(test_arg)
230
- expected = {rubycom_non_opt_arg: "test_arg"}
231
- assert_equal(expected, result)
232
- end
233
-
234
- def test_parse_arg_fixnum
235
- test_arg = "1234512415435"
236
- result = Rubycom.parse_arg(test_arg)
237
- expected = {rubycom_non_opt_arg: 1234512415435}
238
- assert_equal(expected, result)
239
- end
240
-
241
- def test_parse_arg_float
242
- test_arg = "12345.67890"
243
- result = Rubycom.parse_arg(test_arg)
244
- expected = {rubycom_non_opt_arg: 12345.67890}
245
- assert_equal(expected, result)
246
- end
247
-
248
- def test_parse_arg_timestamp
249
- time = Time.new
250
- test_arg = time.to_s
251
- result = Rubycom.parse_arg(test_arg)
252
- expected = {rubycom_non_opt_arg: time}
253
- assert_equal(expected[:rubycom_non_opt_arg].to_i, result[:rubycom_non_opt_arg].to_i)
254
- end
255
-
256
- def test_parse_arg_datetime
257
- time = Time.new("2013-05-08 00:00:00 -0500")
258
- date = Date.new(time.year, time.month, time.day)
259
- test_arg = date.to_s
260
- result = Rubycom.parse_arg(test_arg)
261
- expected = {rubycom_non_opt_arg: date}
262
- assert_equal(expected, result)
263
- end
264
-
265
- def test_parse_arg_array
266
- test_arg = ["1", 2, "a", 'b']
267
- result = Rubycom.parse_arg(test_arg.to_s)
268
- expected = {rubycom_non_opt_arg: test_arg}
269
- assert_equal(expected, result)
270
- end
271
-
272
- def test_parse_arg_hash
273
- time = Time.new.to_s
274
- test_arg = ":a: \"#{time}\""
275
- result = Rubycom.parse_arg(test_arg.to_s)
276
- expected = {rubycom_non_opt_arg: {a: time}}
277
- assert_equal(expected, result)
278
- end
279
-
280
- def test_parse_arg_hash_group
281
- test_arg = ":a: [1,2]\n:b: 1\n:c: test\n:d: 1.0\n:e: \"2013-05-08 23:21:52 -0500\"\n"
282
- result = Rubycom.parse_arg(test_arg.to_s)
283
- expected = {rubycom_non_opt_arg: {:a => [1, 2], :b => 1, :c => "test", :d => 1.0, :e => "2013-05-08 23:21:52 -0500"}}
284
- assert_equal(expected, result)
285
- end
286
-
287
- def test_parse_arg_yaml
288
- test_arg = {:a => ["1", 2, "a", 'b'], :b => 1, :c => "test", :d => "#{Time.now.to_s}"}
289
- result = Rubycom.parse_arg(test_arg.to_yaml)
290
- expected = {rubycom_non_opt_arg: test_arg}
291
- assert_equal(expected, result)
292
- end
293
-
294
- def test_parse_arg_code
295
- test_arg = 'def self.test_code_method; raise "Fail - test_parse_arg_code";end'
296
- result = Rubycom.parse_arg(test_arg.to_s)
297
- expected = {rubycom_non_opt_arg: 'def self.test_code_method; raise "Fail - test_parse_arg_code";end'}
298
- assert_equal(expected, result)
299
- end
300
-
301
- def test_parse_opt_string_eq
302
- test_arg = "-test_arg=\"test\""
303
- result = Rubycom.parse_arg(test_arg)
304
- expected = {test_arg: "test"}
305
- assert_equal(expected, result)
306
- end
307
-
308
- def test_parse_opt_string_sp
309
- test_arg = "-test_arg \"test\""
310
- result = Rubycom.parse_arg(test_arg)
311
- expected = {test_arg: "test"}
312
- assert_equal(expected, result)
313
- end
314
-
315
- def test_parse_opt_long_string_eq
316
- test_arg = "--test_arg=\"test\""
317
- result = Rubycom.parse_arg(test_arg)
318
- expected = {test_arg: "test"}
319
- assert_equal(expected, result)
320
- end
321
-
322
- def test_parse_opt_long_string_sp
323
- test_arg = "--test_arg \"test\""
324
- result = Rubycom.parse_arg(test_arg)
325
- expected = {test_arg: "test"}
326
- assert_equal(expected, result)
327
- end
328
-
329
- def test_get_param_definitions
330
- test_method = UtilTestModule.public_method('test_command_with_args')
331
- expected = {:test_arg=>{:def=>"test_arg", :type=>:req, :default=>:nil_rubycom_required_param}, :another_test_arg=>{:def=>"another_test_arg", :type=>:req, :default=>:nil_rubycom_required_param}}
332
- result = Rubycom.get_param_definitions(test_method)
333
- assert_equal(expected, result)
334
- end
335
-
336
- def test_get_param_definitions_no_args
337
- test_method = UtilTestModule.public_method('test_command')
338
- expected = {}
339
- result = Rubycom.get_param_definitions(test_method)
340
- assert_equal(expected, result)
341
- end
342
-
343
- def test_get_param_definitions_arr_param
344
- test_method = UtilTestModule.public_method('test_command_options_arr')
345
- expected = {:test_option=>{:def=>"test_option=\"test_option_default\"", :type=>:opt, :default=>"test_option_default"}, :test_options=>{:def=>"*test_options", :type=>:rest, :default=>:nil_rubycom_required_param}}
346
- result = Rubycom.get_param_definitions(test_method)
347
- assert_equal(expected, result)
348
- end
349
-
350
- def test_get_param_definitions_all_options
351
- test_method = UtilTestModule.public_method('test_command_all_options')
352
- expected = {:test_arg=>{:def=>"test_arg='test_arg_default'", :type=>:opt, :default=>"test_arg_default"}, :test_option=>{:def=>"test_option='test_option_default'", :type=>:opt, :default=>"test_option_default"}}
353
- result = Rubycom.get_param_definitions(test_method)
354
- assert_equal(expected, result)
355
- end
356
-
357
- def test_get_param_definitions_mixed
358
- test_method = UtilTestModule.public_method('test_command_with_options')
359
- expected = {:test_arg=>{:def=>"test_arg", :type=>:req, :default=>:nil_rubycom_required_param}, :test_option=>{:def=>"test_option='option_default'", :type=>:opt, :default=>"option_default"}}
360
- result = Rubycom.get_param_definitions(test_method)
361
- assert_equal(expected, result)
362
- end
363
-
364
- def test_run
365
- tst_out = ''
366
-
367
- def tst_out.write(data)
368
- self << data
369
- end
370
-
371
- o_stdout, $stdout = $stdout, tst_out
372
- o_stderr, $stderr = $stderr, tst_out
373
-
374
- base = UtilTestModule
375
- args = ["test_command_with_arg", "HelloWorld"]
376
- result = Rubycom.run(base, args)
377
-
378
- expected = "test_arg=HelloWorld"
379
- expected_out = expected
380
- assert_equal(expected, result)
381
- assert_equal(expected_out.gsub(/\n|\r|\s/, ''), tst_out.gsub(/\n|\r|\s/, ''))
382
- ensure
383
- $stdout = o_stdout
384
- $stderr = o_stderr
385
- end
386
-
387
- def test_run_help
388
- tst_out = ''
389
-
390
- def tst_out.write(data)
391
- self << data
392
- end
393
-
394
- o_stdout, $stdout = $stdout, tst_out
395
- o_stderr, $stderr = $stderr, tst_out
396
-
397
- base = UtilTestModule
398
- args = ["help"]
399
- result = Rubycom.run(base, args)
400
-
401
- expected = <<-END.gsub(/^ {4}/,'')
402
- Usage:
403
- UtilTestModule <command> [args]
404
-
405
- Commands:
406
- test_command - A basic test command
407
- test_command_no_docs
408
- test_command_with_arg - A test_command with one arg
409
- test_command_arg_named_arg - A test_command with an arg named arg
410
- test_command_with_args - A test_command with two args
411
- test_command_with_options - A test_command with an optional argument
412
- test_command_all_options - A test_command with all optional arguments
413
- test_command_options_arr - A test_command with an options array
414
- test_command_with_return - A test_command with a return argument
415
- test_command_arg_timestamp - A test_command with a Timestamp argument and an unnecessarily
416
- long description which should overflow when
417
- it tries to line up with other descriptions.
418
- test_command_arg_false - A test_command with a Boolean argument
419
- test_command_arg_arr - A test_command with an array argument
420
- test_command_arg_hash - A test_command with an Hash argument
421
- test_command_mixed_options - A test_command with several mixed options
422
- END
423
- expected_out = expected
424
- assert_equal(expected.gsub(/\n|\r|\s/, ''), result.gsub(/\n|\r|\s/, ''))
425
- assert_equal(expected_out.gsub(/\n|\r|\s/, ''), tst_out.gsub(/\n|\r|\s/, ''))
426
- ensure
427
- $stdout = o_stdout
428
- $stderr = o_stderr
429
- end
430
-
431
- def test_run_nil_return
432
- tst_out = ''
433
-
434
- def tst_out.write(data)
435
- self << data
436
- end
437
-
438
- o_stdout, $stdout = $stdout, tst_out
439
- o_stderr, $stderr = $stderr, tst_out
440
-
441
- base = UtilTestModule
442
- args = ["test_command"]
443
- result = Rubycom.run(base, args)
444
-
445
- expected = nil
446
- expected_out = "command test\n"
447
- assert_equal(expected, result)
448
- assert_equal(expected_out.gsub(/\n|\r|\s/, ''), tst_out.gsub(/\n|\r|\s/, ''))
449
- ensure
450
- $stdout = o_stdout
451
- $stderr = o_stderr
452
- end
453
-
454
- def test_run_hash_return
455
- tst_out = ''
456
-
457
- def tst_out.write(data)
458
- self << data
459
- end
460
-
461
- o_stdout, $stdout = $stdout, tst_out
462
- o_stderr, $stderr = $stderr, tst_out
463
-
464
- base = UtilTestModule
465
- time = Time.now.to_s
466
- args = ["test_command_arg_timestamp", time]
467
- result = Rubycom.run(base, args)
468
-
469
- expected = {:test_time => Time.parse(time)}
470
- expected_out = {test_time: Time.parse(time)}.to_yaml
471
- assert_equal(expected, result)
472
- assert_equal(expected_out.gsub(/\n|\r|\s/, ''), tst_out.gsub(/\n|\r|\s/, ''))
473
- ensure
474
- $stdout = o_stdout
475
- $stderr = o_stderr
476
- end
477
-
478
- def test_run_all_optional
479
- tst_out = ''
480
-
481
- def tst_out.write(data)
482
- self << data
483
- end
484
-
485
- o_stdout, $stdout = $stdout, tst_out
486
- o_stderr, $stderr = $stderr, tst_out
487
-
488
- base = UtilTestModule
489
- args = ["test_command_all_options"]
490
- result = Rubycom.run(base, args)
491
-
492
- e_test_arg = 'test_arg_default'
493
- e_test_option = 'test_option_default'
494
- expected = nil
495
- expected_out = "Output is test_arg=#{e_test_arg},test_option=#{e_test_option}\n"
496
- assert_equal(expected, result)
497
- assert_equal(expected_out.gsub(/\n|\r|\s/, ''), tst_out.gsub(/\n|\r|\s/, ''))
498
- ensure
499
- $stdout = o_stdout
500
- $stderr = o_stderr
501
- end
502
-
503
- def test_run_all_opt_override_first
504
- tst_out = ''
505
-
506
- def tst_out.write(data)
507
- self << data
508
- end
509
-
510
- o_stdout, $stdout = $stdout, tst_out
511
- o_stderr, $stderr = $stderr, tst_out
512
-
513
- base = UtilTestModule
514
- args = ["test_command_all_options", "test_arg_modified"]
515
- result = Rubycom.run(base, args)
516
-
517
- e_test_arg = 'test_arg_modified'
518
- e_test_option = 'test_option_default'
519
- expected = nil
520
- expected_out = "Output is test_arg=#{e_test_arg},test_option=#{e_test_option}\n"
521
- assert_equal(expected, result)
522
- assert_equal(expected_out.gsub(/\n|\r|\s/, ''), tst_out.gsub(/\n|\r|\s/, ''))
523
- ensure
524
- $stdout = o_stdout
525
- $stderr = o_stderr
526
- end
527
-
528
- def test_run_all_opt_override_first_alt
529
- tst_out = ''
530
-
531
- def tst_out.write(data)
532
- self << data
533
- end
534
-
535
- o_stdout, $stdout = $stdout, tst_out
536
- o_stderr, $stderr = $stderr, tst_out
537
-
538
- base = UtilTestModule
539
- args = ["test_command_all_options", "-test_arg=test_arg_modified"]
540
- result = Rubycom.run(base, args)
541
-
542
- e_test_arg = 'test_arg_modified'
543
- e_test_option = 'test_option_default'
544
- expected = nil
545
- expected_out = "Output is test_arg=#{e_test_arg},test_option=#{e_test_option}\n"
546
- assert_equal(expected, result)
547
- assert_equal(expected_out.gsub(/\n|\r|\s/, ''), tst_out.gsub(/\n|\r|\s/, ''))
548
- ensure
549
- $stdout = o_stdout
550
- $stderr = o_stderr
551
- end
552
-
553
- def test_run_all_opt_override_second
554
- tst_out = ''
555
-
556
- def tst_out.write(data)
557
- self << data
558
- end
559
-
560
- o_stdout, $stdout = $stdout, tst_out
561
- o_stderr, $stderr = $stderr, tst_out
562
-
563
- base = UtilTestModule
564
- args = ["test_command_all_options", "-test_option=test_option_modified"]
565
- result = Rubycom.run(base, args)
566
-
567
- e_test_arg = 'test_arg_default'
568
- e_test_option = 'test_option_modified'
569
- expected = nil
570
- expected_out = "Output is test_arg=#{e_test_arg},test_option=#{e_test_option}\n"
571
- assert_equal(expected, result)
572
- assert_equal(expected_out.gsub(/\n|\r|\s/, ''), tst_out.gsub(/\n|\r|\s/, ''))
573
- ensure
574
- $stdout = o_stdout
575
- $stderr = o_stderr
576
- end
577
-
578
- def test_run_all_opt_use_all_opt
579
- tst_out = ''
580
-
581
- def tst_out.write(data)
582
- self << data
583
- end
584
-
585
- o_stdout, $stdout = $stdout, tst_out
586
- o_stderr, $stderr = $stderr, tst_out
587
-
588
- base = UtilTestModule
589
- args = ["test_command_all_options", "-test_arg=test_arg_modified", "-test_option=test_option_modified"]
590
- result = Rubycom.run(base, args)
591
-
592
- e_test_arg = 'test_arg_modified'
593
- e_test_option = 'test_option_modified'
594
- expected = nil
595
- expected_out = "Output is test_arg=#{e_test_arg},test_option=#{e_test_option}\n"
596
- assert_equal(expected, result)
597
- assert_equal(expected_out.gsub(/\n|\r|\s/, ''), tst_out.gsub(/\n|\r|\s/, ''))
598
- ensure
599
- $stdout = o_stdout
600
- $stderr = o_stderr
601
- end
602
-
603
- def test_run_all_opt_reverse
604
- tst_out = ''
605
-
606
- def tst_out.write(data)
607
- self << data
608
- end
609
-
610
- o_stdout, $stdout = $stdout, tst_out
611
- o_stderr, $stderr = $stderr, tst_out
612
-
613
- base = UtilTestModule
614
- args = ["test_command_all_options", "-test_option=test_option_modified", "-test_arg=test_arg_modified"]
615
- result = Rubycom.run(base, args)
616
-
617
- e_test_arg = 'test_arg_modified'
618
- e_test_option = 'test_option_modified'
619
- expected = nil
620
- expected_out = "Output is test_arg=#{e_test_arg},test_option=#{e_test_option}\n"
621
- assert_equal(expected, result)
622
- assert_equal(expected_out.gsub(/\n|\r|\s/, ''), tst_out.gsub(/\n|\r|\s/, ''))
623
- ensure
624
- $stdout = o_stdout
625
- $stderr = o_stderr
626
- end
627
-
628
- def test_run_options_arr
629
- tst_out = ''
630
-
631
- def tst_out.write(data)
632
- self << data
633
- end
634
-
635
- o_stdout, $stdout = $stdout, tst_out
636
- o_stderr, $stderr = $stderr, tst_out
637
-
638
- base = UtilTestModule
639
- args = ["test_command_options_arr", "test_option1", "test_option2", 1.0, false]
640
- result = Rubycom.run(base, args)
641
-
642
- e_test_arg = 'test_option1'
643
- e_test_options = ["test_option2", 1.0, false]
644
- expected = nil
645
- expected_out = "Output is test_option=#{e_test_arg},test_option_arr=#{e_test_options}\n"
646
- assert_equal(expected, result)
647
- assert_equal(expected_out.gsub(/\n|\r|\s/, ''), tst_out.gsub(/\n|\r|\s/, ''))
648
- ensure
649
- $stdout = o_stdout
650
- $stderr = o_stderr
651
- end
652
-
653
- def test_run_missing_required_arg
654
- tst_out = ''
655
-
656
- def tst_out.puts(data)
657
- self << data.to_s << "\n"
658
- nil
659
- end
660
-
661
- def tst_out.write(data)
662
- self << data
663
- end
664
-
665
- o_stdout, $stdout = $stdout, tst_out
666
- o_stderr, $stderr = $stderr, tst_out
667
-
668
- base = UtilTestModule
669
- args = ["test_command_with_return", "-test_option_int=2"]
670
- result = Rubycom.run(base, args)
671
-
672
- expected = nil
673
- expected_out = "No argument available for test_arg\n"
674
-
675
- assert_equal(expected, result)
676
- assert_equal(expected_out, tst_out.lines.first)
677
- Rubycom.get_command_usage(base,args[0],args[1..-1]).each_line{|expected_line|
678
- assert_equal(true, tst_out.lines.include?(expected_line))
679
- }
680
- ensure
681
- $stdout = o_stdout
682
- $stderr = o_stderr
683
- end
684
-
685
- def test_run_composite
686
- tst_out = ''
687
-
688
- def tst_out.write(data)
689
- self << data
690
- end
691
-
692
- o_stdout, $stdout = $stdout, tst_out
693
- o_stderr, $stderr = $stderr, tst_out
694
-
695
- base = UtilTestComposite
696
- args = ["test_composite_command", "Hello Composite"]
697
- result = Rubycom.run(base, args)
698
-
699
- expected = "Hello Composite"
700
- expected_out = "Hello Composite"
701
- assert_equal(expected, result)
702
- assert_equal(expected_out, tst_out.split(/\n|\r|\r\n/).first)
703
- ensure
704
- $stdout = o_stdout
705
- $stderr = o_stderr
706
- end
707
-
708
- def test_full_run_mixed_args
709
- mod = "util_test_module.rb"
710
- command = "test_command_mixed_options"
711
- args = "testing_arg \"[test1, test2]\" -test_opt='testing_option' \"{a: 'test_hsh_arg'}\" -test_bool=true some other args"
712
- expected = 'test_arg=testing_arg test_arr=["test1", "test2"] test_opt=testing_option test_hsh={"a"=>"test_hsh_arg"} test_bool=true test_rest=["some", "other", "args"]'+"\n"
713
- result = %x(ruby #{File.expand_path(File.dirname(__FILE__))}/#{mod} #{command} #{args})
714
- assert_equal(expected, result)
715
- end
716
-
717
- def test_full_run_mixed_args_solid_arr
718
- mod = "util_test_module.rb"
719
- command = "test_command_mixed_options"
720
- args = "testing_arg [test1,test2] -test_opt='testing_option' \"{a: 'test_hsh_arg'}\" some other args"
721
- expected = 'test_arg=testing_arg test_arr=["test1", "test2"] test_opt=testing_option test_hsh={"a"=>"test_hsh_arg"} test_bool=some test_rest=["other", "args"]'+"\n"
722
- result = %x(ruby #{File.expand_path(File.dirname(__FILE__))}/#{mod} #{command} #{args})
723
- assert_equal(expected, result)
724
- end
725
-
726
- def test_full_run_mixed_args_quoted_solid_arr
727
- mod = "util_test_module.rb"
728
- command = "test_command_mixed_options"
729
- args = 'testing_arg "[test1,test2]" -test_opt="testing_option" "{a: "test_hsh_arg"}" -test_bool=false some other args'
730
- expected = 'test_arg=testing_arg test_arr=["test1", "test2"] test_opt=testing_option test_hsh={"a"=>"test_hsh_arg"} test_bool=false test_rest=["some", "other", "args"]'+"\n"
731
- result = %x(ruby #{File.expand_path(File.dirname(__FILE__))}/#{mod} #{command} #{args})
732
- assert_equal(expected, result)
733
- end
734
-
735
- def test_full_run_mixed_args_odd_sp
736
- mod = "util_test_module.rb"
737
- command = "test_command_mixed_options"
738
- args = 'testing_arg "[ test1 , test2 ]" -test_opt="testing_option" "{ a: "test_hsh_arg" }" -test_bool=false some other args'
739
- expected = 'test_arg=testing_arg test_arr=["test1", "test2"] test_opt=testing_option test_hsh={"a"=>"test_hsh_arg"} test_bool=false test_rest=["some", "other", "args"]'+"\n"
740
- result = %x(ruby #{File.expand_path(File.dirname(__FILE__))}/#{mod} #{command} #{args})
741
- assert_equal(expected, result)
742
- end
743
-
744
- def test_full_run_mixed_args_hash_rocket
745
- mod = "util_test_module.rb"
746
- command = "test_command_mixed_options"
747
- args = 'testing_arg "[ test1 , test2 ]" -test_opt="testing_option" "{ :a => "test_hsh_arg" }" false some other args'
748
- expected = 'test_arg=testing_arg test_arr=["test1", "test2"] test_opt=testing_option test_hsh={ :a => test_hsh_arg } test_bool=false test_rest=["some", "other", "args"]'+"\n"
749
- result = %x(ruby #{File.expand_path(File.dirname(__FILE__))}/#{mod} #{command} #{args})
750
- assert_equal(expected, result)
751
- end
752
-
753
- def test_full_run_mixed_args_no_rest
754
- mod = "util_test_module.rb"
755
- command = "test_command_mixed_options"
756
- args = "testing_arg \"[test1, test2]\" -test_opt='testing_option' \"{a: 'test_hsh_arg'}\""
757
- expected = 'test_arg=testing_arg test_arr=["test1", "test2"] test_opt=testing_option test_hsh={"a"=>"test_hsh_arg"} test_bool=true test_rest=[]'+"\n"
758
- result = %x(ruby #{File.expand_path(File.dirname(__FILE__))}/#{mod} #{command} #{args})
759
- assert_equal(expected, result)
760
- end
761
-
762
- end