[Pkg-puppet-devel] [SCM] Puppet packaging for Debian branch, experimental, updated. debian/2.6.8-1-844-g7ec39d5

Pieter van de Bruggen pieter at puppetlabs.com
Tue May 10 08:06:19 UTC 2011


The following commit has been merged in the experimental branch:
commit b187e071ac1b334878498d52ee6c18f8c0e6a5d9
Author: Pieter van de Bruggen <pieter at puppetlabs.com>
Date:   Fri Mar 18 20:53:00 2011 -0700

    (#6786) Removing the #interface method.
    
    Since constants are already being defined for each
    interface, the #interface method does little but
    provide another way to access the same data.
    
    Reviewed-By: Nick Lewis

diff --git a/lib/puppet/interface.rb b/lib/puppet/interface.rb
index 476de8b..f9b2695 100644
--- a/lib/puppet/interface.rb
+++ b/lib/puppet/interface.rb
@@ -6,8 +6,10 @@ class Puppet::Interface
 
   include Puppet::Interface::ActionManager
   extend Puppet::Interface::ActionManager
+
   # This is just so we can search for actions.  We only use its
   # list of directories to search.
+  # Can't we utilize an external autoloader, or simply use the $LOAD_PATH? -pvb
   def self.autoloader
     @autoloader ||= Puppet::Util::Autoload.new(:application, "puppet/interface")
   end
@@ -30,35 +32,22 @@ class Puppet::Interface
         end
       end
     end
-    @interfaces.keys
+    Puppet::Interface.constants.map { |c| c.to_s.downcase }
   end
 
-  # Return an interface by name, loading from disk if necessary.
-  def self.interface(name)
-    @interfaces ||= {}
-    unless @interfaces[unify_name(name)]
-      require "puppet/interface/#{unify_name(name)}"
-    end
-    @interfaces[unify_name(name)]
-  rescue Exception => detail
-    puts detail.backtrace if Puppet[:trace]
-    $stderr.puts "Unable to find interface '#{name.to_s}': #{detail}."
+  def self.const_missing(name)
+    require "puppet/interface/#{name.to_s.downcase}"
+    const_get(name) if const_defined?(name)
+  rescue LoadError
+    nil
   end
 
   def self.register_interface(name, instance)
-    @interfaces ||= {}
-    @interfaces[unify_name(name)] = instance
     const_set(name2const(name), instance)
   end
 
   def self.unload_interface(name)
-    @interfaces ||= {}
-    @interfaces.delete(unify_name(name))
-    const = name2const(name)
-    const_get(const)
-    remove_const(const)
-  rescue
-    # nothing - if the constant-getting fails, just return
+    remove_const(name2const(name)) rescue nil
   end
 
   def self.unify_name(name)
diff --git a/spec/unit/interface_spec.rb b/spec/unit/interface_spec.rb
index 8799d6b..4b6fd11 100644
--- a/spec/unit/interface_spec.rb
+++ b/spec/unit/interface_spec.rb
@@ -14,7 +14,9 @@ describe Puppet::Interface do
     end
 
     it "should register itself" do
-      Puppet::Interface.expects(:register_interface).with { |name, inst| name == :me and inst.is_a?(Puppet::Interface) }
+      Puppet::Interface.expects(:register_interface).with do |name, inst|
+        name == :me and inst.is_a?(Puppet::Interface)
+      end
       Puppet::Interface.new(:me)
     end
 
@@ -46,6 +48,7 @@ describe Puppet::Interface do
     Puppet::Interface.new(:me).default_format.should == :pson
   end
 
+  # Why?
   it "should create a class-level autoloader" do
     Puppet::Interface.autoloader.should be_instance_of(Puppet::Util::Autoload)
   end
@@ -54,14 +57,6 @@ describe Puppet::Interface do
     Puppet::Interface.new(:me, :verb => "foo").verb.should == "foo"
   end
 
-  it "should be able to register and return interfaces" do
-    $stderr.stubs(:puts)
-    face = Puppet::Interface.new(:me)
-    Puppet::Interface.unload_interface(:me) # to remove from the initial registration
-    Puppet::Interface.register_interface(:me, face)
-    Puppet::Interface.interface(:me).should equal(face)
-  end
-
   it "should create an associated constant when registering an interface" do
     $stderr.stubs(:puts)
     face = Puppet::Interface.new(:me)
@@ -70,29 +65,30 @@ describe Puppet::Interface do
     Puppet::Interface::Me.should equal(face)
   end
 
+  # Why is unloading interfaces important?
   it "should be able to unload interfaces" do
     $stderr.stubs(:puts)
     face = Puppet::Interface.new(:me)
     Puppet::Interface.unload_interface(:me)
-    Puppet::Interface.interface(:me).should be_nil
+    Puppet::Interface.const_defined?(:Me).should be_false
   end
 
   it "should remove the associated constant when an interface is unregistered" do
     $stderr.stubs(:puts)
     face = Puppet::Interface.new(:me)
     Puppet::Interface.unload_interface(:me)
-    lambda { Puppet::Interface.const_get("Me") }.should raise_error(NameError)
+    Puppet::Interface.const_defined?("Me").should be_false
   end
 
   it "should try to require interfaces that are not known" do
     Puppet::Interface.expects(:require).with "puppet/interface/foo"
-    Puppet::Interface.interface(:foo)
+    Puppet::Interface.const_get(:Foo)
   end
 
   it "should not fail when requiring an interface fails" do
     $stderr.stubs(:puts)
     Puppet::Interface.expects(:require).with("puppet/interface/foo").raises LoadError
-    lambda { Puppet::Interface.interface(:foo) }.should_not raise_error
+    lambda { Puppet::Interface::Foo }.should_not raise_error
   end
 
   it "should be able to load all actions in all search paths"

-- 
Puppet packaging for Debian



More information about the Pkg-puppet-devel mailing list