optiflag 0.6

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.
data/optiflag.gemspec ADDED
@@ -0,0 +1,13 @@
1
+ require 'rake'
2
+ Gem::Specification.new do |spec|
3
+ spec.name = "optiflag"
4
+ spec.version = "0.6"
5
+ spec.summary = "Optiflag is yet-another library for handling command-line options in an arbitrary Ruby program."
6
+ spec.author = "Daniel Eklund"
7
+ spec.email = "doeklund@gmail.com"
8
+ spec.homepage = "http://rubyforge.org/projects/optiflag/"
9
+ spec.files = FileList['**/*'].to_a
10
+ spec.test_files = FileList['test/tc*'].to_a - ["test/tc_flagall.rb"]
11
+ spec.has_rdoc = true
12
+ spec.rubyforge_project = 'optiflag'
13
+ end
@@ -0,0 +1,42 @@
1
+ require 'optiflag.rb'
2
+ require 'test/unit'
3
+
4
+ module HelpArgs extend OptiFlag::Flagset
5
+ usage_flag "h","?","help"
6
+ flag "dir"
7
+ end
8
+
9
+ class TC_AdvancedHelpArgs < Test::Unit::TestCase
10
+
11
+ def test_help_requested
12
+ command_lines =
13
+ ["-dir thedire -? dir",
14
+ "-dir thedire -h dir",
15
+ "-dir thedire -help dir"]
16
+ command_lines.each do |cl|
17
+ argv = cl.split
18
+ args = HelpArgs::parse(argv)
19
+ assert(args.help_requested?,
20
+ "A help flag was added to the command-line. Please register its existence.")
21
+ assert_equal("dir",args.help_requested_on,
22
+ "Advanced help is supposed to be requested on 'dir'")
23
+ assert_equal("thedire",args.flag_value.dir,
24
+ "thedire is the proper value of the dir flag")
25
+ end
26
+ end
27
+ def test_no_help_requested
28
+ command_lines =
29
+ ["-dir thedire",
30
+ "-dir thedire -he",
31
+ "-dir thedire -hElp"]
32
+ command_lines.each do |cl|
33
+ argv = cl.split
34
+ args = HelpArgs::parse(argv)
35
+ assert_equal("thedire",args.flag_value.dir,
36
+ "thedire is the proper value of the dir flag")
37
+
38
+ assert(! args.help_requested?,
39
+ "There are no help flags on the command line")
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,30 @@
1
+ require 'optiflag.rb'
2
+ require 'test/unit'
3
+
4
+ module AlternateArgs extend OptiFlag::Flagset
5
+ flag "directory" do
6
+ alternate_forms %w{d dir D DIR DIRECTORY}
7
+ end
8
+ end
9
+
10
+
11
+
12
+ class TC_AlternateArgs < Test::Unit::TestCase
13
+
14
+
15
+ def test_alternate_forms
16
+ command_lines =
17
+ ["-d FLOTSAM","-dir FLOTSAM",
18
+ "--directory FLOTSAM",
19
+ "-DIR FLOTSAM","-DIRECTORY FLOTSAM",
20
+ "-directory FLOTSAM","-D FLOTSAM"]
21
+ command_lines.each do |command_line|
22
+ args = AlternateArgs::parse(command_line.split)
23
+ assert_equal("FLOTSAM",args.flag_value.directory,
24
+ "Directory not properly set")
25
+ assert(! args.errors?,
26
+ "No errors should have occurred")
27
+ end
28
+ end
29
+
30
+ end
@@ -0,0 +1,103 @@
1
+ require 'optiflag.rb'
2
+ require 'test/unit'
3
+
4
+
5
+ module CharArgs extend OptiFlag::Flagset
6
+ character_flag :l, :p_group
7
+ character_flag :s, :p_group
8
+ character_flag :a, :p_group
9
+ optional_switch_flag "clear"
10
+ character_flag :x do
11
+ description "Extract"
12
+ end
13
+ character_flag :v
14
+ character_flag :f
15
+ flag "dir"
16
+ keyword "bobby"
17
+ end
18
+
19
+ class TC_CharArgs < Test::Unit::TestCase
20
+
21
+ def test_xvf
22
+ command_lines = ["-x bobby -v -f -dir sdsdsd",
23
+ "-xvf",
24
+ "-vxf",
25
+ "-fvx bobby",
26
+ "-f -dir kosd -xv",
27
+ "-dir sdsd -x -fv",
28
+ "-x -vf",
29
+ "-f -vx",
30
+ "-v -f -x -vo sd"]
31
+ command_lines.each do |x|
32
+ argv = x.split
33
+ args = CharArgs::parse(argv)
34
+ assert_equal(true,args.flag_value.f?,
35
+ "The 'f' flag should be set")
36
+ assert_equal(true,args.flag_value.v?,
37
+ "The 'v' flag should be set")
38
+ assert_equal(true,args.flag_value.x?,
39
+ "The 'x' flag should be set")
40
+
41
+ end
42
+ end
43
+
44
+ def test_lsa
45
+ command_lines = ["-x bobby -v -f -dir sdsdsd",
46
+ "-xvf",
47
+ "-vxf",
48
+ "-fvx bobby",
49
+ "-f -dir kosd -xv",
50
+ "-dir sdsd -x -fv",
51
+ "-x -vf",
52
+ "-f -vx",
53
+ "-v -f -x -vo sd"]
54
+ command_lines.each do |x|
55
+ argv = x.split
56
+ args = CharArgs::parse(argv)
57
+ assert_equal(false,args.flag_value.l?)
58
+ assert_equal(false,args.flag_value.s?)
59
+ assert_equal(false,args.flag_value.a?)
60
+ end
61
+ end
62
+ def test_lsa_not_there
63
+ command_lines = ["-lsa",
64
+ "-las",
65
+ "-als",
66
+ "-asl",
67
+ "-sal",
68
+ "-sla",
69
+ "-s -la",
70
+ "-s -al",
71
+ "-a -sl",
72
+ "-a -ls ",
73
+ "-l -s -a",
74
+ "--l --s --a",
75
+ "-lsa bobby -dir sdsd",
76
+ "bobby -dir sdsd -las",
77
+ "-als bobby -dir sdsd",
78
+ "bobby -asl",
79
+ "-sal -dir sdsd",
80
+ "-sla",
81
+ "-s bobby -la",
82
+ "-s -al",
83
+ "-a bobby -sl",
84
+ "-a -ls",
85
+ "-l bobby -dir sdsd -s -a"]
86
+
87
+ command_lines.each do |x|
88
+ argv = x.split
89
+ args = CharArgs::parse(argv)
90
+ assert_equal(true,args.flag_value.l?)
91
+ assert_equal(true,args.flag_value.s?)
92
+ assert_equal(true,args.flag_value.a?)
93
+ assert_equal(false,args.flag_value.x?)
94
+ assert_equal(false,args.flag_value.v?)
95
+ assert_equal(false,args.flag_value.f?)
96
+ end
97
+ end
98
+
99
+
100
+
101
+
102
+ end
103
+
@@ -0,0 +1,74 @@
1
+ require 'optiflag.rb'
2
+ require 'test/unit'
3
+
4
+ module OptionalArgs extend OptiFlag::Flagset
5
+ flag "dir"
6
+ optional_flag "log"
7
+ optional_flag "verbose_level" do
8
+ value_in_set [1,2,3,4,0]
9
+ end
10
+ optional_switch_flag "force"
11
+ end
12
+
13
+ class TC_OptionalArgs < Test::Unit::TestCase
14
+
15
+ def test_none_there
16
+ cl = %w{ -dir c:/my_stuff }
17
+ result = OptionalArgs::parse(cl)
18
+ assert( ! result.errors?)
19
+ assert_equal("c:/my_stuff",result.flag_value.dir)
20
+ assert(!result.flag_value.log?)
21
+ assert(!result.flag_value.verbose_level?)
22
+ assert(!result.flag_value.force?)
23
+ end
24
+
25
+ def test_all_there_and_no_errors
26
+ cl = %w{ -dir c:/my_stuff -log c:/log -force -verbose_level 3 }
27
+ result = OptionalArgs::parse(cl)
28
+ assert( ! result.errors?)
29
+ assert_equal("c:/log",result.flag_value.log)
30
+ assert_equal("3",result.flag_value.verbose_level)
31
+ assert(result.flag_value.force?)
32
+ end
33
+ def test_some_there_and_no_errors
34
+ cl = %w{ -dir c:/my_stuff -force -verbose_level 3 }
35
+ result = OptionalArgs::parse(cl)
36
+ assert( ! result.errors?)
37
+ assert(!result.flag_value.log?)
38
+ assert_equal(nil,result.flag_value.log)
39
+ assert_equal("3",result.flag_value.verbose_level)
40
+ assert(result.flag_value.force?)
41
+ end
42
+ def test_some_there_and_no_errors_rearranged_1
43
+ cl = %w{ -dir c:/my_stuff -verbose_level 3 -force}
44
+ result = OptionalArgs::parse(cl)
45
+ assert( ! result.errors?)
46
+ assert(!result.flag_value.log?)
47
+ assert_equal(nil,result.flag_value.log)
48
+ assert_equal("3",result.flag_value.verbose_level)
49
+ assert(result.flag_value.force?)
50
+ end
51
+ def test_some_there_and_no_errors_rearranged_2
52
+ cl = %w{ -force -dir c:/my_stuff -verbose_level 3 }
53
+ result = OptionalArgs::parse(cl)
54
+ assert( ! result.errors?)
55
+ assert(!result.flag_value.log?)
56
+ assert_equal(nil,result.flag_value.log)
57
+ assert_equal("3",result.flag_value.verbose_level)
58
+ assert(result.flag_value.force?)
59
+ end
60
+ def test_some_there_but_has_validation_error
61
+ cl = %w{ -dir c:/my_stuff -verbose_level three }
62
+ result = OptionalArgs::parse(cl)
63
+ assert( result.errors?)
64
+ assert(!result.flag_value.log?)
65
+ assert_equal(nil,result.flag_value.log)
66
+ assert(!result.flag_value.force?)
67
+ assert_equal(0,result.errors.missing_flags.length)
68
+ assert_equal(1,result.errors.validation_errors.length)
69
+ end
70
+
71
+
72
+
73
+ end
74
+
@@ -0,0 +1,51 @@
1
+ require 'optiflag.rb'
2
+ require 'test/unit'
3
+
4
+ module DansArgs extend OptiFlag::Flagset
5
+ flag ["directory"]
6
+ flag "script"
7
+ flag ["control_db"] do
8
+ description "The control database credentials"
9
+ end
10
+ flag ["target_db"]
11
+ end
12
+
13
+ class TC_FlagAll < Test::Unit::TestCase
14
+
15
+ def setup
16
+ @regular_dans_args = %w{-directory my_directory -script my_script
17
+ -control_db control -target_db target}
18
+ @missing_dans_args = %w{-directory my_directory -script my_script}
19
+ end
20
+
21
+ def test_regular_dans_arg_parses
22
+ result = DansArgs::parse(@regular_dans_args)
23
+ assert_equal("my_directory",result.flag_value.directory,
24
+ "Flag should be equal to my_directory")
25
+ assert(result.flag_value.directory?,
26
+ "Directory Flag should have been passed")
27
+ assert_equal("my_script",result.flag_value.script,
28
+ "Flag should be equal to my_script")
29
+ assert_equal("control",result.flag_value.control_db,
30
+ "Flag should be equal to control")
31
+ assert(result.errors? == false,"There should be no errors")
32
+ end
33
+
34
+ def test_missing_dans_arg_parses
35
+ result = DansArgs::parse(@missing_dans_args)
36
+ assert( result.errors?,
37
+ "There should be errors, with two missing required options")
38
+ assert_equal("-control_db",result.errors.missing_flags[0],
39
+ "First Missing flag should be -control_db")
40
+ assert_equal("-target_db",result.errors.missing_flags[1],
41
+ "Second Missing flag should be -target_db")
42
+ assert_equal(2,result.errors.missing_flags.length,
43
+ "There should be two missing flags")
44
+ end
45
+
46
+ def teardown
47
+
48
+ end
49
+
50
+ end
51
+
@@ -0,0 +1,40 @@
1
+ require 'optiflag.rb'
2
+ require 'test/unit'
3
+
4
+ module HelpArgs extend OptiFlag::Flagset
5
+ usage_flag "h","?","help"
6
+ flag "dir"
7
+ end
8
+
9
+ class TC_HelpArgs < Test::Unit::TestCase
10
+
11
+ def test_help_requested
12
+ command_lines =
13
+ ["-dir thedire -?",
14
+ "-dir thedire -h",
15
+ "-dir thedire -help"]
16
+ command_lines.each do |cl|
17
+ argv = cl.split
18
+ args = HelpArgs::parse(argv)
19
+ assert(args.help_requested?,
20
+ "A help flag was added to the command-line. Please register its existence.")
21
+ assert_equal("thedire",args.flag_value.dir,
22
+ "thedire is the proper value of the dir flag")
23
+ end
24
+ end
25
+ def test_no_help_requested
26
+ command_lines =
27
+ ["-dir thedire",
28
+ "-dir thedire -he",
29
+ "-dir thedire -hElp"]
30
+ command_lines.each do |cl|
31
+ argv = cl.split
32
+ args = HelpArgs::parse(argv)
33
+ assert_equal("thedire",args.flag_value.dir,
34
+ "thedire is the proper value of the dir flag")
35
+
36
+ assert(! args.help_requested?,
37
+ "There are no help flags on the command line")
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,40 @@
1
+ require 'optiflag.rb'
2
+ require 'test/unit'
3
+
4
+ module ValidArgs extend OptiFlag::Flagset
5
+ flag "directory"
6
+ flag "script", :description => "The Script directory"
7
+ flag "mode" do
8
+ value_matches /[0-9]/
9
+ end
10
+ flag ["date"] do
11
+ value_matches ["Must be of form mm\/dd\/yy",
12
+ /^[0-9]{2}\/[0-9]{2}\/[0-9]{2,4}$/]
13
+ end
14
+
15
+
16
+ end
17
+
18
+ class TC_ValidArgs < Test::Unit::TestCase
19
+
20
+
21
+ def test_validation
22
+ command_line = %w{-directory c:/eu -script RunMe -mode 3 -date 12/23/2006}
23
+ args = ValidArgs::parse(command_line)
24
+ assert_equal("c:/eu",args.flag_value.directory,
25
+ "Directory not properly set")
26
+ assert(! args.errors?,
27
+ "No errors should have occurred")
28
+ end
29
+
30
+ def test_validation_with_errors
31
+ command_line = %w{-directory c:/eu -script RunMe -mode wrx -date monday}
32
+ args = ValidArgs::parse(command_line)
33
+ assert(args.errors?,
34
+ "An error should have occurred")
35
+ assert_equal(2,args.errors.validation_errors.length,
36
+ "There should be 2 problems")
37
+ end
38
+
39
+ end
40
+
@@ -0,0 +1,25 @@
1
+ require 'optiflag.rb'
2
+ require 'test/unit'
3
+
4
+ module BUG_ONE extend OptiFlag::Flagset
5
+ flag "dir" do
6
+ alternate_forms "D","d"
7
+ end
8
+ flag "log"
9
+ flag "db", :description => "The database"
10
+ optional_flag "verbose"
11
+ end
12
+
13
+
14
+
15
+ class TC_BUG_ONE < Test::Unit::TestCase
16
+
17
+ def test_bug
18
+ command_line = "-log LOG -dir LOG -db DB"
19
+ args = BUG_ONE::parse(command_line.split)
20
+ assert(! args.errors?,
21
+ "No errors should have occurred")
22
+
23
+ end
24
+
25
+ end
@@ -0,0 +1,33 @@
1
+ require 'optiflag.rb'
2
+ require 'test/unit'
3
+
4
+ module BugTwoArgs extend OptiFlag::Flagset
5
+ flag "dir"
6
+ optional_flag "log"
7
+ optional_flag "verbose_level" do
8
+ value_in_set [1,2,3,4,0]
9
+ end
10
+ optional_switch_flag "force"
11
+ usage_flag "h"
12
+ end
13
+
14
+ class TC_BugTwo < Test::Unit::TestCase
15
+
16
+
17
+ def setup
18
+ # this thing is changing global state
19
+ cl = %w{ -dir c:/my_stuff -log c:/log -force -verbose_level 3 -h }
20
+ result = BugTwoArgs::parse(cl)
21
+ end
22
+
23
+ def test_a
24
+ cl = %w{ -dir c:/my_stuff }
25
+ result = BugTwoArgs::parse(cl)
26
+ assert(!result.help_requested?,"Help was not requested")
27
+ assert(!result.flag_value.log?)
28
+
29
+ assert(!result.flag_value.verbose_level?)
30
+ assert(!result.flag_value.force?)
31
+ end
32
+ end
33
+