rclconf 1.0.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.
@@ -0,0 +1,161 @@
1
+ #!/usr/bin/env ruby
2
+ # RCLConfTest -- rclconf -- 19.01.2005 -- hwyss@ywesee.com, rwaltert@ywesee.com
3
+
4
+ $: << File.expand_path('../lib', File.dirname(__FILE__))
5
+
6
+ require 'test/unit'
7
+ require 'rclconf/rclconf'
8
+ require 'fileutils'
9
+
10
+ module RCLConf
11
+ class RCLConfTest < Test::Unit::TestCase
12
+ def setup
13
+ argv = [
14
+ 'foo=bar',
15
+ 'fx=baz',
16
+ 'override_default=override',
17
+ 'overfalse=false',
18
+ ]
19
+ defaults = {
20
+ "dir" => "home",
21
+ 'override_default' => 'original',
22
+ 'overfalse' => true,
23
+ 'nested' => {'foo' => 'F'}
24
+ }
25
+ @conf = RCLConf.new(argv, defaults)
26
+ @datadir = File.expand_path('data', File.dirname(__FILE__))
27
+ end
28
+ def teardown
29
+ FileUtils.rm_r(@datadir) if(File.exist?(@datadir))
30
+ end
31
+ def test_argv
32
+ assert_equal('bar', @conf.foo)
33
+ assert_equal('baz', @conf.fx)
34
+ end
35
+ def test_argv_overrides_defaults
36
+ assert_equal('override', @conf.override_default)
37
+ end
38
+ def test_argv__false__overrides_defaults
39
+ assert_equal(false, @conf.overfalse)
40
+ end
41
+ def test_argv_overrides_file
42
+ FileUtils.mkdir_p(@datadir)
43
+ filepath = File.join(@datadir, 'config.yaml')
44
+ file_data = {
45
+ 'foo' => 'baz'
46
+ }
47
+ File.open(filepath, 'w') { |fh|
48
+ YAML.dump(file_data, fh)
49
+ }
50
+ @conf.load(filepath)
51
+ assert_equal('bar', @conf.foo)
52
+ end
53
+ def test_file_overrides_defaults
54
+ FileUtils.mkdir_p(@datadir)
55
+ filepath = File.join(@datadir, 'config.yaml')
56
+ file_data = {
57
+ 'dir' => 'baz'
58
+ }
59
+ File.open(filepath, 'w') { |fh|
60
+ YAML.dump(file_data, fh)
61
+ }
62
+ @conf.load(filepath)
63
+ assert_equal('baz', @conf.dir)
64
+ end
65
+ def test_defaults
66
+ assert_equal('home', @conf.dir)
67
+ end
68
+ def test_load_mandatory__no_file__raises_error
69
+ assert_raises(Errno::ENOENT) {
70
+ @conf.load('/no/such/file.yaml')
71
+ }
72
+ end
73
+ def test_load_mandatory__file_found
74
+ FileUtils.mkdir_p(@datadir)
75
+ filepath = File.join(@datadir, 'config.yaml')
76
+ file_data = {
77
+ 'file_loaded' => 'success'
78
+ }
79
+ File.open(filepath, 'w') { |fh|
80
+ YAML.dump(file_data, fh)
81
+ }
82
+ assert_nothing_raised {
83
+ @conf.load(filepath)
84
+ }
85
+ assert_equal('success', @conf.file_loaded)
86
+ end
87
+ def test_load_optional__no_file__no_error
88
+ assert_nothing_raised {
89
+ @conf.load(['/no/such/file.yaml'])
90
+ }
91
+ assert_nothing_raised {
92
+ @conf.foo
93
+ }
94
+ end
95
+ def test_load_optional__file_precedence
96
+ FileUtils.mkdir_p(@datadir)
97
+ filepath = File.join(@datadir, 'config.yaml')
98
+ otherpath = File.join(@datadir, 'not_loaded.yaml')
99
+ file_data = {
100
+ 'file_loaded' => 'success',
101
+ }
102
+ other_data = {
103
+ 'file_loaded' => 'twice',
104
+ 'undefined' => 'defined!?'
105
+ }
106
+ File.open(filepath, 'w') { |fh|
107
+ YAML.dump(file_data, fh)
108
+ }
109
+ File.open(otherpath, 'w') { |fh|
110
+ YAML.dump(other_data, fh)
111
+ }
112
+ assert_nothing_raised {
113
+ @conf.load(['/no/such/file.yaml', filepath, otherpath])
114
+ }
115
+ assert_equal('success', @conf.file_loaded)
116
+ ## check that the second file was _not_ loaded
117
+ assert_raises(NoMethodError) { @conf.undefined }
118
+ end
119
+ def test_no_method_error
120
+ assert_raises(NoMethodError) { @conf.undefined_method }
121
+ end
122
+ def test_parse_argv
123
+ data = [
124
+ 'foo=bar',
125
+ 'fx=baz',
126
+ 'mux=zehn=mal=weiter',
127
+ ]
128
+ expected = {
129
+ 'foo' => 'bar',
130
+ 'fx' => 'baz',
131
+ 'mux' => 'zehn=mal=weiter',
132
+ }
133
+ assert_equal(expected, @conf.parse_argv(data))
134
+ end
135
+ def test_parse_argv__keywords
136
+ data = [
137
+ 'foo=false',
138
+ 'bar=nil',
139
+ 'baz=true',
140
+ ]
141
+ expected = {
142
+ 'foo' => false,
143
+ 'bar' => nil,
144
+ 'baz' => true,
145
+ }
146
+ assert_equal(expected, @conf.parse_argv(data))
147
+ end
148
+ def test_respond_to
149
+ assert_respond_to(@conf, :foo)
150
+ assert_respond_to(@conf, :fx)
151
+ assert_respond_to(@conf, :dir)
152
+ assert_respond_to(@conf, :nested)
153
+ assert_respond_to(@conf, :foo=)
154
+ assert_respond_to(@conf, :bar=)
155
+ end
156
+ def test_runtime_overrides_argv
157
+ @conf.override_default = 'runtime'
158
+ assert_equal('runtime', @conf.override_default)
159
+ end
160
+ end
161
+ end
metadata ADDED
@@ -0,0 +1,103 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rclconf
3
+ version: !ruby/object:Gem::Version
4
+ hash: 23
5
+ prerelease: false
6
+ segments:
7
+ - 1
8
+ - 0
9
+ - 0
10
+ version: 1.0.0
11
+ platform: ruby
12
+ authors:
13
+ - Masaomi Hatakeyama, Zeno R.R. Davatz
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2010-12-16 00:00:00 +01:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: hoe
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ hash: 47
30
+ segments:
31
+ - 2
32
+ - 8
33
+ - 0
34
+ version: 2.8.0
35
+ type: :development
36
+ version_requirements: *id001
37
+ description: |-
38
+ rclconf is a pure Ruby library which is available for the configurtion
39
+ of a Ruby application.
40
+
41
+ rclconf manages yaml type of configuration files and has useful functions
42
+ to utilize commandline options.
43
+ email:
44
+ - mhatakeyama@ywesee.com, zdavatz@ywesee.com
45
+ executables: []
46
+
47
+ extensions: []
48
+
49
+ extra_rdoc_files:
50
+ - History.txt
51
+ - LICENSE.txt
52
+ - Manifest.txt
53
+ - README.txt
54
+ files:
55
+ - History.txt
56
+ - InstalledFiles
57
+ - LICENSE.txt
58
+ - Manifest.txt
59
+ - README.txt
60
+ - Rakefile
61
+ - config.save
62
+ - lib/rclconf.rb
63
+ - lib/rclconf/rclconf.rb
64
+ - rclconf.gemspec
65
+ - setup.rb
66
+ - test/test_rclconf.rb
67
+ has_rdoc: true
68
+ homepage: http://scm.ywesee.com/?p=rclconf/.git;a=summary
69
+ licenses: []
70
+
71
+ post_install_message:
72
+ rdoc_options:
73
+ - --main
74
+ - README.txt
75
+ require_paths:
76
+ - lib
77
+ required_ruby_version: !ruby/object:Gem::Requirement
78
+ none: false
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ hash: 3
83
+ segments:
84
+ - 0
85
+ version: "0"
86
+ required_rubygems_version: !ruby/object:Gem::Requirement
87
+ none: false
88
+ requirements:
89
+ - - ">="
90
+ - !ruby/object:Gem::Version
91
+ hash: 3
92
+ segments:
93
+ - 0
94
+ version: "0"
95
+ requirements: []
96
+
97
+ rubyforge_project: rclconf
98
+ rubygems_version: 1.3.7
99
+ signing_key:
100
+ specification_version: 3
101
+ summary: rclconf is a pure Ruby library which is available for the configurtion of a Ruby application
102
+ test_files:
103
+ - test/test_rclconf.rb