diff options
author | Luke Kanies <luke@madstop.com> | 2007-09-07 15:38:24 -0500 |
---|---|---|
committer | Luke Kanies <luke@madstop.com> | 2007-09-07 15:38:24 -0500 |
commit | 6700adcacdec4381ee4a27a215ee4b45207aa448 (patch) | |
tree | 92878fa77a20bd76b27ad34507f4f32274ee1ff2 /lib | |
parent | 9af79f117221d93f0d13a2c5ea3e886c6a9d939e (diff) | |
download | puppet-6700adcacdec4381ee4a27a215ee4b45207aa448.tar.gz puppet-6700adcacdec4381ee4a27a215ee4b45207aa448.tar.xz puppet-6700adcacdec4381ee4a27a215ee4b45207aa448.zip |
*Finally* fixing the tests that were failing around users and groups. The problem was that the autoload tests were somehow clearing all loaded classes, including the providers. This is fixed now.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/puppet/metatype/providers.rb | 5 | ||||
-rw-r--r-- | lib/puppet/parser/collector.rb | 4 | ||||
-rw-r--r-- | lib/puppet/util/autoload.rb | 25 |
3 files changed, 15 insertions, 19 deletions
diff --git a/lib/puppet/metatype/providers.rb b/lib/puppet/metatype/providers.rb index 8210dd382..c302d9928 100644 --- a/lib/puppet/metatype/providers.rb +++ b/lib/puppet/metatype/providers.rb @@ -230,6 +230,9 @@ class Puppet::Type # Return an array of all of the suitable providers. def self.suitableprovider + if @providers.empty? + providerloader.loadall + end @providers.find_all { |name, provider| provider.suitable? }.collect { |name, provider| @@ -249,5 +252,3 @@ class Puppet::Type end end end - -# $Id$ diff --git a/lib/puppet/parser/collector.rb b/lib/puppet/parser/collector.rb index d995bf7a7..3eb37dfa2 100644 --- a/lib/puppet/parser/collector.rb +++ b/lib/puppet/parser/collector.rb @@ -121,10 +121,6 @@ class Puppet::Parser::Collector def initialize(scope, type, equery, vquery, form) @scope = scope - - unless scope.resource - raise "wtf?" - end @type = type @equery = equery @vquery = vquery diff --git a/lib/puppet/util/autoload.rb b/lib/puppet/util/autoload.rb index 65cd3affb..280961837 100644 --- a/lib/puppet/util/autoload.rb +++ b/lib/puppet/util/autoload.rb @@ -3,7 +3,7 @@ class Puppet::Util::Autoload include Puppet::Util @autoloaders = {} - @loaded = {} + @loaded = [] class << self attr_reader :autoloaders @@ -13,12 +13,6 @@ class Puppet::Util::Autoload # Send [], []=, and :clear to the @autloaders hash Puppet::Util.classproxy self, :autoloaders, "[]", "[]=" - # Clear the list of autoloaders and loaded files. - def self.clear - @autoloaders.clear - @loaded.clear - end - # List all loaded files. def self.list_loaded @loaded.sort { |a,b| a[0] <=> b[0] }.collect do |path, hash| @@ -27,15 +21,20 @@ class Puppet::Util::Autoload end # Has a given path been loaded? This is used for testing whether a - # changed file should be loaded or just ignored. + # changed file should be loaded or just ignored. This is only + # used in network/client/master, when downloading plugins, to + # see if a given plugin is currently loaded and thus should be + # reloaded. def self.loaded?(path) path = path.to_s.sub(/\.rb$/, '') - @loaded[path] + @loaded.include?(path) end - # Save the fact that a given path has been loaded - def self.loaded(path, file, loader) - @loaded[path] = {:file => file, :autoloader => loader} + # Save the fact that a given path has been loaded. This is so + # we can load downloaded plugins if they've already been loaded + # into memory. + def self.loaded(file) + @loaded << file unless @loaded.include?(file) end attr_accessor :object, :path, :objwarn, :wrap @@ -94,7 +93,7 @@ class Puppet::Util::Autoload # Mark the named object as loaded. Note that this supports unqualified # queries, while we store the result as a qualified query in the class. def loaded(name, file) - self.class.loaded(File.join(@path, name.to_s), file, object) + self.class.loaded(File.join(@path, name.to_s)) end # Indicate whether the specfied plugin has been loaded. |