clasp-ruby 0.10.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,65 @@
1
+ #! /usr/bin/ruby
2
+
3
+ $:.unshift File.join(File.dirname(__FILE__), '../..', 'lib')
4
+
5
+ require 'clasp'
6
+
7
+ require 'test/unit'
8
+
9
+ class Test_Arguments_2 < Test::Unit::TestCase
10
+
11
+ def test_combined_flags_0
12
+
13
+ aliases = [
14
+ ]
15
+ args = CLASP::Arguments.new [ '-abc' ], aliases
16
+
17
+ assert_equal 1, args.flags.size
18
+ assert_equal '-abc', args.flags[0].name
19
+ assert_equal '-abc', args.flags[0].to_s
20
+ assert_equal 'abc', args.flags[0].given_label
21
+ assert_equal 1, args.flags[0].given_hyphens
22
+ assert_nil args.flags[0].argument_alias
23
+ assert_equal Hash.new, args.flags[0].extras
24
+
25
+ assert_equal 0, args.options.size
26
+
27
+ assert_equal 0, args.values.size
28
+ end
29
+
30
+ def test_combined_flags_1
31
+
32
+ aliases = [
33
+ CLASP.Flag('--a', alias: '-a'),
34
+ CLASP.Flag('--b', alias: '-b'),
35
+ CLASP.Flag('--c', alias: '-c'),
36
+ ]
37
+ args = CLASP::Arguments.new [ '-abc' ], aliases
38
+
39
+ assert_equal 3, args.flags.size
40
+ assert_equal '--a', args.flags[0].name
41
+ assert_equal '--a', args.flags[0].to_s
42
+ assert_equal 'abc', args.flags[0].given_label
43
+ assert_equal 1, args.flags[0].given_hyphens
44
+ assert_equal aliases[0], args.flags[0].argument_alias
45
+ assert_equal Hash.new, args.flags[0].extras
46
+ assert_equal '--b', args.flags[1].name
47
+ assert_equal '--b', args.flags[1].to_s
48
+ assert_equal 'abc', args.flags[1].given_label
49
+ assert_equal 1, args.flags[1].given_hyphens
50
+ assert_equal aliases[1], args.flags[1].argument_alias
51
+ assert_equal Hash.new, args.flags[1].extras
52
+ assert_equal '--c', args.flags[2].name
53
+ assert_equal '--c', args.flags[2].to_s
54
+ assert_equal 'abc', args.flags[2].given_label
55
+ assert_equal 1, args.flags[2].given_hyphens
56
+ assert_equal aliases[2], args.flags[2].argument_alias
57
+ assert_equal Hash.new, args.flags[2].extras
58
+
59
+ assert_equal 0, args.options.size
60
+
61
+ assert_equal 0, args.values.size
62
+ end
63
+ end
64
+
65
+
@@ -0,0 +1,89 @@
1
+ #! /usr/bin/ruby
2
+
3
+ $:.unshift File.join(File.dirname(__FILE__), '../..', 'lib')
4
+
5
+ require 'clasp'
6
+
7
+ require 'test/unit'
8
+
9
+ class Test_Arguments_3 < Test::Unit::TestCase
10
+
11
+ def test_include_flag_1
12
+
13
+ args = CLASP::Arguments.new [ '-f1', 'value1', '--option1=value1', '--flag2' ], nil
14
+
15
+ assert args.flags.include? '-f1'
16
+ assert not(args.flags.include? '-f2')
17
+ assert args.flags.include? '--flag2'
18
+ assert not(args.flags.include? '--option1')
19
+ end
20
+
21
+ def test_include_flag_2
22
+
23
+ aliases = [
24
+ CLASP.Flag('--flag1', alias: '-f1'),
25
+ ]
26
+ args = CLASP::Arguments.new [ '-f1', 'value1', '--option1=value1', '--flag2' ], aliases
27
+
28
+ assert args.flags.include? '-f1'
29
+ assert args.flags.include? '--flag1'
30
+ assert not(args.flags.include? '-f2')
31
+ assert args.flags.include? '--flag2'
32
+ assert not(args.flags.include? '--option1')
33
+ end
34
+
35
+ def test_combined_flags_1
36
+
37
+ aliases = [
38
+ CLASP.Flag('--delete', alias: '-d'),
39
+ CLASP.Flag('--update', alias: '-u'),
40
+ ]
41
+ args = CLASP::Arguments.new [ '-du' ], aliases
42
+
43
+ assert args.flags.include? '--delete'
44
+ assert args.flags.include? '--update'
45
+ end
46
+
47
+ def test_get_option_1
48
+
49
+ args = CLASP::Arguments.new [ '-f1', 'value1', '--option1=value1', '--flag2' ], nil
50
+
51
+ assert args.options.include? '--option1'
52
+ assert not(args.options.include? '--option1=value1')
53
+ assert not(args.options.include? '-f1')
54
+ assert not(args.options.include? '--flag2')
55
+ end
56
+
57
+ def test_get_option_2
58
+
59
+ aliases = [
60
+ CLASP.Flag('--flag1', alias: '-f1'),
61
+ CLASP.Option('--option1', alias: '-o1'),
62
+ ]
63
+ args = CLASP::Arguments.new [ '-f1', 'value1', '-o1=value1', '--flag2' ], aliases
64
+
65
+ assert args.options.include? '-o1'
66
+ assert args.options.include? '--option1'
67
+ assert not(args.options.include? '--option1=value1')
68
+ assert not(args.options.include? '-f1')
69
+ assert not(args.options.include? '--flag2')
70
+ end
71
+
72
+ def test_combined_flags_and_options_1
73
+
74
+ aliases = [
75
+ CLASP.Flag('--delete', alias: '-d'),
76
+ CLASP.Flag('--update', alias: '-u'),
77
+ CLASP.Option('--encryption', alias: '-e'),
78
+ CLASP.Option('--encryption=blowfish', alias: '-b'),
79
+ ]
80
+ args = CLASP::Arguments.new [ '-du', '-e', 'sha' ], aliases
81
+
82
+ assert args.flags.include? '--delete'
83
+ assert args.flags.include? '--update'
84
+ assert args.options.include? '--encryption'
85
+ assert_not_nil args.options.detect { |o| o == '--encryption' }
86
+ assert_nil args.options.detect { |o| o == '--blah' }
87
+ end
88
+ end
89
+
@@ -0,0 +1,73 @@
1
+ #! /usr/bin/ruby
2
+
3
+ $:.unshift File.join(File.dirname(__FILE__), '../..', 'lib')
4
+
5
+ require 'clasp'
6
+
7
+ require 'test/unit'
8
+
9
+ class Test_defaults < Test::Unit::TestCase
10
+
11
+ def test_responds_to_Help
12
+
13
+ assert CLASP::Flag.respond_to? :Help
14
+ end
15
+
16
+ def test_Help_is_idempotent
17
+
18
+ help_1 = CLASP::Flag.Help
19
+ help_2 = CLASP::Flag.Help
20
+
21
+ assert_same help_1, help_2
22
+ end
23
+
24
+ def test_Help_attributes
25
+
26
+ assert_equal '--help', CLASP::Flag.Help.name
27
+
28
+ assert_equal [], CLASP::Flag.Help.aliases
29
+
30
+ assert_equal 'shows this help and terminates', CLASP::Flag.Help.help
31
+ end
32
+
33
+ def test_Help_extras
34
+
35
+ help1 = CLASP::Flag.Help
36
+ help2 = CLASP::Flag.Help(v1: 'v', v2: 2)
37
+
38
+ assert_equal Hash.new, help1.extras
39
+ assert_equal Hash[ [ [ :v1, 'v' ], [ :v2, 2 ] ] ], help2.extras
40
+ end
41
+
42
+ def test_responds_to_Version
43
+
44
+ assert CLASP::Flag.respond_to? :Version
45
+ end
46
+
47
+ def test_Version_is_idempotent
48
+
49
+ version_1 = CLASP::Flag.Version
50
+ version_2 = CLASP::Flag.Version
51
+
52
+ assert_same version_1, version_2
53
+ end
54
+
55
+ def test_Version_attributes
56
+
57
+ assert_equal '--version', CLASP::Flag.Version.name
58
+
59
+ assert_equal [], CLASP::Flag.Version.aliases
60
+
61
+ assert_equal 'shows version and terminates', CLASP::Flag.Version.help
62
+ end
63
+
64
+ def test_Version_extras
65
+
66
+ version1 = CLASP::Flag.Version
67
+ version2 = CLASP::Flag.Version(v1: 'v', v2: 2)
68
+
69
+ assert_equal Hash.new, version1.extras
70
+ assert_equal Hash[ [ [ :v1, 'v' ], [ :v2, 2 ] ] ], version2.extras
71
+ end
72
+ end
73
+
@@ -0,0 +1,149 @@
1
+ #! /usr/bin/ruby
2
+
3
+ $:.unshift File.join(File.dirname(__FILE__), '../..', 'lib')
4
+
5
+ require 'clasp'
6
+
7
+ require 'test/unit'
8
+
9
+ class Test_Examples < Test::Unit::TestCase
10
+
11
+ def test_SimpleCommandLineNoAliases
12
+
13
+ argv = %w{ --show-all=true infile -c outfile }
14
+
15
+ args = CLASP::Arguments.new(argv)
16
+
17
+ assert_equal 1, args.flags.size
18
+ flag = args.flags[0]
19
+ assert_equal "-c", flag.name
20
+ assert_equal 1, args.options.size
21
+ option = args.options[0]
22
+ assert_equal "--show-all", option.name
23
+ assert_equal "true", option.value
24
+ assert_equal 2, args.values.size
25
+ assert_equal "infile", args.values[0]
26
+ assert_equal "outfile", args.values[1]
27
+ end
28
+
29
+ def test_UseOfSpecialDoubleSlashFlagToTreatAllSubsequentArgumentsAsValues
30
+
31
+ argv = %w{ --show-all=true -- infile outfile -c }
32
+
33
+ args = CLASP::Arguments.new(argv)
34
+
35
+ assert_equal 0, args.flags.size
36
+ option = args.options[0]
37
+ assert_equal "--show-all", option.name
38
+ assert_equal "true", option.value
39
+ assert_equal 3, args.values.size
40
+ assert_equal "infile", args.values[0]
41
+ assert_equal "outfile", args.values[1]
42
+ assert_equal "-c", args.values[2]
43
+ end
44
+
45
+ def test_UseOfFlagShortForms
46
+
47
+ aliases = [
48
+
49
+ CLASP.Flag('--verbose', alias: '-v'),
50
+ CLASP.Flag('--trace-output', aliases: [ '-t', '--trace' ]),
51
+ ]
52
+
53
+ argv = %w{ --trace -v }
54
+
55
+ args = CLASP::Arguments.new(argv, aliases)
56
+
57
+ assert_equal 2, args.flags.size
58
+ flag = args.flags[0]
59
+ assert_equal '--trace-output', flag.name
60
+ assert_equal '--trace', flag.given_name
61
+ flag = args.flags[1]
62
+ assert_equal '--verbose', flag.name
63
+ assert_equal '-v', flag.given_name
64
+ assert_equal 0, args.options.size
65
+ assert_equal 0, args.values.size
66
+ end
67
+
68
+ def test_UseOfFlagSingleShortFormsCombined
69
+
70
+ aliases = [
71
+
72
+ CLASP.Flag('--expand', alias: '-x'),
73
+ CLASP.Flag('--verbose', alias: '-v'),
74
+ CLASP.Flag('--trace-output', aliases: [ '-t', '--trace' ]),
75
+ ]
76
+
77
+ argv = %w{ -tvx }
78
+
79
+ args = CLASP::Arguments.new(argv, aliases)
80
+
81
+ assert_equal 3, args.flags.size
82
+ flag = args.flags[0]
83
+ assert_equal '--trace-output', flag.name
84
+ assert_equal '-tvx', flag.given_name
85
+ flag = args.flags[1]
86
+ assert_equal '--verbose', flag.name
87
+ assert_equal '-tvx', flag.given_name
88
+ flag = args.flags[2]
89
+ assert_equal '--expand', flag.name
90
+ assert_equal '-tvx', flag.given_name
91
+ assert_equal 0, args.options.size
92
+ assert_equal 0, args.values.size
93
+ end
94
+
95
+ def test_UseOfOptionShortForm
96
+
97
+ aliases = [
98
+
99
+ CLASP.Option('--show-all', alias: '-a'),
100
+ ]
101
+
102
+ argv = %w{ -c -a true infile outfile }
103
+
104
+ args = CLASP::Arguments.new(argv, aliases)
105
+
106
+ assert_equal 1, args.flags.size
107
+ flag = args.flags[0]
108
+ assert_equal "-c", flag.name
109
+ assert_equal 1, args.options.size
110
+ option = args.options[0]
111
+ assert_equal "--show-all", option.name
112
+ assert_equal "-a", option.given_name
113
+ assert_equal "true", option.value
114
+ assert_equal 2, args.values.size
115
+ assert_equal "infile", args.values[0]
116
+ assert_equal "outfile", args.values[1]
117
+ end
118
+
119
+ def test_UseOfFlagsAsAliasesForOption
120
+
121
+ aliases = [
122
+
123
+ CLASP.Flag('--dump-contents', alias: '-d'),
124
+ CLASP.Option('--log-level', alias: '-l'),
125
+ CLASP.Flag('--log-level=warning', alias: '-w'),
126
+ ]
127
+
128
+ argv = %w{ myfile -dw }
129
+
130
+ args = CLASP::Arguments.new(argv, aliases)
131
+
132
+ assert_equal 1, args.flags.size
133
+ flag = args.flags[0]
134
+ assert_equal "--dump-contents", flag.name
135
+ assert_equal "-dw", flag.given_name
136
+ assert_equal 1, flag.given_index
137
+ assert_equal 1, args.options.size
138
+ option = args.options[0]
139
+ assert_equal "--log-level", option.name
140
+ assert_equal "-dw", option.given_name
141
+ assert_equal 1, flag.given_index
142
+ assert_equal "warning", option.value
143
+ assert_equal 1, args.values.size
144
+ assert_equal "myfile", args.values[0]
145
+ end
146
+ end
147
+
148
+ # ############################## end of file ############################# #
149
+
@@ -0,0 +1,110 @@
1
+ #! /usr/bin/ruby
2
+
3
+ $:.unshift File.join(File.dirname(__FILE__), '../..', 'lib')
4
+
5
+ require 'clasp'
6
+
7
+ require 'test/unit'
8
+
9
+ require 'stringio'
10
+
11
+ class Test_Usage < Test::Unit::TestCase
12
+
13
+ def test_empty_default
14
+
15
+ aliases = []
16
+
17
+ stream = StringIO.new
18
+
19
+ CLASP.show_usage aliases, stream: stream, program_name: 'myprog'
20
+
21
+ assert_equal "USAGE: myprog [ ... flags and options ... ]\n\n", stream.string
22
+ end
23
+
24
+ def test_empty_all
25
+
26
+ aliases = []
27
+
28
+ stream = StringIO.new
29
+
30
+ CLASP.show_usage aliases, stream: stream, program_name: 'myprog', flags_and_options: ''
31
+
32
+ assert_equal "USAGE: myprog\n\n", stream.string
33
+ end
34
+
35
+ def test_empty_all_with_info_line_of_one_string
36
+
37
+ aliases = []
38
+
39
+ stream = StringIO.new
40
+
41
+ info = 'myprog version'
42
+
43
+ CLASP.show_usage aliases, stream: stream, program_name: 'myprog', flags_and_options: '', info_lines: info
44
+
45
+ assert_equal "myprog version\nUSAGE: myprog\n\n", stream.string
46
+ end
47
+
48
+ def test_empty_all_with_info_lines
49
+
50
+ aliases = []
51
+
52
+ stream = StringIO.new
53
+
54
+ info_lines = [
55
+
56
+ 'Synesis Software My Program',
57
+ 'version 1',
58
+ ]
59
+
60
+ CLASP.show_usage aliases, stream: stream, program_name: 'myprog', flags_and_options: '', info_lines: info_lines
61
+
62
+ assert_equal "Synesis Software My Program\nversion 1\nUSAGE: myprog\n\n", stream.string
63
+ end
64
+
65
+ def test_empty_all_with_info_lines_including_version
66
+
67
+ aliases = []
68
+
69
+ stream = StringIO.new
70
+
71
+ info_lines = [
72
+
73
+ 'Synesis Software My Program',
74
+ :version
75
+ ]
76
+
77
+ CLASP.show_usage aliases, stream: stream, program_name: 'myprog', flags_and_options: '', info_lines: info_lines, version: [ 1, 0, 1], version_prefix: 'v'
78
+
79
+ assert_equal "Synesis Software My Program\nmyprog v1.0.1\nUSAGE: myprog\n\n", stream.string
80
+ end
81
+
82
+ def test_one_alias_default
83
+
84
+ aliases = [
85
+
86
+ CLASP::Flag.Version
87
+ ]
88
+
89
+ stream = StringIO.new
90
+
91
+ CLASP.show_usage aliases, stream: stream, program_name: 'myprog'
92
+
93
+ assert_equal "USAGE: myprog [ ... flags and options ... ]\n\nflags/options:\n\n\t--version\n\t\t#{CLASP::Flag.Version.help}\n\n", stream.string
94
+ end
95
+
96
+ def test_one_alias_all
97
+
98
+ aliases = [
99
+
100
+ CLASP::Flag.Version
101
+ ]
102
+
103
+ stream = StringIO.new
104
+
105
+ CLASP.show_usage aliases, stream: stream, program_name: 'myprog', flags_and_options: ''
106
+
107
+ assert_equal "USAGE: myprog\n\nflags/options:\n\n\t--version\n\t\t#{CLASP::Flag.Version.help}\n\n", stream.string
108
+ end
109
+ end
110
+