configurability 2.0.2 → 2.1.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: dcbf8e77d923a5ec95be628f03c79c1fa1e2b778
4
- data.tar.gz: 0c1a8adda3938b47948a4fe192ab30039b9b0a67
3
+ metadata.gz: ae00303104896fbdb4479b741a713cf98447ca1a
4
+ data.tar.gz: d7aaa1d875c3f4dd0e20e152ba76ba52e62be667
5
5
  SHA512:
6
- metadata.gz: 5194373054a7d8d4ef615f7fa0a24f65f01389efdda7315635d7a6759ff6b1fdf0381c96d25e8af59a66c0ee7bc4080da2f6860e2af51b8a00aac3b97d4a9316
7
- data.tar.gz: 6c1905c42901a5020190bb5f25d2e6eed93ee42995cc125e79f8c8c8381be6fd733bc99191500e441cf9b96bac60754e9093c68ac23a8e1693ae41639172a05f
6
+ metadata.gz: fd1b469747088b887326ec6c65996e3c5485606eb20ce62556e45b407ba50b26d964fdcc6893130a7e26ae1c5981e549cff58638b1b2edb7cc709fc149574ee6
7
+ data.tar.gz: 68d3cb5b755de3e19b5ff1d910cd8f7b8ba12856627484d7d9c90da6219db3ff928aabc4250231329afa1a93367b8bfa43f84b95257e2a1afe7b983367b824b8
checksums.yaml.gz.sig CHANGED
Binary file
data.tar.gz.sig CHANGED
Binary file
data/ChangeLog CHANGED
@@ -1,8 +1,49 @@
1
+ 2013-08-13 Michael Granger <ged@FaerieMUD.org>
2
+
3
+ * Rakefile, lib/configurability.rb,
4
+ spec/configurability/config_spec.rb, spec/configurability_spec.rb:
5
+ Fix behavior of inherited Configurability
6
+ [9a8961d68e99] [tip]
7
+
8
+ * lib/configurability/behavior.rb,
9
+ spec/configurability/config_spec.rb,
10
+ spec/configurability/deferredconfig_spec.rb,
11
+ spec/configurability_spec.rb, spec/helpers.rb, spec/lib/helpers.rb:
12
+ Convert specs to use expect syntax
13
+ [290c7286bd8b]
14
+
15
+ 2013-06-14 Mahlon E. Smith <mahlon@martini.nu>
16
+
17
+ * .hgtags:
18
+ Added tag v2.0.2 for changeset b8b7c6673cde
19
+ [842a42780d63]
20
+
21
+ * .hgsigs:
22
+ Added signature for changeset e53b53d65079
23
+ [b8b7c6673cde] [v2.0.2]
24
+
25
+ * History.rdoc, lib/configurability.rb:
26
+ Bump to version 2.0.2.
27
+ [e53b53d65079]
28
+
29
+ * lib/configurability/config.rb:
30
+ Explicit check for safe_yaml, load YAML with default security
31
+ settings if it is installed, and silence stderr warnings.
32
+ [e33909a2e0d1]
33
+
1
34
  2013-06-07 Mahlon E. Smith <mahlon@martini.nu>
2
35
 
36
+ * .hgtags:
37
+ Added tag v2.0.1 for changeset c25da00ba16e
38
+ [1aa2c0e1c744] [github/master]
39
+
40
+ * .hgsigs:
41
+ Added signature for changeset bbf0ba1d6deb
42
+ [c25da00ba16e] [v2.0.1]
43
+
3
44
  * History.rdoc, lib/configurability.rb:
4
45
  Bump version to v2.0.1.
5
- [bbf0ba1d6deb] [tip]
46
+ [bbf0ba1d6deb]
6
47
 
7
48
  * lib/configurability.rb:
8
49
  Inject support into Loggability directly, avoiding load order
@@ -188,6 +229,15 @@
188
229
  Merged with 29a1c3384b7f
189
230
  [afa3d24b4117]
190
231
 
232
+ 2012-02-06 Michael Granger <ged@FaerieMUD.org>
233
+
234
+ * lib/configurability.rb:
235
+ Make unknown config log message less chatty.
236
+
237
+ Thanks to Mahlon E. Smith for the gargantuan patch. "Ssssh baby.
238
+ It's cool. Don't say a word. There will also be corn served."
239
+ [29a1c3384b7f]
240
+
191
241
  2012-01-27 Michael Granger <ged@FaerieMUD.org>
192
242
 
193
243
  * .hgtags:
@@ -207,35 +257,6 @@
207
257
  Merged with ssh://hg@bitbucket.org/ged/configurability@86718657a466
208
258
  [d3f6f8d77060]
209
259
 
210
- 2011-11-01 Michael Granger <ged@FaerieMUD.org>
211
-
212
- * .hgtags:
213
- Added tag v1.0.8 for changeset 5b3d66af5a59
214
- [86718657a466]
215
-
216
- * .hgsigs:
217
- Added signature for changeset 97a03db6f41c
218
- [5b3d66af5a59] [v1.0.8]
219
-
220
- * History.rdoc, lib/configurability.rb:
221
- Bumped patch version and updated the History file.
222
- [97a03db6f41c]
223
-
224
- * spec/configurability/config_spec.rb:
225
- Fix for Ruby 1.9.3.
226
- [a26cd541ea8f]
227
-
228
- 2012-02-06 Michael Granger <ged@FaerieMUD.org>
229
-
230
- * lib/configurability.rb:
231
- Make unknown config log message less chatty.
232
-
233
- Thanks to Mahlon E. Smith for the gargantuan patch. "Ssssh baby.
234
- It's cool. Don't say a word. There will also be corn served."
235
- [29a1c3384b7f]
236
-
237
- 2012-01-27 Michael Granger <ged@FaerieMUD.org>
238
-
239
260
  * .hgtags:
240
261
  Added tag v1.0.8 for changeset 6a7852aa7398
241
262
  [5e85b9cb1122]
@@ -260,6 +281,24 @@
260
281
  Adding TextMate properties
261
282
  [45b92add3e1e]
262
283
 
284
+ 2011-11-01 Michael Granger <ged@FaerieMUD.org>
285
+
286
+ * .hgtags:
287
+ Added tag v1.0.8 for changeset 5b3d66af5a59
288
+ [86718657a466]
289
+
290
+ * .hgsigs:
291
+ Added signature for changeset 97a03db6f41c
292
+ [5b3d66af5a59] [v1.0.8]
293
+
294
+ * History.rdoc, lib/configurability.rb:
295
+ Bumped patch version and updated the History file.
296
+ [97a03db6f41c]
297
+
298
+ * spec/configurability/config_spec.rb:
299
+ Fix for Ruby 1.9.3.
300
+ [a26cd541ea8f]
301
+
263
302
  2011-10-13 Michael Granger <ged@FaerieMUD.org>
264
303
 
265
304
  * .hgtags:
@@ -344,24 +383,6 @@
344
383
  Removed tag v1.0.4
345
384
  [1ef1012b278c]
346
385
 
347
- * .hgtags:
348
- Added tag v1.0.4 for changeset 84718f122b7b
349
- [99d382b750f6]
350
-
351
- * .hgsigs:
352
- Added signature for changeset eef299ea1d29
353
- [84718f122b7b]
354
-
355
- * lib/configurability.rb, lib/configurability/config.rb,
356
- spec/configurability/config_spec.rb:
357
- Fix for config files with nil keys (fixes #1)
358
- [eef299ea1d29]
359
-
360
- * .hgsub, .hgsubstate, .hgsubstate, History.md, LICENSE, Manifest.txt,
361
- README.md, Rakefile, project.yml:
362
- Converted to Hoe.
363
- [fb024df77138]
364
-
365
386
  2010-11-29 Michael Granger <ged@FaerieMUD.org>
366
387
 
367
388
  * .hgsub:
@@ -384,6 +405,28 @@
384
405
  Adding Github mirror to the README
385
406
  [bb8f2829eb37]
386
407
 
408
+ 2011-02-08 Michael Granger <ged@FaerieMUD.org>
409
+
410
+ * .hgtags:
411
+ Added tag v1.0.4 for changeset 84718f122b7b
412
+ [99d382b750f6]
413
+
414
+ * .hgsigs:
415
+ Added signature for changeset eef299ea1d29
416
+ [84718f122b7b]
417
+
418
+ * lib/configurability.rb, lib/configurability/config.rb,
419
+ spec/configurability/config_spec.rb:
420
+ Fix for config files with nil keys (fixes #1)
421
+ [eef299ea1d29]
422
+
423
+ * .hgsub, .hgsubstate, .hgsubstate, History.md, LICENSE, Manifest.txt,
424
+ README.md, Rakefile, project.yml:
425
+ Converted to Hoe.
426
+ [fb024df77138]
427
+
428
+ 2010-11-29 Michael Granger <ged@FaerieMUD.org>
429
+
387
430
  * .hgtags:
388
431
  Added tag v1.0.3 for changeset 910ae8ac082f
389
432
  [a2ae16f86c98]
@@ -425,6 +468,16 @@
425
468
  * Merged with 17:e2bf2e43bccf
426
469
  [17a6999c08b9]
427
470
 
471
+ 2010-08-08 Michael Granger <ged@FaerieMUD.org>
472
+
473
+ * .hgtags:
474
+ Added tag 1.0.1 for changeset e3605ccbe057
475
+ [4bff6d5f7b6e]
476
+
477
+ * .hgsigs:
478
+ Added signature for changeset 41bc1de0bf36
479
+ [e3605ccbe057] [1.0.1]
480
+
428
481
  2010-10-25 Michael Granger <ged@FaerieMUD.org>
429
482
 
430
483
  * lib/configurability/behavior.rb:
@@ -437,16 +490,6 @@
437
490
  Converted tests to RSpec 2.
438
491
  [5d18e28e387b]
439
492
 
440
- 2010-08-08 Michael Granger <ged@FaerieMUD.org>
441
-
442
- * .hgtags:
443
- Added tag 1.0.1 for changeset e3605ccbe057
444
- [4bff6d5f7b6e]
445
-
446
- * .hgsigs:
447
- Added signature for changeset 41bc1de0bf36
448
- [e3605ccbe057] [1.0.1]
449
-
450
493
  2010-08-04 Michael Granger <ged@FaerieMUD.org>
451
494
 
452
495
  * .hgignore, README.md, lib/configurability/config.rb,
data/History.rdoc CHANGED
@@ -1,3 +1,14 @@
1
+ == v2.1.0 [2013-08-13] Michael Granger <ged@FaerieMUD.org>
2
+
3
+ - Fix behavior of inherited Configurability
4
+ - Convert specs to use RSpec expect syntax
5
+ - Drop support for Ruby 1.8.7.
6
+
7
+
8
+ == v2.0.2 [2013-06-14] Mahlon E. Smith <mahlon@martini.nu>
9
+
10
+ - Added signature for changeset e53b53d65079
11
+
1
12
  == v2.0.2 [2013-06-14] Mahlon E. Smith <mahlon@martini.nu>
2
13
 
3
14
  - Load YAML safely if the safe_yaml gem is present.
data/Manifest.txt CHANGED
@@ -14,4 +14,4 @@ lib/configurability/deferredconfig.rb
14
14
  spec/configurability/config_spec.rb
15
15
  spec/configurability/deferredconfig_spec.rb
16
16
  spec/configurability_spec.rb
17
- spec/lib/helpers.rb
17
+ spec/helpers.rb
data/README.rdoc CHANGED
@@ -263,7 +263,7 @@ and generate the API documentation.
263
263
 
264
264
  == License
265
265
 
266
- Copyright (c) 2010, 2011 Michael Granger
266
+ Copyright (c) 2010-2013 Michael Granger
267
267
  All rights reserved.
268
268
 
269
269
  Redistribution and use in source and binary forms, with or without
data/Rakefile CHANGED
@@ -24,12 +24,12 @@ hoespec = Hoe.spec 'configurability' do
24
24
 
25
25
  self.dependency 'loggability', '~> 0.4'
26
26
 
27
- self.dependency 'rspec', '~> 2.4', :developer
28
- self.dependency 'simplecov', '~> 0.3', :developer
27
+ self.dependency 'rspec', '~> 2.14', :developer
28
+ self.dependency 'simplecov', '~> 0.5', :developer
29
29
 
30
30
  self.spec_extras[:licenses] = ["BSD"]
31
31
  self.spec_extras[:rdoc_options] = ['-f', 'fivefish', '-t', 'Configurability Toolkit']
32
- self.require_ruby_version( '>= 1.8.7' )
32
+ self.require_ruby_version( '>= 1.9.2' )
33
33
 
34
34
  self.hg_sign_tags = true if self.respond_to?( :hg_sign_tags= )
35
35
  self.rdoc_locations << "deveiate:/usr/local/www/public/code/#{remote_rdoc_dir}"
@@ -18,10 +18,10 @@ module Configurability
18
18
 
19
19
 
20
20
  # Library version constant
21
- VERSION = '2.0.2'
21
+ VERSION = '2.1.0'
22
22
 
23
23
  # Version-control revision constant
24
- REVISION = %q$Revision: e53b53d65079 $
24
+ REVISION = %q$Revision: d27195f9c3df $
25
25
 
26
26
  require 'configurability/deferredconfig'
27
27
 
@@ -99,10 +99,10 @@ module Configurability
99
99
  end
100
100
 
101
101
 
102
- ### Configure objects that have had Configurability added to them with
103
- ### the sections of the specified +config+ that correspond to their
102
+ ### Configure objects that have had Configurability added to them with
103
+ ### the sections of the specified +config+ that correspond to their
104
104
  ### +config_key+. If the +config+ doesn't #respond_to the object's
105
- ### +config_key+, the object's #configure method is called with +nil+
105
+ ### +config_key+, the object's #configure method is called with +nil+
106
106
  ### instead.
107
107
  def self::configure_objects( config )
108
108
  self.log.debug "Splitting up config %p between %d objects with configurability." %
@@ -170,13 +170,13 @@ module Configurability
170
170
  def self::gather_defaults( collection={} )
171
171
  self.configurable_objects.each do |obj|
172
172
  next unless obj.respond_to?( :defaults )
173
- unless subhash = obj.defaults
173
+ if subhash = obj.defaults
174
+ section = obj.config_key.to_sym
175
+ Configurability.log.debug "Defaults for %p (%p): %p" % [ obj, section, subhash ]
176
+ collection.merge!( section => subhash )
177
+ else
174
178
  Configurability.log.warn "No defaults for %p; skipping" % [ obj ]
175
- next
176
179
  end
177
- section = obj.config_key.to_sym
178
-
179
- collection.merge!( section => subhash )
180
180
  end
181
181
 
182
182
  return collection
@@ -199,7 +199,7 @@ module Configurability
199
199
 
200
200
  ### Get (and optionally set) the +config_key+ (a Symbol).
201
201
  def config_key( sym=nil )
202
- @config_key = sym unless sym.nil?
202
+ self.config_key = sym unless sym.nil?
203
203
  @config_key ||= Configurability.make_key_from_object( self )
204
204
  @config_key
205
205
  end
@@ -207,6 +207,7 @@ module Configurability
207
207
 
208
208
  ### Set the config key of the object.
209
209
  def config_key=( sym )
210
+ Configurability.configurable_objects |= [ self ]
210
211
  @config_key = sym
211
212
  end
212
213
 
@@ -230,12 +231,12 @@ module Configurability
230
231
  return nil unless respond_to?( :const_defined? )
231
232
 
232
233
  Configurability.log.debug "Looking for defaults in %p's constants." % [ self ]
233
- if self.const_defined?( :DEFAULT_CONFIG )
234
+ if self.const_defined?( :DEFAULT_CONFIG, false )
234
235
  Configurability.log.debug " found DEFAULT_CONFIG"
235
- return self.const_get( :DEFAULT_CONFIG ).dup
236
- elsif self.const_defined?( :CONFIG_DEFAULTS )
236
+ return self.const_get( :DEFAULT_CONFIG, false ).dup
237
+ elsif self.const_defined?( :CONFIG_DEFAULTS, false )
237
238
  Configurability.log.debug " found CONFIG_DEFAULTS"
238
- return self.const_get( :CONFIG_DEFAULTS ).dup
239
+ return self.const_get( :CONFIG_DEFAULTS, false ).dup
239
240
  else
240
241
  Configurability.log.debug " no default constants."
241
242
  return nil
@@ -5,21 +5,16 @@ require 'rspec'
5
5
 
6
6
  share_examples_for "an object with Configurability" do
7
7
 
8
- let( :config ) do
9
- described_class
10
- end
11
-
12
-
13
8
  it "is extended with Configurability" do
14
- Configurability.configurable_objects.should include( self.config )
9
+ expect( Configurability.configurable_objects ).to include( described_class )
15
10
  end
16
11
 
17
12
  it "has a Symbol config key" do
18
- self.config.config_key.should be_a( Symbol )
13
+ expect( described_class.config_key ).to be_a( Symbol )
19
14
  end
20
15
 
21
16
  it "has a config key that is a reasonable section name" do
22
- self.config.config_key.to_s.should =~ /^[a-z][a-z0-9]*$/i
17
+ expect( described_class.config_key.to_s ).to match( /^[a-z][a-z0-9]*$/i )
23
18
  end
24
19
 
25
20
  end
@@ -39,7 +39,7 @@ class Configurability::Config
39
39
  Loggability
40
40
 
41
41
 
42
- # Loggability API -- set up logging through the Configurability module's logger
42
+ # Loggability API -- set up logging through the Configurability module's logger
43
43
  log_to :configurability
44
44
 
45
45
 
@@ -1,21 +1,11 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- BEGIN {
4
- require 'pathname'
5
- basedir = Pathname.new( __FILE__ ).dirname.parent.parent
6
-
7
- libdir = basedir + "lib"
8
-
9
- $LOAD_PATH.unshift( basedir ) unless $LOAD_PATH.include?( basedir )
10
- $LOAD_PATH.unshift( libdir ) unless $LOAD_PATH.include?( libdir )
11
- }
3
+ require 'helpers'
12
4
 
13
5
  require 'logger'
14
6
  require 'fileutils'
15
7
  require 'rspec'
16
8
 
17
- require 'spec/lib/helpers'
18
-
19
9
  require 'configurability/config'
20
10
 
21
11
 
@@ -56,11 +46,11 @@ describe Configurability::Config do
56
46
  end
57
47
 
58
48
  it "can dump itself as YAML" do
59
- Configurability::Config.new.dump.strip.should == "--- {}"
49
+ expect( Configurability::Config.new.dump.strip ).to eq( "--- {}" )
60
50
  end
61
51
 
62
52
  it "returns nil as its change description" do
63
- Configurability::Config.new.changed_reason.should be_nil()
53
+ expect( Configurability::Config.new.changed_reason ).to be_nil()
64
54
  end
65
55
 
66
56
  it "autogenerates accessors for non-existant struct members" do
@@ -68,18 +58,21 @@ describe Configurability::Config do
68
58
  config.plugins ||= {}
69
59
  config.plugins.filestore ||= {}
70
60
  config.plugins.filestore.maxsize = 1024
71
- config.plugins.filestore.maxsize.should == 1024
61
+
62
+ expect( config.plugins.filestore.maxsize ).to eq( 1024 )
72
63
  end
73
64
 
74
65
  it "merges values loaded from the config with any defaults given" do
75
66
  config = Configurability::Config.new( TEST_CONFIG, :defaultkey => "Oh yeah." )
76
- config.defaultkey.should == "Oh yeah."
67
+
68
+ expect( config.defaultkey ).to eq( "Oh yeah." )
77
69
  end
78
70
 
79
71
  it "yields itself if a block is given at creation" do
80
72
  yielded_self = nil
81
73
  config = Configurability::Config.new { yielded_self = self }
82
- yielded_self.should equal( config )
74
+
75
+ expect( yielded_self ).to equal( config )
83
76
  end
84
77
 
85
78
  it "passes itself as the block argument if a block of arity 1 is given at creation" do
@@ -89,23 +82,26 @@ describe Configurability::Config do
89
82
  yielded_self = self
90
83
  arg_self = arg
91
84
  end
92
- yielded_self.should_not equal( config )
93
- arg_self.should equal( config )
85
+
86
+ expect( yielded_self ).not_to equal( config )
87
+ expect( arg_self ).to equal( config )
94
88
  end
95
89
 
96
90
  it "supports both Symbols and Strings for Hash-like access" do
97
91
  config = Configurability::Config.new( TEST_CONFIG )
98
- config[:section]['subsection'][:subsubsection].should == 'value'
92
+
93
+ expect( config[:section]['subsection'][:subsubsection] ).to eq( 'value' )
99
94
  end
100
95
 
101
96
  it "autoloads predicates for its members" do
102
97
  config = Configurability::Config.new( TEST_CONFIG )
103
- config.mergekey?.should be_true()
104
- config.mergemonkey?.should be_false()
105
- config.section?.should be_true()
106
- config.section.subsection?.should be_true()
107
- config.section.subsection.subsubsection?.should be_true()
108
- config.section.monkeysubsection?.should be_false()
98
+
99
+ expect( config.mergekey? ).to be_true()
100
+ expect( config.mergemonkey? ).to be_false()
101
+ expect( config.section? ).to be_true()
102
+ expect( config.section.subsection? ).to be_true()
103
+ expect( config.section.subsection.subsubsection? ).to be_true()
104
+ expect( config.section.monkeysubsection? ).to be_false()
109
105
  end
110
106
 
111
107
 
@@ -122,17 +118,16 @@ describe Configurability::Config do
122
118
  - pattern2
123
119
  }.gsub(/^\t{2}/, '')
124
120
 
125
- before( :each ) do
126
- @config = Configurability::Config.new( NIL_KEY_CONFIG )
127
- end
121
+ let( :config ) { Configurability::Config.new(NIL_KEY_CONFIG) }
128
122
 
129
123
  it "doesn't raise a NoMethodError when loading (issue #1)" do
130
- @config[:trap_on]['low disk space alert'][nil][:notepad][:patterns].
131
- should == [ 'pattern1', 'pattern2' ]
124
+ val = config[:trap_on]['low disk space alert'][nil][:notepad][:patterns]
125
+ expect( val ).to eq([ 'pattern1', 'pattern2' ])
132
126
  end
133
127
 
134
128
  it "knows that it has a nil member" do
135
- @config[:trap_on]['low disk space alert'].should have_member( nil )
129
+ val = config[:trap_on]['low disk space alert']
130
+ expect( val ).to have_member( nil )
136
131
  end
137
132
 
138
133
  end
@@ -140,69 +135,67 @@ describe Configurability::Config do
140
135
 
141
136
  context "created with in-memory YAML source" do
142
137
 
143
- before( :each ) do
144
- @config = Configurability::Config.new( TEST_CONFIG )
145
- end
138
+ let( :config ) { Configurability::Config.new(TEST_CONFIG) }
146
139
 
147
140
  it "responds to methods which are the same as struct members" do
148
- @config.should respond_to( :section )
149
- @config.section.should respond_to( :subsection )
150
- @config.should_not respond_to( :pork_sausage )
141
+ expect( config ).to respond_to( :section )
142
+ expect( config.section ).to respond_to( :subsection )
143
+ expect( config ).not_to respond_to( :pork_sausage )
151
144
  end
152
145
 
153
146
  it "contains values specified in the source" do
154
147
  # section:
155
148
  # subsection:
156
149
  # subsubsection: value
157
- @config.section.subsection.subsubsection.should == 'value'
150
+ expect( config.section.subsection.subsubsection ).to eq( 'value' )
158
151
 
159
152
  # listsection:
160
153
  # - list
161
154
  # - values
162
155
  # - are
163
156
  # - neat
164
- @config.listsection.should == %w[list values are neat]
157
+ expect( config.listsection ).to eq( %w[list values are neat] )
165
158
 
166
159
  # mergekey: Yep.
167
- @config.mergekey.should == 'Yep.'
160
+ expect( config.mergekey ).to eq( 'Yep.' )
168
161
 
169
162
  # textsection: |-
170
163
  # With some text as the value
171
164
  # ...and another line.
172
- @config.textsection.should == "With some text as the value\n...and another line."
165
+ expect( config.textsection ).to eq("With some text as the value\n...and another line.")
173
166
  end
174
167
 
175
168
  it "returns struct members as an Array of Symbols" do
176
- @config.members.should be_an_instance_of( Array )
177
- @config.members.should have_at_least( 4 ).things
178
- @config.members.each do |member|
179
- member.should be_an_instance_of( Symbol)
169
+ expect( config.members ).to be_an_instance_of( Array )
170
+ expect( config.members ).to have_at_least( 4 ).things
171
+ config.members.each do |member|
172
+ expect( member ).to be_an_instance_of( Symbol )
180
173
  end
181
174
  end
182
175
 
183
176
  it "is able to iterate over sections" do
184
- @config.each do |key, struct|
185
- key.should be_an_instance_of( Symbol)
177
+ config.each do |key, struct|
178
+ expect( key ).to be_an_instance_of( Symbol )
186
179
  end
187
180
  end
188
181
 
189
182
  it "dumps values specified in the source" do
190
- @config.dump.should =~ /^section:/
191
- @config.dump.should =~ /^\s+subsection:/
192
- @config.dump.should =~ /^\s+subsubsection:/
193
- @config.dump.should =~ /^- list/
183
+ expect( config.dump ).to match( /^section:/ )
184
+ expect( config.dump ).to match( /^\s+subsection:/ )
185
+ expect( config.dump ).to match( /^\s+subsubsection:/ )
186
+ expect( config.dump ).to match( /^- list/ )
194
187
  end
195
188
 
196
189
  it "provides a human-readable description of itself when inspected" do
197
- @config.inspect.should =~ /4 sections/i
198
- @config.inspect.should =~ /mergekey/
199
- @config.inspect.should =~ /textsection/
200
- @config.inspect.should =~ /from memory/i
190
+ expect( config.inspect ).to match( /4 sections/i )
191
+ expect( config.inspect ).to match( /mergekey/ )
192
+ expect( config.inspect ).to match( /textsection/ )
193
+ expect( config.inspect ).to match( /from memory/i )
201
194
  end
202
195
 
203
196
  it "raises an exception when reloaded" do
204
197
  expect {
205
- @config.reload
198
+ config.reload
206
199
  }.to raise_exception( RuntimeError, /can't reload from an in-memory source/i )
207
200
  end
208
201
 
@@ -211,19 +204,19 @@ describe Configurability::Config do
211
204
 
212
205
  # saving if changed since loaded
213
206
  context " whose internal values have been changed since loaded" do
214
- before( :each ) do
215
- @config = Configurability::Config.new( TEST_CONFIG )
216
- @config.section.subsection.anothersection = 11451
207
+ let( :config ) do
208
+ config = Configurability::Config.new( TEST_CONFIG )
209
+ config.section.subsection.anothersection = 11451
210
+ config
217
211
  end
218
212
 
219
213
 
220
- ### Specifications
221
214
  it "should report that it is changed" do
222
- @config.changed?.should == true
215
+ expect( config.changed? ).to be_true()
223
216
  end
224
217
 
225
218
  it "should report that its internal struct was modified as the reason for the change" do
226
- @config.changed_reason.should =~ /struct was modified/i
219
+ expect( config.changed_reason ).to match( /struct was modified/i )
227
220
  end
228
221
 
229
222
  end
@@ -241,35 +234,35 @@ describe Configurability::Config do
241
234
  @tmpfile.unlink
242
235
  end
243
236
 
244
- before( :each ) do
245
- @config = Configurability::Config.load( @tmpfile.to_s )
246
- end
237
+ let( :config ) { Configurability::Config.load(@tmpfile.to_s) }
247
238
 
248
239
 
249
240
  ### Specifications
250
241
  it "remembers which file it was loaded from" do
251
- @config.path.should == @tmpfile.expand_path
242
+ expect( config.path ).to eq( @tmpfile.expand_path )
252
243
  end
253
244
 
254
245
  it "writes itself back to the same file by default" do
255
- @config.port = 114411
256
- @config.write
246
+ config.port = 114411
247
+ config.write
257
248
  otherconfig = Configurability::Config.load( @tmpfile.to_s )
258
249
 
259
- otherconfig.port.should == 114411
250
+ expect( otherconfig.port ).to eq( 114411 )
260
251
  end
261
252
 
262
253
  it "can be written to a different file" do
254
+ begin
263
255
  path = Dir::Tmpname.make_tmpname( './another-', '.config' )
264
256
 
265
- @config.write( path )
266
- File.read( path ).should =~ /section:\n subsection/
267
-
268
- File.unlink( path )
257
+ config.write( path )
258
+ expect( File.read(path) ).to match( /section: ?\n subsection/ )
259
+ ensure
260
+ File.unlink( path ) if path
261
+ end
269
262
  end
270
263
 
271
264
  it "includes the name of the file in its inspect output" do
272
- @config.inspect.should include( File.basename(@tmpfile.to_s) )
265
+ expect( config.inspect ).to include( File.basename(@tmpfile.to_s) )
273
266
  end
274
267
 
275
268
  it "yields itself if a block is given at load-time" do
@@ -277,7 +270,7 @@ describe Configurability::Config do
277
270
  config = Configurability::Config.load( @tmpfile.to_s ) do
278
271
  yielded_self = self
279
272
  end
280
- yielded_self.should equal( config )
273
+ expect( yielded_self ).to equal( config )
281
274
  end
282
275
 
283
276
  it "passes itself as the block argument if a block of arity 1 is given at load-time" do
@@ -287,14 +280,15 @@ describe Configurability::Config do
287
280
  yielded_self = self
288
281
  arg_self = arg
289
282
  end
290
- yielded_self.should_not equal( config )
291
- arg_self.should equal( config )
283
+
284
+ expect( yielded_self ).not_to equal( config )
285
+ expect( arg_self ).to equal( config )
292
286
  end
293
287
 
294
288
  it "doesn't re-read its source file if it hasn't changed" do
295
- @config.path.should_not_receive( :read )
296
- Configurability.should_not_receive( :configure_objects )
297
- @config.reload.should be_false()
289
+ expect( config.path ).not_to receive( :read )
290
+ expect( Configurability ).not_to receive( :configure_objects )
291
+ expect( config.reload ).to be_false()
298
292
  end
299
293
  end
300
294
 
@@ -323,39 +317,38 @@ describe Configurability::Config do
323
317
 
324
318
  ### Specifications
325
319
  it "reports that it is changed" do
326
- @config.should be_changed
320
+ expect( @config ).to be_changed
327
321
  end
328
322
 
329
323
  it "reports that its source was updated as the reason for the change" do
330
- @config.changed_reason.should =~ /source.*updated/i
324
+ expect( @config.changed_reason ).to match( /source.*updated/i )
331
325
  end
332
326
 
333
327
  it "re-reads its file when reloaded" do
334
- @config.path.should_receive( :read ).and_return( TEST_CONFIG )
335
- Configurability.should_receive( :configure_objects ).with( @config )
336
- @config.reload.should be_true()
328
+ expect( @config.path ).to receive( :read ).and_return( TEST_CONFIG )
329
+ expect( Configurability ).to receive( :configure_objects ).with( @config )
330
+ expect( @config.reload ).to be_true()
337
331
  end
338
332
 
339
333
  it "reapplies its defaults when reloading" do
340
- config = Configurability::Config.load( @tmpfile.to_s, :defaultskey => 8 )
341
- config.reload
342
- config.defaultskey.should == 8
334
+ @config = Configurability::Config.load( @tmpfile.to_s, :defaultskey => 8 )
335
+ @config.reload
336
+
337
+ expect( @config.defaultskey ).to eq( 8 )
343
338
  end
344
339
  end
345
340
 
346
341
 
347
342
  # merging
348
343
  context " created by merging two other configs" do
349
- before( :each ) do
350
- @config1 = Configurability::Config.new
351
- @config2 = Configurability::Config.new( TEST_CONFIG )
352
- @merged = @config1.merge( @config2 )
353
- end
344
+ let( :config1 ) { Configurability::Config.new }
345
+ let( :config2 ) { Configurability::Config.new(TEST_CONFIG) }
346
+ let( :merged ) { config1.merge(config2) }
354
347
 
355
348
 
356
349
  ### Specifications
357
350
  it "should contain values from both" do
358
- @merged.mergekey.should == @config2.mergekey
351
+ expect( merged.mergekey ).to eq( config2.mergekey )
359
352
  end
360
353
  end
361
354