help_parser 1.2.0 → 1.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.rdoc +2 -2
- data/lib/help_parser/functions.rb +1 -1
- data/lib/help_parser/version.rb +1 -1
- metadata +7 -60
- data/History.txt +0 -5
- data/TODO.txt +0 -3
- data/examples/command_suite +0 -130
- data/examples/implementation_error_duplicate_key +0 -30
- data/examples/implementation_error_redefinition +0 -29
- data/examples/implementation_error_terminal +0 -30
- data/examples/simple +0 -29
- data/features/edge.feature +0 -30
- data/features/simple.feature +0 -125
- data/features/step_definitions/help_parser_steps.rb +0 -80
- data/features/suite.feature +0 -131
- data/help_parser.gemspec +0 -56
- data/test/help_parser.rb +0 -250
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2403ec5690c6b29e5fa4fc82a4b2cabf7ce0d4d1
|
4
|
+
data.tar.gz: da462a01617bb2ae7dbda2f1f2c37fedd4023070
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fb9d8fab785ca44653e3229f200df278eea63752c0ebc6b8116d4575d27d84b60ad12c2814f6a0febc43e4bb4433457ff7ec976d822918073fcafc04eceb342e
|
7
|
+
data.tar.gz: f48f5d9767b607dbcc3f57ada3bdc2b62c3aad506cf5844da077c036e1ab5571e82a55090cd47aadac15e91ccdf8ec035c1b190cbab1dbdf1e9819726d7b02f2
|
data/README.rdoc
CHANGED
@@ -5,7 +5,7 @@ rubygems :: https://rubygems.org/gems/help_parser
|
|
5
5
|
|
6
6
|
== DESCRIPTION:
|
7
7
|
|
8
|
-
|
8
|
+
HelpParser - Parses your help text to define your command line options.
|
9
9
|
|
10
10
|
== FEATURES/PROBLEMS:
|
11
11
|
|
@@ -40,7 +40,7 @@ _HelpParser_ - Parses your help text to define your command line options.
|
|
40
40
|
exit 64 # Usage error exit code
|
41
41
|
end
|
42
42
|
|
43
|
-
See `examples/command_suite` for an example of how to build a command suite with
|
43
|
+
See `examples/command_suite` for an example of how to build a command suite with HelpParser.
|
44
44
|
|
45
45
|
== INSTALL:
|
46
46
|
|
data/lib/help_parser/version.rb
CHANGED
metadata
CHANGED
@@ -1,76 +1,24 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: help_parser
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
7
|
+
- carlosjhr64
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
12
|
-
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: rainbow
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - "~>"
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '1.99'
|
20
|
-
- - ">="
|
21
|
-
- !ruby/object:Gem::Version
|
22
|
-
version: 1.99.1
|
23
|
-
type: :development
|
24
|
-
prerelease: false
|
25
|
-
version_requirements: !ruby/object:Gem::Requirement
|
26
|
-
requirements:
|
27
|
-
- - "~>"
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
version: '1.99'
|
30
|
-
- - ">="
|
31
|
-
- !ruby/object:Gem::Version
|
32
|
-
version: 1.99.1
|
33
|
-
- !ruby/object:Gem::Dependency
|
34
|
-
name: test-unit
|
35
|
-
requirement: !ruby/object:Gem::Requirement
|
36
|
-
requirements:
|
37
|
-
- - "~>"
|
38
|
-
- !ruby/object:Gem::Version
|
39
|
-
version: '2.5'
|
40
|
-
- - ">="
|
41
|
-
- !ruby/object:Gem::Version
|
42
|
-
version: 2.5.5
|
43
|
-
type: :development
|
44
|
-
prerelease: false
|
45
|
-
version_requirements: !ruby/object:Gem::Requirement
|
46
|
-
requirements:
|
47
|
-
- - "~>"
|
48
|
-
- !ruby/object:Gem::Version
|
49
|
-
version: '2.5'
|
50
|
-
- - ">="
|
51
|
-
- !ruby/object:Gem::Version
|
52
|
-
version: 2.5.5
|
11
|
+
date: 2015-12-23 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
53
13
|
description: |
|
54
|
-
|
14
|
+
HelpParser - Parses your help text to define your command line options.
|
55
15
|
email: carlosjhr64@gmail.com
|
56
16
|
executables: []
|
57
17
|
extensions: []
|
58
18
|
extra_rdoc_files:
|
59
19
|
- README.rdoc
|
60
20
|
files:
|
61
|
-
- History.txt
|
62
21
|
- README.rdoc
|
63
|
-
- TODO.txt
|
64
|
-
- examples/command_suite
|
65
|
-
- examples/implementation_error_duplicate_key
|
66
|
-
- examples/implementation_error_redefinition
|
67
|
-
- examples/implementation_error_terminal
|
68
|
-
- examples/simple
|
69
|
-
- features/edge.feature
|
70
|
-
- features/simple.feature
|
71
|
-
- features/step_definitions/help_parser_steps.rb
|
72
|
-
- features/suite.feature
|
73
|
-
- help_parser.gemspec
|
74
22
|
- lib/help_parser.rb
|
75
23
|
- lib/help_parser/errors.rb
|
76
24
|
- lib/help_parser/functions.rb
|
@@ -81,7 +29,6 @@ files:
|
|
81
29
|
- lib/help_parser/usage_exception.rb
|
82
30
|
- lib/help_parser/version.rb
|
83
31
|
- lib/help_parser/version_exception.rb
|
84
|
-
- test/help_parser.rb
|
85
32
|
homepage: https://github.com/carlosjhr64/help_parser
|
86
33
|
licenses:
|
87
34
|
- MIT
|
@@ -104,8 +51,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
104
51
|
version: '0'
|
105
52
|
requirements: []
|
106
53
|
rubyforge_project:
|
107
|
-
rubygems_version: 2.
|
54
|
+
rubygems_version: 2.4.5.1
|
108
55
|
signing_key:
|
109
56
|
specification_version: 4
|
110
|
-
summary:
|
57
|
+
summary: HelpParser - Parses your help text to define your command line options.
|
111
58
|
test_files: []
|
data/History.txt
DELETED
data/TODO.txt
DELETED
data/examples/command_suite
DELETED
@@ -1,130 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
require 'json'
|
3
|
-
require 'rainbow'
|
4
|
-
|
5
|
-
############################################################
|
6
|
-
# Here I show how one might structure a command suite
|
7
|
-
# using HelpParser. The output is for cucumber testing.
|
8
|
-
############################################################
|
9
|
-
|
10
|
-
VERSION = '10.02.3'
|
11
|
-
NAME = File.basename($PROGRAM_NAME) # command_suite
|
12
|
-
GLOBAL_HELP = <<GLOBAL_HELP
|
13
|
-
This is a test script for HelpParser.
|
14
|
-
|
15
|
-
Usage:
|
16
|
-
|
17
|
-
#{NAME} [global options] command [command options] [arguments...]
|
18
|
-
|
19
|
-
Global Options:
|
20
|
-
|
21
|
-
-h --help Show this help and exit
|
22
|
-
-v --version Show the version and exit
|
23
|
-
-q --quiet Be quiet
|
24
|
-
-V --verbose Say more about whats going on
|
25
|
-
|
26
|
-
--string=STRING A String value
|
27
|
-
--float=FLOAT A Float value
|
28
|
-
--integer=INTEGER An Integer value
|
29
|
-
--array=val1,val2... An Array of values
|
30
|
-
|
31
|
-
Commands:
|
32
|
-
|
33
|
-
first The first command
|
34
|
-
second The second command
|
35
|
-
|
36
|
-
This script is being runned by Ruby #{RUBY_VERSION}.
|
37
|
-
GLOBAL_HELP
|
38
|
-
|
39
|
-
FIRST_HELP = <<FIRST
|
40
|
-
#{NAME}-first is the first command of the test script for HelpParser.
|
41
|
-
Usage: #{NAME} [global options] first [options]
|
42
|
-
Options:
|
43
|
-
-h --help Show this help and exit
|
44
|
-
--string=STRING A String value
|
45
|
-
--float=FLOAT A Float value
|
46
|
-
--integer=INTEGER An Integer value
|
47
|
-
--array=val1,val2... An Array of values
|
48
|
-
FIRST
|
49
|
-
|
50
|
-
SECOND_HELP = <<SECOND
|
51
|
-
#{NAME}-second is the second command of the test script for HelpParser.
|
52
|
-
Usage: #{NAME} [global options] second [options]
|
53
|
-
Options:
|
54
|
-
-h --help Show this help and exit
|
55
|
-
--string=STRING A String value
|
56
|
-
--float=FLOAT A Float value
|
57
|
-
--integer=INTEGER An Integer value
|
58
|
-
--array=val1,val2... An Array of values
|
59
|
-
SECOND
|
60
|
-
|
61
|
-
begin
|
62
|
-
$LOAD_PATH << File.expand_path(File.dirname(__FILE__) + '/../lib')
|
63
|
-
require 'help_parser'
|
64
|
-
include HELP_PARSER
|
65
|
-
|
66
|
-
GLOBAL_OPTIONS = HelpParser.new(VERSION, GLOBAL_HELP)
|
67
|
-
|
68
|
-
STRING = GLOBAL_OPTIONS[:string, 'string1', 'string2']
|
69
|
-
FLOAT = GLOBAL_OPTIONS[:float, 1.0, 2.0]
|
70
|
-
INTEGER = GLOBAL_OPTIONS[:integer, 1, 2]
|
71
|
-
ARRAY = GLOBAL_OPTIONS[:array, [], [1,'two',3.0]]
|
72
|
-
|
73
|
-
GLOBAL_OPTIONS.usage_error "Need command." if ARGV.empty?
|
74
|
-
COMMAND = ARGV.shift
|
75
|
-
# I see suites this way:
|
76
|
-
# system("command #{ARGV.join(' ')}")
|
77
|
-
# but...
|
78
|
-
case COMMAND
|
79
|
-
when 'first'
|
80
|
-
# Just going to reuse VERSION, although
|
81
|
-
# the comand could have it's own version number.
|
82
|
-
OPTIONS = HelpParser.new(VERSION, FIRST_HELP)
|
83
|
-
# CONST = OPTIONS[key, missing_key, missing_value]
|
84
|
-
CSTRING = OPTIONS[:string, 'string1', 'string2']
|
85
|
-
CFLOAT = OPTIONS[:float, 1.0, 2.0]
|
86
|
-
CINTEGER = OPTIONS[:integer, 1, 2]
|
87
|
-
CARRAY = OPTIONS[:array, [], [1,'two',3.0]]
|
88
|
-
when 'second'
|
89
|
-
OPTIONS = HelpParser.new(VERSION, SECOND_HELP)
|
90
|
-
CSTRING = OPTIONS[:string, 'string1', 'string2']
|
91
|
-
CFLOAT = OPTIONS[:float, 1.0, 2.0]
|
92
|
-
CINTEGER = OPTIONS[:integer, 1, 2]
|
93
|
-
CARRAY = OPTIONS[:array, [], [1,'two',3.0]]
|
94
|
-
else
|
95
|
-
GLOBAL_OPTIONS.usage_error "Unrecognized command #{COMMAND}."
|
96
|
-
end
|
97
|
-
|
98
|
-
OUTPUT = {
|
99
|
-
:exception => '',
|
100
|
-
:message=> '',
|
101
|
-
:command => COMMAND,
|
102
|
-
:options => OPTIONS,
|
103
|
-
:global_options => GLOBAL_OPTIONS,
|
104
|
-
# Constants from Global
|
105
|
-
:string => STRING,
|
106
|
-
:float => FLOAT,
|
107
|
-
:integer => INTEGER,
|
108
|
-
:array => ARRAY,
|
109
|
-
# Constants from Command
|
110
|
-
:cstring => CSTRING,
|
111
|
-
:cfloat => CFLOAT,
|
112
|
-
:cinteger => CINTEGER,
|
113
|
-
:carray => CARRAY,
|
114
|
-
}
|
115
|
-
|
116
|
-
rescue Exception
|
117
|
-
STDERR.puts $!.message.chomp.color(:blue)
|
118
|
-
STDERR.puts $!.backtrace.join("\n").color(:red)
|
119
|
-
OUTPUT = {
|
120
|
-
:exception => $!.class.to_s,
|
121
|
-
:message=> $!.message,
|
122
|
-
# These below might be undefined:
|
123
|
-
:command => (COMMAND||=''),
|
124
|
-
:global_options => (GLOBAL_OPTIONS||={}),
|
125
|
-
:command_options => (OPTIONS||={}),
|
126
|
-
:options => ($!.respond_to?(:obj))? $!.obj : {},
|
127
|
-
}
|
128
|
-
end
|
129
|
-
|
130
|
-
puts JSON.pretty_generate OUTPUT
|
@@ -1,30 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
# This is used by cucumber for testing.
|
3
|
-
# It has a bad help text.
|
4
|
-
require 'json'
|
5
|
-
require 'rainbow'
|
6
|
-
$LOAD_PATH << File.expand_path(File.dirname(__FILE__) + '/../lib')
|
7
|
-
require 'help_parser'
|
8
|
-
include HELP_PARSER
|
9
|
-
HELP = <<HELP
|
10
|
-
Usage:
|
11
|
-
simple [options] arguments...
|
12
|
-
Options:
|
13
|
-
-z --zebra
|
14
|
-
-a --zebra
|
15
|
-
HELP
|
16
|
-
output = {
|
17
|
-
:exception => '',
|
18
|
-
:message => '',
|
19
|
-
}
|
20
|
-
begin
|
21
|
-
OPTIONS = HelpParser.new('1.2.3', HELP)
|
22
|
-
rescue Exception
|
23
|
-
STDERR.puts $!.obj.help.chomp.color(:blue)
|
24
|
-
STDERR.puts $!.message.chomp.color(:red)
|
25
|
-
output = {
|
26
|
-
:exception => $!.class.to_s,
|
27
|
-
:message => $!.message,
|
28
|
-
}
|
29
|
-
end
|
30
|
-
puts JSON.pretty_generate output
|
@@ -1,29 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
# This is used by cucumber for testing.
|
3
|
-
# It has a bad help text.
|
4
|
-
require 'json'
|
5
|
-
require 'rainbow'
|
6
|
-
$LOAD_PATH << File.expand_path(File.dirname(__FILE__) + '/../lib')
|
7
|
-
require 'help_parser'
|
8
|
-
include HELP_PARSER
|
9
|
-
HELP = <<HELP
|
10
|
-
Usage:
|
11
|
-
simple [options] arguments...
|
12
|
-
Options:
|
13
|
-
-z --help
|
14
|
-
HELP
|
15
|
-
output = {
|
16
|
-
:exception => '',
|
17
|
-
:message => '',
|
18
|
-
}
|
19
|
-
begin
|
20
|
-
OPTIONS = HelpParser.new('1.2.3', HELP)
|
21
|
-
rescue Exception
|
22
|
-
STDERR.puts $!.obj.help.chop.color(:blue)
|
23
|
-
STDERR.puts $!.message.chomp.color(:red)
|
24
|
-
output = {
|
25
|
-
:exception => $!.class.to_s,
|
26
|
-
:message => $!.message,
|
27
|
-
}
|
28
|
-
end
|
29
|
-
puts JSON.pretty_generate output
|
@@ -1,30 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
# This is used by cucumber for testing.
|
3
|
-
# It has a bad help text.
|
4
|
-
require 'json'
|
5
|
-
require 'rainbow'
|
6
|
-
$LOAD_PATH << File.expand_path(File.dirname(__FILE__) + '/../lib')
|
7
|
-
require 'help_parser'
|
8
|
-
include HELP_PARSER
|
9
|
-
HELP = <<HELP
|
10
|
-
Usage:
|
11
|
-
simple [options] arguments...
|
12
|
-
Options:
|
13
|
-
-a --aaa
|
14
|
-
-b --a
|
15
|
-
HELP
|
16
|
-
output = {
|
17
|
-
:exception => '',
|
18
|
-
:message => '',
|
19
|
-
}
|
20
|
-
begin
|
21
|
-
OPTIONS = HelpParser.new('1.2.3', HELP)
|
22
|
-
rescue Exception
|
23
|
-
STDERR.puts $!.obj.help.chomp.color(:blue)
|
24
|
-
STDERR.puts $!.message.chomp.color(:red)
|
25
|
-
output = {
|
26
|
-
:exception => $!.class.to_s,
|
27
|
-
:message => $!.message,
|
28
|
-
}
|
29
|
-
end
|
30
|
-
puts JSON.pretty_generate output
|
data/examples/simple
DELETED
@@ -1,29 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
# This is used by cucumber for testing.
|
3
|
-
require 'json'
|
4
|
-
require 'rainbow'
|
5
|
-
$LOAD_PATH << File.expand_path(File.dirname(__FILE__) + '/../lib')
|
6
|
-
require 'help_parser'
|
7
|
-
include HELP_PARSER
|
8
|
-
HELP = <<HELP
|
9
|
-
Usage:
|
10
|
-
simple [options] arguments...
|
11
|
-
Options:
|
12
|
-
-h --help Help already in dictionary
|
13
|
-
Missing version in dictionary
|
14
|
-
--nocomment
|
15
|
-
-s --long=VALUE Full template
|
16
|
-
--V Single characters can have long format
|
17
|
-
-k Short option does not need a long option
|
18
|
-
HELP
|
19
|
-
begin
|
20
|
-
OPTIONS = HelpParser.new('1.2.3', HELP)
|
21
|
-
data = { :exception => '', :message => '', :options => OPTIONS }
|
22
|
-
puts JSON.pretty_generate data
|
23
|
-
rescue Exception
|
24
|
-
STDERR.puts $!.message.chomp.color(:blue)
|
25
|
-
STDERR.puts $!.backtrace.join("\n").color(:red)
|
26
|
-
data = { :exception => $!.class, :message => $!.message, :options => $!.obj }
|
27
|
-
data[:options] = ($!.respond_to?(:obj))? $!.obj : {}
|
28
|
-
puts JSON.pretty_generate data
|
29
|
-
end
|
data/features/edge.feature
DELETED
@@ -1,30 +0,0 @@
|
|
1
|
-
@edge
|
2
|
-
Feature: Edge cases
|
3
|
-
|
4
|
-
Scenario: Redefinition of dictionary
|
5
|
-
For example, --help already maps to -h,
|
6
|
-
so if help text says different
|
7
|
-
we should get an ImplementationError.
|
8
|
-
* Given command "./examples/implementation_error_redefinition"
|
9
|
-
* Given option ""
|
10
|
-
* When we run command
|
11
|
-
* Then exception is "HELP_PARSER::ImplementationError"
|
12
|
-
* Then message matches "redefinition"
|
13
|
-
|
14
|
-
Scenario: Terminal
|
15
|
-
For example, -h defines the "user wants help" state.
|
16
|
-
If the help text tries to create another terminal state for -h,
|
17
|
-
we should get an ImplementationError.
|
18
|
-
* Given command "./examples/implementation_error_terminal"
|
19
|
-
* Given option ""
|
20
|
-
* When we run command
|
21
|
-
* Then exception is "HELP_PARSER::ImplementationError"
|
22
|
-
* Then message matches "terminal"
|
23
|
-
|
24
|
-
Scenario: Redifinition in help text
|
25
|
-
For example, it the help text says --zebra is -z and -a.
|
26
|
-
* Given command "./examples/implementation_error_duplicate_key"
|
27
|
-
* Given option ""
|
28
|
-
* When we run command
|
29
|
-
* Then exception is "HELP_PARSER::ImplementationError"
|
30
|
-
* Then message matches "redefinition"
|
data/features/simple.feature
DELETED
@@ -1,125 +0,0 @@
|
|
1
|
-
@simple
|
2
|
-
Feature: Testing examples/simple
|
3
|
-
|
4
|
-
Background:
|
5
|
-
* Given command "./examples/simple"
|
6
|
-
|
7
|
-
Scenario: Version, short option: -v
|
8
|
-
* Given option "-v"
|
9
|
-
* When we run command
|
10
|
-
* Then exception is "HELP_PARSER::VersionException"
|
11
|
-
* Then message is "1.2.3"
|
12
|
-
* Then options[v] is "true"
|
13
|
-
* Then options[version] is "true"
|
14
|
-
|
15
|
-
Scenario: Version, long option: --version
|
16
|
-
* Given option "--version"
|
17
|
-
* When we run command
|
18
|
-
* Then exception is "HELP_PARSER::VersionException"
|
19
|
-
* Then message is "1.2.3"
|
20
|
-
* Then options[v] is "true"
|
21
|
-
* Then options[version] is "true"
|
22
|
-
|
23
|
-
Scenario: Help, short option: -h
|
24
|
-
* Given option "-h"
|
25
|
-
* When we run command
|
26
|
-
* Then exception is "HELP_PARSER::HelpException"
|
27
|
-
* Then message matches "^Usage:"
|
28
|
-
* Then options[h] is "true"
|
29
|
-
* Then options[help] is "true"
|
30
|
-
|
31
|
-
Scenario: Help, long option: --help
|
32
|
-
* Given option "--help"
|
33
|
-
* When we run command
|
34
|
-
* Then exception is "HELP_PARSER::HelpException"
|
35
|
-
* Then message matches "^Usage:"
|
36
|
-
* Then options[h] is "true"
|
37
|
-
* Then options[help] is "true"
|
38
|
-
|
39
|
-
Scenario: Duplicate with long option: -h --help
|
40
|
-
* Given option "-h --help"
|
41
|
-
* When we run command
|
42
|
-
* Then exception is "HELP_PARSER::UsageError"
|
43
|
-
* Then message matches "^duplicate"
|
44
|
-
|
45
|
-
Scenario: Duplicate with short option: --help -h
|
46
|
-
* Given option "-h --help"
|
47
|
-
* When we run command
|
48
|
-
* Then exception is "HELP_PARSER::UsageError"
|
49
|
-
* Then message matches "^duplicate"
|
50
|
-
|
51
|
-
Scenario: No options: ""
|
52
|
-
* Given option ""
|
53
|
-
* When we run command
|
54
|
-
* Then exception is ""
|
55
|
-
* Then message is ""
|
56
|
-
* Then options.empty?
|
57
|
-
|
58
|
-
Scenario: No comment: --nocomment
|
59
|
-
We don't need to comment a command line option in the help.
|
60
|
-
* Given option "--nocomment"
|
61
|
-
* When we run command
|
62
|
-
* Then exception is ""
|
63
|
-
* Then message is ""
|
64
|
-
* Then options[nocomment] is "true"
|
65
|
-
* Then options.length is 1
|
66
|
-
|
67
|
-
Scenario: Long option values, String: --long=aStringValue
|
68
|
-
* Given option "--long=aStringValue"
|
69
|
-
* When we run command
|
70
|
-
* Then options[long] is "aStringValue"
|
71
|
-
|
72
|
-
Scenario: Long option values, Integer: --long=42
|
73
|
-
* Given option "--long=42"
|
74
|
-
* When we run command
|
75
|
-
* Then options[long] is "42"
|
76
|
-
* Then options[long] kind of Integer
|
77
|
-
|
78
|
-
Scenario: Long option values, default true: --long
|
79
|
-
* Given option "--long"
|
80
|
-
* When we run command
|
81
|
-
* Then options[long] is "true"
|
82
|
-
|
83
|
-
Scenario: Long option values, negated: --no-long
|
84
|
-
* Given option "--no-long"
|
85
|
-
* When we run command
|
86
|
-
* Then options[long] is "false"
|
87
|
-
|
88
|
-
Scenario: Long option values, Array: long=1,2,3
|
89
|
-
* Given option "--long=1,2,3"
|
90
|
-
* When we run command
|
91
|
-
* Then options[long] kind of Array
|
92
|
-
|
93
|
-
Scenario: Three non synonim-ed keys: -k, -V, --nocomment
|
94
|
-
* Given options "--nocomment -k -V"
|
95
|
-
* When we run command
|
96
|
-
* Then options.length is 3
|
97
|
-
* Then options[k] is "true"
|
98
|
-
* Then options[V] is "true"
|
99
|
-
* Then options[nocomment] is "true"
|
100
|
-
|
101
|
-
Scenario: One synonim-ed key: -s
|
102
|
-
* Given options "-s"
|
103
|
-
* When we run command
|
104
|
-
* Then options.length is 2
|
105
|
-
* Then options[s] is "true"
|
106
|
-
* Then options[long] is "true"
|
107
|
-
|
108
|
-
Scenario: One synonim-ed key: --long=abc
|
109
|
-
* Given options "--long=abc"
|
110
|
-
* When we run command
|
111
|
-
* Then options.length is 2
|
112
|
-
* Then options[s] is "abc"
|
113
|
-
* Then options[long] is "abc"
|
114
|
-
|
115
|
-
Scenario: Attempting to set a negation: --no-long=NotAllowed
|
116
|
-
* Given options "--no-long=NotAllowed"
|
117
|
-
* When we run command
|
118
|
-
* Then exception is "HELP_PARSER::UsageError"
|
119
|
-
* Then message matches "no-long=NotAllowed"
|
120
|
-
|
121
|
-
Scenario: User passed undefined option: --cacahuates
|
122
|
-
* Given option "--cacahuates"
|
123
|
-
* When we run command
|
124
|
-
* Then exception is "HELP_PARSER::UsageError"
|
125
|
-
* Then message matches "not.*valid.*cacahuates"
|
@@ -1,80 +0,0 @@
|
|
1
|
-
require 'json'
|
2
|
-
require 'open3'
|
3
|
-
|
4
|
-
Given /Given command "([^"]*)"/ do |command|
|
5
|
-
@command = command
|
6
|
-
end
|
7
|
-
|
8
|
-
Given /Given option(s?) "([^"]*)"/ do |p, options|
|
9
|
-
@options = options
|
10
|
-
end
|
11
|
-
|
12
|
-
When /When we run command/ do
|
13
|
-
@stdout, @stderr, @status = Open3.capture3("#{@command} #{@options}")
|
14
|
-
begin
|
15
|
-
@json = JSON.parse @stdout
|
16
|
-
rescue StandardError
|
17
|
-
@json = {}
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
Then /Then exit status is "(\d+)"/ do |status|
|
22
|
-
unless @status.exit_status == status.to_i
|
23
|
-
raise "Got #{@status.exit_status} instead of #{status}"
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
Then /Then (\w+) is "([^"]*)"/ do |key, expected|
|
28
|
-
value = @json[key].to_s
|
29
|
-
unless value == expected
|
30
|
-
raise "Got '#{value}' instead of '#{expected}'"
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
Then /Then (\w+) matches "([^"]*)"/ do |key, expected|
|
35
|
-
value = @json[key]
|
36
|
-
unless value =~ /#{expected}/
|
37
|
-
raise "'#{expected}' did not match:\n#{value}"
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
Then /Then options\[(\w+)\] is "([^*]*)"/ do |key,expected|
|
42
|
-
options = @json['options']
|
43
|
-
value = (options)? options[key].to_s : ''
|
44
|
-
unless expected == value
|
45
|
-
raise "Got '#{value}' instead of '#{expected}'"
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
Then /Then options\[(\w+)\] kind of (\w+)/ do |key, type|
|
50
|
-
options = @json['options']
|
51
|
-
value = options[key]
|
52
|
-
case type
|
53
|
-
when 'Integer'
|
54
|
-
raise "Not an integer" unless value.kind_of?(Integer)
|
55
|
-
when 'Array'
|
56
|
-
raise "Not an array" unless value.kind_of?(Array)
|
57
|
-
else
|
58
|
-
raise "Unrecognized type #{type}"
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
Then /Then options.empty\?/ do
|
63
|
-
options = @json['options']
|
64
|
-
raise "options not empty!" unless options.empty?
|
65
|
-
end
|
66
|
-
|
67
|
-
Then /Then options.length is (\d+)/ do |expected|
|
68
|
-
expected = expected.to_i
|
69
|
-
options = @json['options']
|
70
|
-
actual = options.length
|
71
|
-
raise "Length was #{actual}, not #{expected}." unless actual == expected
|
72
|
-
end
|
73
|
-
|
74
|
-
=begin
|
75
|
-
Then // do ||
|
76
|
-
unless ==
|
77
|
-
raise "Got '#{@json['']}' instead of '#{}'"
|
78
|
-
end
|
79
|
-
end
|
80
|
-
=end
|
data/features/suite.feature
DELETED
@@ -1,131 +0,0 @@
|
|
1
|
-
@suite
|
2
|
-
Feature: Testing examples/command_suite
|
3
|
-
|
4
|
-
Background:
|
5
|
-
* Given command "./examples/command_suite"
|
6
|
-
|
7
|
-
Scenario: Version: -v
|
8
|
-
* Given option "-v"
|
9
|
-
* When we run command
|
10
|
-
* Then message is "10.02.3"
|
11
|
-
* Then exception is "HELP_PARSER::VersionException"
|
12
|
-
* Then options[v] is "true"
|
13
|
-
* Then options[version] is "true"
|
14
|
-
* Then command is ""
|
15
|
-
|
16
|
-
Scenario: Help: --help
|
17
|
-
* Given option "--help"
|
18
|
-
* When we run command
|
19
|
-
* Then message matches "^This is a test script"
|
20
|
-
* Then exception is "HELP_PARSER::HelpException"
|
21
|
-
* Then options[h] is "true"
|
22
|
-
* Then options[help] is "true"
|
23
|
-
* Then command is ""
|
24
|
-
|
25
|
-
Scenario: First Version: first --version
|
26
|
-
* Given option "first --version"
|
27
|
-
* When we run command
|
28
|
-
* Then message is "10.02.3"
|
29
|
-
* Then exception is "HELP_PARSER::VersionException"
|
30
|
-
* Then options[v] is "true"
|
31
|
-
* Then options[version] is "true"
|
32
|
-
* Then command is "first"
|
33
|
-
|
34
|
-
Scenario: First Help: first -h
|
35
|
-
* Given option "first --h"
|
36
|
-
* When we run command
|
37
|
-
* Then message matches "^command_suite-first"
|
38
|
-
* Then exception is "HELP_PARSER::HelpException"
|
39
|
-
* Then options[h] is "true"
|
40
|
-
* Then options[help] is "true"
|
41
|
-
* Then command is "first"
|
42
|
-
|
43
|
-
Scenario: Second Version: second --version
|
44
|
-
* Given option "second --version"
|
45
|
-
* When we run command
|
46
|
-
* Then message is "10.02.3"
|
47
|
-
* Then exception is "HELP_PARSER::VersionException"
|
48
|
-
* Then options[v] is "true"
|
49
|
-
* Then options[version] is "true"
|
50
|
-
* Then command is "second"
|
51
|
-
|
52
|
-
Scenario: Second Help: second -h
|
53
|
-
* Given option "second --h"
|
54
|
-
* When we run command
|
55
|
-
* Then message matches "^command_suite-second"
|
56
|
-
* Then exception is "HELP_PARSER::HelpException"
|
57
|
-
* Then options[h] is "true"
|
58
|
-
* Then options[help] is "true"
|
59
|
-
* Then command is "second"
|
60
|
-
|
61
|
-
Scenario: ""
|
62
|
-
* Given option ""
|
63
|
-
* When we run command
|
64
|
-
* Then message is "Need command."
|
65
|
-
* Then exception is "HELP_PARSER::UsageError"
|
66
|
-
|
67
|
-
Scenario: "first"
|
68
|
-
* Given option "first"
|
69
|
-
* When we run command
|
70
|
-
#
|
71
|
-
* Then string is "string1"
|
72
|
-
* Then float is "1.0"
|
73
|
-
* Then integer is "1"
|
74
|
-
#
|
75
|
-
* Then cstring is "string1"
|
76
|
-
* Then cfloat is "1.0"
|
77
|
-
* Then cinteger is "1"
|
78
|
-
#
|
79
|
-
* Then command is "first"
|
80
|
-
|
81
|
-
Scenario: "first --string --float --integer"
|
82
|
-
* Given options "first --string --float --integer"
|
83
|
-
* When we run command
|
84
|
-
#
|
85
|
-
* Then string is "string1"
|
86
|
-
* Then float is "1.0"
|
87
|
-
* Then integer is "1"
|
88
|
-
#
|
89
|
-
* Then cstring is "string2"
|
90
|
-
* Then cfloat is "2.0"
|
91
|
-
* Then cinteger is "2"
|
92
|
-
#
|
93
|
-
* Then command is "first"
|
94
|
-
|
95
|
-
Scenario: "--string --float --integer second --string=string3 --float=3.0 --integer=3"
|
96
|
-
* Given options "--string --float --integer second --string=string3 --float=3.0 --integer=3"
|
97
|
-
* When we run command
|
98
|
-
#
|
99
|
-
* Then string is "string2"
|
100
|
-
* Then float is "2.0"
|
101
|
-
* Then integer is "2"
|
102
|
-
#
|
103
|
-
* Then cstring is "string3"
|
104
|
-
* Then cfloat is "3.0"
|
105
|
-
* Then cinteger is "3"
|
106
|
-
#
|
107
|
-
* Then command is "second"
|
108
|
-
|
109
|
-
Scenario: "--string=1 second"
|
110
|
-
* Given options "--string=1 second"
|
111
|
-
* When we run command
|
112
|
-
* Then exception is "HELP_PARSER::UsageError"
|
113
|
-
* Then message matches "^type error.*String"
|
114
|
-
|
115
|
-
Scenario: "second --integer=string"
|
116
|
-
* Given options "second --integer=string"
|
117
|
-
* When we run command
|
118
|
-
* Then exception is "HELP_PARSER::UsageError"
|
119
|
-
* Then message matches "^type error.*Fixnum"
|
120
|
-
|
121
|
-
Scenario: "first --float=1"
|
122
|
-
* Given options "first --float=1"
|
123
|
-
* When we run command
|
124
|
-
* Then exception is "HELP_PARSER::UsageError"
|
125
|
-
* Then message matches "^type error.*Float"
|
126
|
-
|
127
|
-
Scenario: "--array=seven first"
|
128
|
-
* Given options "--array=seven first"
|
129
|
-
* When we run command
|
130
|
-
* Then exception is "HELP_PARSER::UsageError"
|
131
|
-
* Then message matches "^type error.*Array"
|
data/help_parser.gemspec
DELETED
@@ -1,56 +0,0 @@
|
|
1
|
-
Gem::Specification.new do |s|
|
2
|
-
|
3
|
-
s.name = 'help_parser'
|
4
|
-
s.version = '1.2.0'
|
5
|
-
|
6
|
-
s.homepage = 'https://github.com/carlosjhr64/help_parser'
|
7
|
-
|
8
|
-
s.author = 'CarlosJHR64'
|
9
|
-
s.email = 'carlosjhr64@gmail.com'
|
10
|
-
|
11
|
-
s.date = '2014-01-13'
|
12
|
-
s.licenses = ['MIT']
|
13
|
-
|
14
|
-
s.description = <<DESCRIPTION
|
15
|
-
_HelpParser_ - Parses your help text to define your command line options.
|
16
|
-
DESCRIPTION
|
17
|
-
|
18
|
-
s.summary = <<SUMMARY
|
19
|
-
_HelpParser_ - Parses your help text to define your command line options.
|
20
|
-
SUMMARY
|
21
|
-
|
22
|
-
s.extra_rdoc_files = ['README.rdoc']
|
23
|
-
s.rdoc_options = ["--main", "README.rdoc"]
|
24
|
-
|
25
|
-
s.require_paths = ["lib"]
|
26
|
-
s.files = %w(
|
27
|
-
History.txt
|
28
|
-
README.rdoc
|
29
|
-
TODO.txt
|
30
|
-
examples/command_suite
|
31
|
-
examples/implementation_error_duplicate_key
|
32
|
-
examples/implementation_error_redefinition
|
33
|
-
examples/implementation_error_terminal
|
34
|
-
examples/simple
|
35
|
-
features/edge.feature
|
36
|
-
features/simple.feature
|
37
|
-
features/step_definitions/help_parser_steps.rb
|
38
|
-
features/suite.feature
|
39
|
-
help_parser.gemspec
|
40
|
-
lib/help_parser.rb
|
41
|
-
lib/help_parser/errors.rb
|
42
|
-
lib/help_parser/functions.rb
|
43
|
-
lib/help_parser/help_exception.rb
|
44
|
-
lib/help_parser/help_parser.rb
|
45
|
-
lib/help_parser/implementation_error.rb
|
46
|
-
lib/help_parser/usage_error.rb
|
47
|
-
lib/help_parser/usage_exception.rb
|
48
|
-
lib/help_parser/version.rb
|
49
|
-
lib/help_parser/version_exception.rb
|
50
|
-
test/help_parser.rb
|
51
|
-
)
|
52
|
-
|
53
|
-
s.add_development_dependency 'rainbow', '~> 1.99', '>= 1.99.1'
|
54
|
-
s.add_development_dependency 'test-unit', '~> 2.5', '>= 2.5.5'
|
55
|
-
|
56
|
-
end
|
data/test/help_parser.rb
DELETED
@@ -1,250 +0,0 @@
|
|
1
|
-
require 'test/unit'
|
2
|
-
require 'help_parser'
|
3
|
-
|
4
|
-
class Test_HELP_PARSER_HelpParser < Test::Unit::TestCase
|
5
|
-
include HELP_PARSER
|
6
|
-
|
7
|
-
class Mock
|
8
|
-
include HELP_PARSER::Errors
|
9
|
-
def version
|
10
|
-
'version'
|
11
|
-
end
|
12
|
-
def help
|
13
|
-
'help'
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
MOCK = Mock.new
|
18
|
-
|
19
|
-
def test_001_usage_error_new
|
20
|
-
assert_raises(UsageError){ raise UsageError, ['message', self] }
|
21
|
-
obj = message = nil
|
22
|
-
begin
|
23
|
-
raise UsageError, ['message', self]
|
24
|
-
rescue Exception
|
25
|
-
message = $!.message
|
26
|
-
obj = $!.obj if $!.respond_to?(:obj)
|
27
|
-
end
|
28
|
-
assert(message = 'message')
|
29
|
-
refute(obj.nil?)
|
30
|
-
assert(obj == self)
|
31
|
-
end
|
32
|
-
|
33
|
-
def test_002_implementation_error_new
|
34
|
-
assert_raises(ImplementationError){ raise ImplementationError, ['message', self] }
|
35
|
-
obj = nil
|
36
|
-
begin
|
37
|
-
raise ImplementationError, ['message', self]
|
38
|
-
rescue Exception
|
39
|
-
message = $!.message
|
40
|
-
obj = $!.obj if $!.respond_to?(:obj)
|
41
|
-
end
|
42
|
-
assert(message = 'message')
|
43
|
-
refute(obj.nil?)
|
44
|
-
assert(obj == self)
|
45
|
-
end
|
46
|
-
|
47
|
-
def test_003_usage_exception_new
|
48
|
-
assert_raises(UsageException){ raise UsageException, ['message', self] }
|
49
|
-
obj = nil
|
50
|
-
begin
|
51
|
-
raise UsageException, ['message', self]
|
52
|
-
rescue Exception
|
53
|
-
message = $!.message
|
54
|
-
obj = $!.obj if $!.respond_to?(:obj)
|
55
|
-
end
|
56
|
-
assert(message = 'message')
|
57
|
-
refute(obj.nil?)
|
58
|
-
assert(obj == self)
|
59
|
-
end
|
60
|
-
|
61
|
-
def test_004_help_exception_new
|
62
|
-
assert_raises(HelpException){ raise HelpException, MOCK }
|
63
|
-
obj = nil
|
64
|
-
begin
|
65
|
-
raise HelpException, MOCK
|
66
|
-
rescue Exception
|
67
|
-
message = $!.message
|
68
|
-
obj = $!.obj if $!.respond_to?(:obj)
|
69
|
-
end
|
70
|
-
assert(message = 'help')
|
71
|
-
refute(obj.nil?)
|
72
|
-
assert(obj == MOCK)
|
73
|
-
end
|
74
|
-
|
75
|
-
def test_005_version_exception_new
|
76
|
-
assert_raises(VersionException){ raise VersionException, MOCK }
|
77
|
-
obj = nil
|
78
|
-
begin
|
79
|
-
raise VersionException, MOCK
|
80
|
-
rescue Exception
|
81
|
-
message = $!.message
|
82
|
-
obj = $!.obj if $!.respond_to?(:obj)
|
83
|
-
end
|
84
|
-
assert(message = 'version')
|
85
|
-
refute(obj.nil?)
|
86
|
-
assert(obj == MOCK)
|
87
|
-
end
|
88
|
-
|
89
|
-
def test_006_usage_exceptions
|
90
|
-
message = error = 'none'
|
91
|
-
begin
|
92
|
-
raise VersionException, MOCK
|
93
|
-
rescue StandardError
|
94
|
-
error = 'standard'
|
95
|
-
rescue Exception
|
96
|
-
error = 'exception'
|
97
|
-
message = $!.message
|
98
|
-
end
|
99
|
-
assert_equal(error, 'exception')
|
100
|
-
assert_equal(message, 'version')
|
101
|
-
|
102
|
-
error = 'none'
|
103
|
-
begin
|
104
|
-
raise HelpException, MOCK
|
105
|
-
rescue StandardError
|
106
|
-
error = 'standard'
|
107
|
-
rescue Exception
|
108
|
-
error = 'exception'
|
109
|
-
message = $!.message
|
110
|
-
end
|
111
|
-
assert_equal(error, 'exception')
|
112
|
-
assert_equal(message, 'help')
|
113
|
-
end
|
114
|
-
|
115
|
-
def test_007_usage_errors
|
116
|
-
message = error = 'none'
|
117
|
-
begin
|
118
|
-
raise UsageError, ['error', MOCK]
|
119
|
-
rescue StandardError
|
120
|
-
message = $!.message
|
121
|
-
error = 'standard'
|
122
|
-
rescue Exception
|
123
|
-
error = 'exception'
|
124
|
-
message = 'wrong'
|
125
|
-
end
|
126
|
-
assert_equal(error, 'standard')
|
127
|
-
assert_equal(message, 'error')
|
128
|
-
|
129
|
-
error = 'none'
|
130
|
-
begin
|
131
|
-
raise ImplementationError, ['error', MOCK]
|
132
|
-
rescue StandardError
|
133
|
-
message = $!.message
|
134
|
-
error = 'standard'
|
135
|
-
rescue Exception
|
136
|
-
error = 'exception'
|
137
|
-
message = 'wrong'
|
138
|
-
end
|
139
|
-
assert_equal(error, 'standard')
|
140
|
-
assert_equal(message, 'error')
|
141
|
-
end
|
142
|
-
|
143
|
-
def test_008_to_value
|
144
|
-
[['1', Integer], ['1.0', Float], ['One', String], ['1,2.0,Three', Array]].each do |string, type|
|
145
|
-
value = HelpParser.to_value(string)
|
146
|
-
assert( value.kind_of?(type) )
|
147
|
-
end
|
148
|
-
end
|
149
|
-
|
150
|
-
def test_009_str2sym
|
151
|
-
assert_equal(HelpParser.str2sym('abcd'), :abcd)
|
152
|
-
assert_equal(HelpParser.str2sym('ab-cd'), :ab_cd)
|
153
|
-
assert_equal(HelpParser.str2sym('ab_cd'), :ab_cd)
|
154
|
-
end
|
155
|
-
|
156
|
-
def test_010_raise_error
|
157
|
-
assert_raises(UsageError){ MOCK.usage_error('usage error') }
|
158
|
-
assert_raises(ImplementationError){ MOCK.implementation_error('implementation error') }
|
159
|
-
|
160
|
-
obj = error = message = 'none'
|
161
|
-
begin
|
162
|
-
MOCK.usage_error('usage error')
|
163
|
-
rescue Exception
|
164
|
-
error = $!.class
|
165
|
-
message = $!.message
|
166
|
-
obj = $!.obj if $!.respond_to?(:obj)
|
167
|
-
end
|
168
|
-
assert_equal(error, UsageError)
|
169
|
-
assert_equal(message, 'usage error')
|
170
|
-
assert_equal(obj, MOCK)
|
171
|
-
|
172
|
-
obj = error = message = 'none'
|
173
|
-
begin
|
174
|
-
MOCK.implementation_error('implementation error')
|
175
|
-
rescue Exception
|
176
|
-
error = $!.class
|
177
|
-
message = $!.message
|
178
|
-
obj = $!.obj if $!.respond_to?(:obj)
|
179
|
-
end
|
180
|
-
assert_equal(error, ImplementationError)
|
181
|
-
assert_equal(message, 'implementation error')
|
182
|
-
assert_equal(obj, MOCK)
|
183
|
-
end
|
184
|
-
|
185
|
-
def test_011_parse
|
186
|
-
argv = [
|
187
|
-
'-a', '-bcd', '--e', '--fgh',
|
188
|
-
'--i=z', '--jklm=y', '--nop=1', '--q=2.0', '--r=1,2.0,Three',
|
189
|
-
'--no-st'
|
190
|
-
]
|
191
|
-
|
192
|
-
options = {}
|
193
|
-
parsed = HelpParser.parse(argv, MOCK){|key, value| options[key]=value}
|
194
|
-
|
195
|
-
assert_equal options['a'], true
|
196
|
-
assert_equal options['b'], true
|
197
|
-
assert_equal options['c'], true
|
198
|
-
assert_equal options['d'], true
|
199
|
-
assert_equal options['e'], true
|
200
|
-
assert_equal options['fgh'], true
|
201
|
-
|
202
|
-
assert_equal options['i'], 'z'
|
203
|
-
assert_equal options['jklm'], 'y'
|
204
|
-
assert_equal options['nop'], 1
|
205
|
-
assert_equal options['q'], 2.0
|
206
|
-
assert_equal options['r'], [1,2.0,'Three']
|
207
|
-
|
208
|
-
assert_equal options['st'], false
|
209
|
-
|
210
|
-
refute options.has_key?('bcd')
|
211
|
-
refute options.has_key?('f')
|
212
|
-
refute options.has_key?('g')
|
213
|
-
refute options.has_key?('h')
|
214
|
-
refute options.has_key?('no-st')
|
215
|
-
refute options.has_key?('no_st')
|
216
|
-
|
217
|
-
assert_raises(UsageError){ HelpParser.parse(['--no-key=true'], MOCK){ } }
|
218
|
-
assert_nothing_raised(UsageError){ HelpParser.parse(['--no-key'], MOCK){ } }
|
219
|
-
end
|
220
|
-
|
221
|
-
# HelpParser#new, HelpParser#[], and HelpParser#defaults
|
222
|
-
# are mostly tested via cucumber.
|
223
|
-
# I'm just going to do some quick tests.
|
224
|
-
|
225
|
-
def test_012_new
|
226
|
-
argv = [
|
227
|
-
'-a', '-bcd', '--e', '--fgh',
|
228
|
-
'--i=z', '--jklm=y', '--nop=1', '--q=2.0', '--r=1,2.0,Three',
|
229
|
-
]
|
230
|
-
help = "-a\n-b\n-c\n-d\n-e\n--fgh\n-i\n--jklm\n--nop\n--q\n--r"
|
231
|
-
assert_nothing_raised{ HelpParser.new(argv, '0.1.0', help) }
|
232
|
-
assert_nothing_raised{ HelpParser.new('0.0.0', argv, help) }
|
233
|
-
assert_nothing_raised{ HelpParser.new('0.1.0', help, argv) }
|
234
|
-
end
|
235
|
-
|
236
|
-
def test_013_defaults
|
237
|
-
options = HelpParser.new('0', '--var', [''])
|
238
|
-
options.defaults!(:var, 'A', 'B')
|
239
|
-
assert_equal( options[:var], 'A' )
|
240
|
-
|
241
|
-
options = HelpParser.new('0', '--var', ['--var'])
|
242
|
-
options.defaults!(:var, 'A', 'B')
|
243
|
-
assert_equal( options[:var], 'B' )
|
244
|
-
|
245
|
-
options = HelpParser.new('0', '--var', ['--var=C'])
|
246
|
-
options.defaults!(:var, 'A', 'B')
|
247
|
-
assert_equal( options[:var], 'C' )
|
248
|
-
end
|
249
|
-
|
250
|
-
end
|