The path attribute was being unnecessarily cached. The value is a LoadedFile
instance, which already knows how to check whether it needs to be reloaded. The
act of reparsing was being triggered separately from the cacher mechanism.

The comment indicated this value was only being cached so it could be easily
cleared for tests, but it wasn't being cleared for tests. Thus, there is no
reason for this attribute to be cached, so remove it.

Reviewed-By: Jacob Helwig <[email protected]>
---
 lib/puppet/util/settings.rb     |    9 +++------
 spec/unit/util/settings_spec.rb |   10 ----------
 2 files changed, 3 insertions(+), 16 deletions(-)

diff --git a/lib/puppet/util/settings.rb b/lib/puppet/util/settings.rb
index 4559e9a..caaf61b 100644
--- a/lib/puppet/util/settings.rb
+++ b/lib/puppet/util/settings.rb
@@ -2,13 +2,11 @@ require 'puppet'
 require 'sync'
 require 'getoptlong'
 require 'puppet/external/event-loop'
-require 'puppet/util/cacher'
 require 'puppet/util/loadedfile'
 
 # The class for handling configuration files.
 class Puppet::Util::Settings
   include Enumerable
-  include Puppet::Util::Cacher
 
   require 'puppet/util/settings/setting'
   require 'puppet/util/settings/file_setting'
@@ -401,11 +399,10 @@ class Puppet::Util::Settings
     }
   end
 
-  # Cache this in an easily clearable way, since we were
-  # having trouble cleaning it up after tests.
-  cached_attr(:file) do
+  def file
+    return @file if @file
     if path = self[:config] and FileTest.exist?(path)
-      Puppet::Util::LoadedFile.new(path)
+      @file = Puppet::Util::LoadedFile.new(path)
     end
   end
 
diff --git a/spec/unit/util/settings_spec.rb b/spec/unit/util/settings_spec.rb
index f7cb199..76f229c 100755
--- a/spec/unit/util/settings_spec.rb
+++ b/spec/unit/util/settings_spec.rb
@@ -606,16 +606,6 @@ describe Puppet::Util::Settings do
       @settings.reparse
     end
 
-    it "should use a cached LoadedFile instance" do
-      first = mock 'first'
-      second = mock 'second'
-      
Puppet::Util::LoadedFile.expects(:new).times(2).with("/test/file").returns(first).then.returns(second)
-
-      @settings.file.should equal(first)
-      Puppet::Util::Cacher.expire
-      @settings.file.should equal(second)
-    end
-
     it "should replace in-memory values with on-file values" do
       # Init the value
       text = "[main]\none = disk-init\n"
-- 
1.7.5.4

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Developers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/puppet-dev?hl=en.

Reply via email to