rubikon 0.4.1 → 0.5.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.
- data/README.md +4 -3
- data/lib/core_ext/object.rb +2 -1
- data/lib/rubikon.rb +1 -1
- data/lib/rubikon/application/class_methods.rb +5 -1
- data/lib/rubikon/application/dsl_methods.rb +39 -15
- data/lib/rubikon/application/instance_methods.rb +75 -28
- data/lib/rubikon/application/sandbox.rb +5 -3
- data/lib/rubikon/colored_io.rb +105 -0
- data/lib/rubikon/command.rb +18 -8
- data/lib/rubikon/config/auto_provider.rb +39 -0
- data/lib/rubikon/config/factory.rb +65 -0
- data/lib/rubikon/config/ini_provider.rb +60 -0
- data/lib/rubikon/config/yaml_provider.rb +30 -0
- data/lib/rubikon/exceptions.rb +12 -0
- data/lib/rubikon/flag.rb +2 -0
- data/lib/rubikon/has_arguments.rb +2 -0
- data/lib/rubikon/parameter.rb +11 -8
- data/lib/rubikon/progress_bar.rb +12 -6
- data/lib/rubikon/throbber.rb +6 -6
- data/samples/config/config_sample.rb +39 -0
- data/samples/helloworld/hello_world.rb +8 -2
- data/test/test_application.rb +6 -6
- data/test/test_command.rb +13 -13
- data/test/test_config.rb +41 -0
- data/test/test_flag.rb +4 -4
- data/test/test_has_arguments.rb +24 -24
- data/test/test_ini_provider.rb +26 -0
- data/test/test_progress_bar.rb +18 -0
- metadata +15 -5
data/test/test_application.rb
CHANGED
@@ -43,8 +43,12 @@ class TestApplication < Test::Unit::TestCase
|
|
43
43
|
assert_instance_of SystemExit, e
|
44
44
|
assert_equal 1, e.status
|
45
45
|
end
|
46
|
-
@
|
47
|
-
|
46
|
+
if @app.instance.instance_eval { @settings[:colors] }
|
47
|
+
error_text = "\e[0;31mError:\e[0m\n"
|
48
|
+
else
|
49
|
+
error_text = "Error:\n"
|
50
|
+
end
|
51
|
+
assert_equal error_text, @ostream.gets
|
48
52
|
assert_equal " Unknown command: unknown\n", @ostream.gets
|
49
53
|
end
|
50
54
|
|
@@ -72,16 +76,12 @@ class TestApplication < Test::Unit::TestCase
|
|
72
76
|
@istream.puts input_string
|
73
77
|
@istream.rewind
|
74
78
|
assert_equal input_string, @app.run(%w{input})
|
75
|
-
@ostream.rewind
|
76
79
|
assert_equal 'input: ', @ostream.gets
|
77
80
|
end
|
78
81
|
|
79
82
|
should 'not break output while displaying a throbber or progress bar' do
|
80
83
|
@app.run(%w{throbber})
|
81
84
|
assert_match (/ \x08(?:(?:-|\\|\/|\|)\x08){4,}don't\nbreak\n/), @ostream.string
|
82
|
-
|
83
|
-
@ostream.rewind
|
84
|
-
|
85
85
|
@app.run(%w{progressbar})
|
86
86
|
assert_equal "#" * 20 << "\n" << "test\n" * 4, @ostream.string
|
87
87
|
end
|
data/test/test_command.rb
CHANGED
@@ -42,10 +42,10 @@ class TestCommand < Test::Unit::TestCase
|
|
42
42
|
should 'correctly parse given parameters' do
|
43
43
|
command = Command.new @app, :command, [:cmd_arg] do end
|
44
44
|
option = Option.new(@app, :test, [:opt_arg])
|
45
|
-
command.add_param option
|
45
|
+
command.send(:add_param, option)
|
46
46
|
flag = Flag.new(@app, :t)
|
47
|
-
command.add_param flag
|
48
|
-
command.run
|
47
|
+
command.send(:add_param, flag)
|
48
|
+
command.send(:run, *%w{--test arg -t test})
|
49
49
|
assert option.active?
|
50
50
|
assert flag.active?
|
51
51
|
assert_equal %w{test}, command.arguments
|
@@ -56,21 +56,21 @@ class TestCommand < Test::Unit::TestCase
|
|
56
56
|
assert_equal 'arg', command.test.opt_arg
|
57
57
|
|
58
58
|
assert_raise UnknownParameterError do
|
59
|
-
command.run
|
59
|
+
command.send(:run, *%w{--unknown})
|
60
60
|
end
|
61
61
|
end
|
62
62
|
|
63
63
|
should 'allow parameter aliases' do
|
64
64
|
command = Command.new @app, :command do end
|
65
|
-
command.add_param
|
65
|
+
command.send(:add_param, { :t => :test })
|
66
66
|
flag1 = Flag.new(@app, :test)
|
67
|
-
command.add_param flag1
|
67
|
+
command.send(:add_param, flag1)
|
68
68
|
flag2 = Flag.new(@app, :test2)
|
69
|
-
command.add_param flag2
|
70
|
-
command.add_param
|
71
|
-
command.run
|
72
|
-
assert flag1.active?
|
73
|
-
assert flag2.active?
|
69
|
+
command.send(:add_param, flag2)
|
70
|
+
command.send(:add_param, { :t2 => :test2 })
|
71
|
+
command.send(:run, *%w{-t --t2})
|
72
|
+
assert flag1.send(:active?)
|
73
|
+
assert flag2.send(:active?)
|
74
74
|
end
|
75
75
|
|
76
76
|
should 'run the code supplied inside its block' do
|
@@ -78,13 +78,13 @@ class TestCommand < Test::Unit::TestCase
|
|
78
78
|
command = Command.new @app, :command do
|
79
79
|
block_run = true
|
80
80
|
end
|
81
|
-
command.run
|
81
|
+
command.send :run
|
82
82
|
assert block_run
|
83
83
|
end
|
84
84
|
|
85
85
|
should 'run external code if no block is given' do
|
86
86
|
command = Command.new @app, :external_command
|
87
|
-
command.run
|
87
|
+
command.send :run
|
88
88
|
assert @app.sandbox.instance_variable_get(:@external_command_run)
|
89
89
|
end
|
90
90
|
|
data/test/test_config.rb
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
# This code is free software; you can redistribute it and/or modify it under
|
2
|
+
# the terms of the new BSD License.
|
3
|
+
#
|
4
|
+
# Copyright (c) 2009-2010, Sebastian Staudt
|
5
|
+
|
6
|
+
require 'test_helper'
|
7
|
+
|
8
|
+
class TestConfig < Test::Unit::TestCase
|
9
|
+
|
10
|
+
context 'A configuration' do
|
11
|
+
|
12
|
+
setup do
|
13
|
+
path = File.join(File.dirname(__FILE__), 'config')
|
14
|
+
@config_file = 'config.yml'
|
15
|
+
@search_paths = []
|
16
|
+
@search_paths << File.join(path, '0')
|
17
|
+
@search_paths << File.join(path, '1')
|
18
|
+
@search_paths << File.join(path, '2')
|
19
|
+
@search_paths << File.join(path, '3')
|
20
|
+
|
21
|
+
@factory = Rubikon::Config::Factory.new(@config_file, @search_paths)
|
22
|
+
end
|
23
|
+
|
24
|
+
should 'search multiple paths for a configuration file' do
|
25
|
+
config_files = @search_paths[0..-2].map { |p| File.join(p, @config_file) }
|
26
|
+
assert_equal config_files, @factory.files
|
27
|
+
end
|
28
|
+
|
29
|
+
should 'read the configuration from the specified files' do
|
30
|
+
config = {
|
31
|
+
:value => 0,
|
32
|
+
:value1 => 1,
|
33
|
+
:value2 => 2,
|
34
|
+
:overriden => 2
|
35
|
+
}
|
36
|
+
assert_equal config, @factory.config
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
data/test/test_flag.rb
CHANGED
@@ -21,7 +21,7 @@ class TestFlag < Test::Unit::TestCase
|
|
21
21
|
flag = Flag.new @app, :flag do
|
22
22
|
block_run = true
|
23
23
|
end
|
24
|
-
flag.active!
|
24
|
+
flag.send :active!
|
25
25
|
assert flag.active?
|
26
26
|
assert block_run
|
27
27
|
end
|
@@ -29,11 +29,11 @@ class TestFlag < Test::Unit::TestCase
|
|
29
29
|
should 'not allow any arguments' do
|
30
30
|
flag = Flag.new @app, :test
|
31
31
|
assert_raise ExtraArgumentError do
|
32
|
-
flag
|
32
|
+
flag.send(:<<, 'argument')
|
33
33
|
end
|
34
34
|
|
35
|
-
assert flag.args_full?
|
36
|
-
assert !flag.more_args?
|
35
|
+
assert flag.send(:args_full?)
|
36
|
+
assert !flag.send(:more_args?)
|
37
37
|
assert !flag.respond_to?(:args)
|
38
38
|
end
|
39
39
|
|
data/test/test_has_arguments.rb
CHANGED
@@ -22,71 +22,71 @@ class TestHasArguments < Test::Unit::TestCase
|
|
22
22
|
|
23
23
|
should 'allow a Numeric as argument count' do
|
24
24
|
has_arg = HasArg.new(1)
|
25
|
-
assert_equal 1..1, has_arg.arg_count
|
25
|
+
assert_equal 1..1, has_arg.send(:arg_count)
|
26
26
|
assert_nil has_arg.arg_names
|
27
27
|
end
|
28
28
|
|
29
29
|
should 'allow a Range as argument count' do
|
30
30
|
has_arg = HasArg.new(1..3)
|
31
|
-
assert_equal 1..3, has_arg.arg_count
|
31
|
+
assert_equal 1..3, has_arg.send(:arg_count)
|
32
32
|
assert_nil has_arg.arg_names
|
33
33
|
end
|
34
34
|
|
35
35
|
should 'allow an Array as argument count' do
|
36
36
|
has_arg = HasArg.new([2, 5, 6])
|
37
|
-
assert_equal 2..6, has_arg.arg_count
|
37
|
+
assert_equal 2..6, has_arg.send(:arg_count)
|
38
38
|
assert_nil has_arg.arg_names
|
39
39
|
end
|
40
40
|
|
41
41
|
should 'allow a Symbol Array as argument names' do
|
42
42
|
has_arg = HasArg.new([:arg1, :arg2, :arg3])
|
43
|
-
assert_equal 3..3, has_arg.arg_count
|
43
|
+
assert_equal 3..3, has_arg.send(:arg_count)
|
44
44
|
assert_equal [:arg1, :arg2, :arg3], has_arg.arg_names
|
45
45
|
end
|
46
46
|
|
47
47
|
should 'only have required arguments if argument count is > 0' do
|
48
48
|
has_arg = HasArg.new(2)
|
49
|
-
assert !has_arg.args_full?
|
50
|
-
assert has_arg.more_args?
|
51
|
-
has_arg
|
49
|
+
assert !has_arg.send(:args_full?)
|
50
|
+
assert has_arg.send(:more_args?)
|
51
|
+
has_arg.send(:<<, 'argument')
|
52
52
|
assert_equal %w{argument}, has_arg.args
|
53
53
|
assert_raise MissingArgumentError do
|
54
|
-
has_arg.check_args
|
54
|
+
has_arg.send :check_args
|
55
55
|
end
|
56
|
-
has_arg
|
57
|
-
assert has_arg.args_full?
|
58
|
-
assert !has_arg.more_args?
|
56
|
+
has_arg.send(:<<, 'argument')
|
57
|
+
assert has_arg.send(:args_full?)
|
58
|
+
assert !has_arg.send(:more_args?)
|
59
59
|
assert_equal %w{argument argument}, has_arg.args
|
60
60
|
assert_raise ExtraArgumentError do
|
61
|
-
has_arg
|
61
|
+
has_arg.send(:<<, 'argument')
|
62
62
|
end
|
63
63
|
assert_equal %w{argument argument}, has_arg.args
|
64
64
|
end
|
65
65
|
|
66
66
|
should 'have required and optional arguments if argument count is < 0' do
|
67
67
|
has_arg = HasArg.new(-1)
|
68
|
-
assert !has_arg.args_full?
|
69
|
-
assert has_arg.more_args?
|
68
|
+
assert !has_arg.send(:args_full?)
|
69
|
+
assert has_arg.send(:more_args?)
|
70
70
|
assert_raise MissingArgumentError do
|
71
|
-
has_arg.check_args
|
71
|
+
has_arg.send :check_args
|
72
72
|
end
|
73
|
-
has_arg
|
74
|
-
assert has_arg.args_full?
|
75
|
-
assert has_arg.more_args?
|
73
|
+
has_arg.send(:<<, 'argument')
|
74
|
+
assert has_arg.send(:args_full?)
|
75
|
+
assert has_arg.send(:more_args?)
|
76
76
|
assert_equal %w{argument}, has_arg.args
|
77
77
|
end
|
78
78
|
|
79
79
|
should 'only have optional arguments if argument count is 0' do
|
80
80
|
has_arg = HasArg.new(0)
|
81
|
-
assert has_arg.args_full?
|
82
|
-
assert has_arg.more_args?
|
83
|
-
has_arg
|
81
|
+
assert has_arg.send(:args_full?)
|
82
|
+
assert has_arg.send(:more_args?)
|
83
|
+
has_arg.send(:<<, 'argument')
|
84
84
|
assert_equal %w{argument}, has_arg.args
|
85
85
|
end
|
86
86
|
|
87
87
|
should 'provide named arguments' do
|
88
88
|
has_arg = HasArg.new([:named])
|
89
|
-
has_arg
|
89
|
+
has_arg.send(:<<, 'argument')
|
90
90
|
assert_equal 'argument', has_arg[:named]
|
91
91
|
assert_equal 'argument', has_arg.named
|
92
92
|
assert_raise NoMethodError do
|
@@ -99,8 +99,8 @@ class TestHasArguments < Test::Unit::TestCase
|
|
99
99
|
has_arg = HasArg.new nil do
|
100
100
|
block_run = true
|
101
101
|
end
|
102
|
-
has_arg.active!
|
103
|
-
assert has_arg.active?
|
102
|
+
has_arg.send :active!
|
103
|
+
assert has_arg.send(:active?)
|
104
104
|
assert block_run
|
105
105
|
end
|
106
106
|
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# This code is free software; you can redistribute it and/or modify it under
|
2
|
+
# the terms of the new BSD License.
|
3
|
+
#
|
4
|
+
# Copyright (c) 2010, Sebastian Staudt
|
5
|
+
|
6
|
+
require 'test_helper'
|
7
|
+
|
8
|
+
class TestIniProvider < Test::Unit::TestCase
|
9
|
+
|
10
|
+
context 'A configuration provider for INI files' do
|
11
|
+
|
12
|
+
should 'return correct values' do
|
13
|
+
ini = File.join(File.dirname(__FILE__), 'config', 'test.ini')
|
14
|
+
expected = {
|
15
|
+
'section' => {
|
16
|
+
'value' => '1',
|
17
|
+
'test1' => '1',
|
18
|
+
'test2' => '2'
|
19
|
+
}
|
20
|
+
}
|
21
|
+
assert_equal expected, Rubikon::Config::IniProvider.load_config(ini)
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
data/test/test_progress_bar.rb
CHANGED
@@ -100,6 +100,24 @@ class TestProgressBar < Test::Unit::TestCase
|
|
100
100
|
assert_equal 101, @bar.instance_variable_get(:@value)
|
101
101
|
end
|
102
102
|
|
103
|
+
should 'have brackets when enabled' do
|
104
|
+
ostream = StringIO.new
|
105
|
+
options = {
|
106
|
+
:brackets => true,
|
107
|
+
:bracket_filler => '-',
|
108
|
+
:ostream => ostream
|
109
|
+
}
|
110
|
+
|
111
|
+
@bar = ProgressBar.new options
|
112
|
+
assert_equal '[' + '-' * 20 + ']' + "\b" * 21, ostream.string
|
113
|
+
|
114
|
+
@bar + 50
|
115
|
+
assert_equal '[' + '-' * 20 + ']' + "\b" * 21 + '#' * 10, ostream.string
|
116
|
+
|
117
|
+
@bar + 50
|
118
|
+
assert_equal '[' + '-' * 20 + ']' + "\b" * 21 + '#' * 20 + "\n", ostream.string
|
119
|
+
end
|
120
|
+
|
103
121
|
end
|
104
122
|
|
105
123
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubikon
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 11
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 0.
|
8
|
+
- 5
|
9
|
+
- 0
|
10
|
+
version: 0.5.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Sebastian Staudt
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-
|
18
|
+
date: 2010-11-12 00:00:00 +01:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -82,7 +82,12 @@ files:
|
|
82
82
|
- lib/rubikon/application/dsl_methods.rb
|
83
83
|
- lib/rubikon/application/instance_methods.rb
|
84
84
|
- lib/rubikon/application/sandbox.rb
|
85
|
+
- lib/rubikon/colored_io.rb
|
85
86
|
- lib/rubikon/command.rb
|
87
|
+
- lib/rubikon/config/auto_provider.rb
|
88
|
+
- lib/rubikon/config/factory.rb
|
89
|
+
- lib/rubikon/config/ini_provider.rb
|
90
|
+
- lib/rubikon/config/yaml_provider.rb
|
86
91
|
- lib/rubikon/exceptions.rb
|
87
92
|
- lib/rubikon/flag.rb
|
88
93
|
- lib/rubikon/has_arguments.rb
|
@@ -90,13 +95,16 @@ files:
|
|
90
95
|
- lib/rubikon/parameter.rb
|
91
96
|
- lib/rubikon/progress_bar.rb
|
92
97
|
- lib/rubikon/throbber.rb
|
98
|
+
- samples/config/config_sample.rb
|
93
99
|
- samples/helloworld/hello_world.rb
|
94
100
|
- test/commands/external_command.rb
|
95
101
|
- test/test_application.rb
|
96
102
|
- test/test_command.rb
|
103
|
+
- test/test_config.rb
|
97
104
|
- test/test_flag.rb
|
98
105
|
- test/test_has_arguments.rb
|
99
106
|
- test/test_helper.rb
|
107
|
+
- test/test_ini_provider.rb
|
100
108
|
- test/test_option.rb
|
101
109
|
- test/test_parameter.rb
|
102
110
|
- test/test_progress_bar.rb
|
@@ -140,9 +148,11 @@ test_files:
|
|
140
148
|
- test/commands/external_command.rb
|
141
149
|
- test/test_application.rb
|
142
150
|
- test/test_command.rb
|
151
|
+
- test/test_config.rb
|
143
152
|
- test/test_flag.rb
|
144
153
|
- test/test_has_arguments.rb
|
145
154
|
- test/test_helper.rb
|
155
|
+
- test/test_ini_provider.rb
|
146
156
|
- test/test_option.rb
|
147
157
|
- test/test_parameter.rb
|
148
158
|
- test/test_progress_bar.rb
|