[Pkg-puppet-devel] [SCM] Puppet packaging for Debian branch, upstream, updated. 0.25.5-639-g8f94f35

test branch puppet-dev at googlegroups.com
Wed Jul 14 10:34:55 UTC 2010


The following commit has been merged in the upstream branch:
commit 2a73b5d194a5237722840844588a03addedf2d4c
Author: Jesse Wolfe <jes5199 at gmail.com>
Date:   Sat May 22 17:58:44 2010 -0700

    [#3674] Part 2: Autoloader load method should propagate failures
    
    Change Autoloader's load to re-raise exceptions that happen when
    trying to load files, rather than just warning.
    
    This version still does not raise an error if the file is not found, as
    doing so would change the behavior of 'load' pretty significantly, but I
    am ambivalent this.

diff --git a/lib/puppet/util/autoload.rb b/lib/puppet/util/autoload.rb
index 006554d..a1c44cd 100644
--- a/lib/puppet/util/autoload.rb
+++ b/lib/puppet/util/autoload.rb
@@ -74,8 +74,6 @@ class Puppet::Util::Autoload
     # Load a single plugin by name.  We use 'load' here so we can reload a
     # given plugin.
     def load(name,env=nil)
-        return false if named_file_missing?(name)
-
         path = name.to_s + ".rb"
 
         searchpath(env).each do |dir|
@@ -90,11 +88,10 @@ class Puppet::Util::Autoload
                 raise
             rescue Exception => detail
                 puts detail.backtrace if Puppet[:trace]
-                warn "Could not autoload #{name}: #{detail}"
-                return named_file_is_missing(name)
+                raise Puppet::Error, "Could not autoload #{name}: #{detail}"
             end
         end
-        return named_file_is_missing(name)
+        false
     end
 
     # Mark the named object as loaded.  Note that this supports unqualified
diff --git a/lib/puppet/util/autoload/file_cache.rb b/lib/puppet/util/autoload/file_cache.rb
index 4ad0c7f..881e086 100644
--- a/lib/puppet/util/autoload/file_cache.rb
+++ b/lib/puppet/util/autoload/file_cache.rb
@@ -73,20 +73,6 @@ module Puppet::Util::Autoload::FileCache
         missing_files[path] = Time.now
     end
 
-    def named_file_missing?(name)
-        @named_files ||= {}
-        if time = @named_files[name] and ! data_expired?(time)
-            return true
-        end
-        false
-    end
-
-    def named_file_is_missing(name)
-        @named_files ||= {}
-        @named_files[name] = Time.now
-        false
-    end
-
     private
 
     def cached_data?(path, type = nil)
diff --git a/spec/unit/util/autoload.rb b/spec/unit/util/autoload.rb
index 1b88662..0f73a73 100755
--- a/spec/unit/util/autoload.rb
+++ b/spec/unit/util/autoload.rb
@@ -72,26 +72,17 @@ describe Puppet::Util::Autoload do
         end
 
         [RuntimeError, LoadError, SyntaxError].each do |error|
-            it "should not die an if a #{error.to_s} exception is thrown" do
+            it "should die with Puppet::Error if a #{error.to_s} exception is thrown" do
                 @autoload.stubs(:file_exist?).returns true
 
                 Kernel.expects(:load).raises error
 
-                @autoload.load("foo")
+                lambda { @autoload.load("foo") }.should raise_error(Puppet::Error)
             end
         end
 
-        it "should skip files that it knows are missing" do
-            @autoload.expects(:named_file_missing?).with("foo").returns true
-            @autoload.expects(:eachdir).never
-
-            @autoload.load("foo")
-        end
-
-        it "should register that files are missing if they cannot be found" do
-            @autoload.load("foo")
-
-            @autoload.should be_named_file_missing("foo")
+        it "should not raise an error if the file is missing" do
+            @autoload.load("foo").should == false
         end
 
         it "should register loaded files with the main loaded file list so they are not reloaded by ruby" do

-- 
Puppet packaging for Debian



More information about the Pkg-puppet-devel mailing list