diff options
author | luke <luke@980ebf18-57e1-0310-9a29-db15c13687c0> | 2007-06-17 00:06:46 +0000 |
---|---|---|
committer | luke <luke@980ebf18-57e1-0310-9a29-db15c13687c0> | 2007-06-17 00:06:46 +0000 |
commit | e8c6cd96f58aca188e5944256596987e82d147ea (patch) | |
tree | 44da001e53d7375ebcce810477c40674c56c7266 | |
parent | 4f7c650cf7a0ff89abebbb79a227a2515af02c31 (diff) | |
download | puppet-e8c6cd96f58aca188e5944256596987e82d147ea.tar.gz puppet-e8c6cd96f58aca188e5944256596987e82d147ea.tar.xz puppet-e8c6cd96f58aca188e5944256596987e82d147ea.zip |
Fixing the yum provider, and fixing the unit tests so the failures people were experiencing will result in failed tests. This fixes #672.
git-svn-id: https://reductivelabs.com/svn/puppet/trunk@2595 980ebf18-57e1-0310-9a29-db15c13687c0
-rwxr-xr-x | lib/puppet/provider/package/rpm.rb | 10 | ||||
-rwxr-xr-x | lib/puppet/provider/package/yum.rb | 4 | ||||
-rwxr-xr-x | test/ral/providers/package.rb | 37 |
3 files changed, 37 insertions, 14 deletions
diff --git a/lib/puppet/provider/package/rpm.rb b/lib/puppet/provider/package/rpm.rb index de81bb12e..542ac89fc 100755 --- a/lib/puppet/provider/package/rpm.rb +++ b/lib/puppet/provider/package/rpm.rb @@ -58,10 +58,10 @@ Puppet::Type.type(:package).provide :rpm, :source => :rpm, :parent => Puppet::Pr regex = %r{^(\S+)\s+(\S+)} fields = [:instance, :ensure] - hash = {} + attrs = {} if match = regex.match(output) fields.zip(match.captures) { |field,value| - hash[field] = value + attrs[field] = value } else raise Puppet::DevError, @@ -69,11 +69,9 @@ Puppet::Type.type(:package).provide :rpm, :source => :rpm, :parent => Puppet::Pr output end - @nvr = hash[:instance] + @nvr = attrs[:instance] - @property_hash = hash - - return hash + return attrs end # Here we just retrieve the version from the file specified in the source. diff --git a/lib/puppet/provider/package/yum.rb b/lib/puppet/provider/package/yum.rb index b9212ef37..f6c5ec401 100755 --- a/lib/puppet/provider/package/yum.rb +++ b/lib/puppet/provider/package/yum.rb @@ -40,10 +40,10 @@ Puppet::Type.type(:package).provide :yum, :parent => :rpm, :source => :rpm do else # Yum didn't find updates, pretend the current # version is the latest - unless defined?(@current_values) and @current_values[:ensure] + unless properties[:ensure] != :absent raise Puppet::DevError, "Tried to get latest on a missing package" end - return @current_values[:ensure] + return @property_hash[:ensure] end end diff --git a/test/ral/providers/package.rb b/test/ral/providers/package.rb index ab7c0130d..02d8806b2 100755 --- a/test/ral/providers/package.rb +++ b/test/ral/providers/package.rb @@ -8,6 +8,11 @@ require 'etc' class TestPackageProvider < Test::Unit::TestCase include PuppetTest + def setup + super + Puppet.info @method_name + end + # Load the testpackages hash. def self.load_test_packages require 'yaml' @@ -150,8 +155,12 @@ class TestPackageProvider < Test::Unit::TestCase cleanup do if pkg.provider.respond_to?(:uninstall) - pkg[:ensure] = :absent - assert_apply(pkg) + pkg.provider.flush + if pkg.provider.properties[:ensure] != :absent + assert_nothing_raised("Could not clean up package") do + pkg.provider.uninstall + end + end else if cleancmd system(cleancmd) @@ -159,6 +168,13 @@ class TestPackageProvider < Test::Unit::TestCase end end + # Now call 'latest' after the package is installed + if provider.respond_to?(:latest) + assert_nothing_raised("Could not call 'latest'") do + provider.latest + end + end + assert_nothing_raised("Could not install package") do provider.install end @@ -168,26 +184,35 @@ class TestPackageProvider < Test::Unit::TestCase # If there are any remaining files, then test upgrading from there unless files.empty? pkg[:source] = files.shift - current = provider.query + current = provider.properties assert_nothing_raised("Could not upgrade") do provider.update end - new = provider.query + provider.flush + new = provider.properties assert(current != new, "package was not upgraded: %s did not change" % current.inspect) end unless versions.empty? pkg[:ensure] = versions.shift - current = provider.query + current = provider.properties assert_nothing_raised("Could not upgrade") do provider.update end - new = provider.query + provider.flush + new = provider.properties assert(current != new, "package was not upgraded: %s did not change" % current.inspect) end + # Now call 'latest' after the package is installed + if provider.respond_to?(:latest) + assert_nothing_raised("Could not call 'latest'") do + provider.latest + end + end + # Now remove the package if provider.respond_to?(:uninstall) assert_nothing_raised do |