summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/puppet/type/package.rb7
-rw-r--r--test/types/package.rb5
2 files changed, 9 insertions, 3 deletions
diff --git a/lib/puppet/type/package.rb b/lib/puppet/type/package.rb
index 073336b20..8c9458372 100644
--- a/lib/puppet/type/package.rb
+++ b/lib/puppet/type/package.rb
@@ -133,13 +133,18 @@ module Puppet
@parent[:type]
)
end
+
+ # Because yum always exits with a 0 exit code, there's a retrieve
+ # in the "install" method. So, check the current state now,
+ # to compare against later.
+ current = self.is
begin
@parent.update
rescue => detail
self.fail "Could not update: %s" % detail
end
- if self.is == :absent
+ if current == :absent
return :package_created
else
return :package_changed
diff --git a/test/types/package.rb b/test/types/package.rb
index 1c18fa628..3e76960b4 100644
--- a/test/types/package.rb
+++ b/test/types/package.rb
@@ -196,7 +196,8 @@ class TestPackages < Test::Unit::TestCase
mkpkgs { |pkg|
next unless pkg.respond_to? :latest
assert_nothing_raised {
- assert(pkg.latest, "Package did not return value for 'latest'")
+ assert(pkg.latest,
+ "Package %s did not return value for 'latest'" % pkg.name)
}
}
end
@@ -224,7 +225,7 @@ class TestPackages < Test::Unit::TestCase
pkg.retrieve
}
- if pkg.insync?
+ if pkg.insync? or pkg.is(:ensure) != :absent
Puppet.notice "Test package %s is already installed; please choose a different package for testing" % pkg
next
end