summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Kanies <luke@puppetlabs.com>2010-06-10 20:54:15 -0700
committertest branch <puppet-dev@googlegroups.com>2010-02-17 06:50:53 -0800
commitd6407f46f1743b9f3916d74bc0ed521fb5bf259d (patch)
tree2939d466d7f83fbf38f19187677f25379565edcd
parent0b95a8528e554df07efe970c9ecfc34535d17c92 (diff)
downloadpuppet-d6407f46f1743b9f3916d74bc0ed521fb5bf259d.tar.gz
Working #3139 - removing obsolete checking in Storage
We were type-checking the use of Storage for no good reason. I've removed all of that, so we can use either resources or their Refs for caching. Signed-off-by: Luke Kanies <luke@puppetlabs.com>
-rw-r--r--lib/puppet/util/storage.rb12
-rwxr-xr-xspec/unit/util/storage.rb24
-rwxr-xr-xtest/util/storage.rb20
3 files changed, 7 insertions, 49 deletions
diff --git a/lib/puppet/util/storage.rb b/lib/puppet/util/storage.rb
index 1b3d4983f..de2f3825e 100644
--- a/lib/puppet/util/storage.rb
+++ b/lib/puppet/util/storage.rb
@@ -22,18 +22,10 @@ class Puppet::Util::Storage
# types like exec, but it also means that if an object changes locations
# in the configuration it will lose its cache.
def self.cache(object)
- if object.is_a? Puppet::Type
- # We used to store things by path, now we store them by ref.
- # In oscar(0.20.0) this changed to using the ref.
- if @@state.include?(object.path)
- @@state[object.ref] = @@state[object.path]
- @@state.delete(object.path)
- end
- name = object.ref
- elsif object.is_a?(Symbol)
+ if object.is_a?(Symbol)
name = object
else
- raise ArgumentError, "You can only cache information for Types and symbols"
+ name = object.to_s
end
return @@state[name] ||= {}
diff --git a/spec/unit/util/storage.rb b/spec/unit/util/storage.rb
index 09eb6b2ac..ce5bd202a 100755
--- a/spec/unit/util/storage.rb
+++ b/spec/unit/util/storage.rb
@@ -61,25 +61,11 @@ describe Puppet::Util::Storage do
end
end
- describe "when caching invalid objects" do
- before(:all) do
- @bogus_objects = [ {}, [], "foo", 42, nil, Tempfile.new('storage_test') ]
- end
-
- it "should raise an ArgumentError" do
- @bogus_objects.each do |object|
- proc { Puppet::Util::Storage.cache(object) }.should raise_error()
- end
- end
-
- it "should not add anything to its internal state" do
- @bogus_objects.each do |object|
- begin
- Puppet::Util::Storage.cache(object)
- rescue
- Puppet::Util::Storage.state().should == {}
- end
- end
+ describe "when caching something other than a resource or symbol" do
+ it "should cache by converting to a string" do
+ data = Puppet::Util::Storage.cache(42)
+ data[:yay] = true
+ Puppet::Util::Storage.cache("42")[:yay].should be_true
end
end
diff --git a/test/util/storage.rb b/test/util/storage.rb
index e2c4dce59..b0efff317 100755
--- a/test/util/storage.rb
+++ b/test/util/storage.rb
@@ -74,25 +74,5 @@ class TestStorage < Test::Unit::TestCase
assert_same Hash, state.class
assert_equal 0, state.size
end
-
- def test_caching
- hash = nil
- one = Puppet::Type.type(:exec).new :title => "/bin/echo one"
- [one, :yayness].each do |object|
- assert_nothing_raised do
- hash = Puppet::Util::Storage.cache(object)
- end
- assert_equal({}, hash, "Did not get empty hash back for %s" % object)
-
- hash[:testing] = true
- assert_nothing_raised do
- hash = Puppet::Util::Storage.cache(object)
- end
- assert_equal({:testing => true}, hash, "Did not get hash back for %s" % object)
- end
- assert_raise(ArgumentError, "was able to cache from string") do
- Puppet::Util::Storage.cache("somethingelse")
- end
- end
end