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>
This commit is contained in:
Родитель
0b95a8528e
Коммит
d6407f46f1
|
@ -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] ||= {}
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче