summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorluke <luke@980ebf18-57e1-0310-9a29-db15c13687c0>2007-06-17 00:06:46 +0000
committerluke <luke@980ebf18-57e1-0310-9a29-db15c13687c0>2007-06-17 00:06:46 +0000
commite8c6cd96f58aca188e5944256596987e82d147ea (patch)
tree44da001e53d7375ebcce810477c40674c56c7266
parent4f7c650cf7a0ff89abebbb79a227a2515af02c31 (diff)
downloadpuppet-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-xlib/puppet/provider/package/rpm.rb10
-rwxr-xr-xlib/puppet/provider/package/yum.rb4
-rwxr-xr-xtest/ral/providers/package.rb37
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