Merge branch 'memoize-build-catalog' of https://github.com/Jimdo/rspec-puppet into Jimdo-memoize-build-catalog

This commit is contained in:
Tim Sharpe 2012-08-09 10:03:07 +10:00
commit c49240e585
4 changed files with 20 additions and 9 deletions

View File

@ -34,12 +34,12 @@ module RSpec::Puppet
end
if !self.respond_to?(:params) || params == {}
Puppet[:code] = import_str + "include #{klass_name}"
code = import_str + "include #{klass_name}"
else
Puppet[:code] = import_str + 'class' + " { \"" + klass_name + "\": " + params.keys.map { |r| "#{r.to_s} => #{params[r].inspect}"
code = import_str + 'class' + " { \"" + klass_name + "\": " + params.keys.map { |r| "#{r.to_s} => #{params[r].inspect}"
}.join(',' ) + " }"
end
Puppet[:code] = pre_cond + "\n" + Puppet[:code]
code = pre_cond + "\n" + code
nodename = self.respond_to?(:node) ? node : Puppet[:certname]
facts_val = {
@ -49,7 +49,7 @@ module RSpec::Puppet
}
facts_val.merge!(munge_facts(facts)) if self.respond_to?(:facts)
build_catalog(nodename, facts_val)
build_catalog(nodename, facts_val, code)
end
end
end

View File

@ -41,7 +41,7 @@ module RSpec::Puppet
pre_cond = ""
end
Puppet[:code] = pre_cond + "\n" + import_str + define_name + " { \"" + title + "\": " + param_str + " }"
code = pre_cond + "\n" + import_str + define_name + " { \"" + title + "\": " + param_str + " }"
nodename = self.respond_to?(:node) ? node : Puppet[:certname]
facts_val = {
@ -51,7 +51,7 @@ module RSpec::Puppet
}
facts_val.merge!(munge_facts(facts)) if self.respond_to?(:facts)
build_catalog(nodename, facts_val)
build_catalog(nodename, facts_val, code)
end
end
end

View File

@ -13,7 +13,7 @@ module RSpec::Puppet
Puppet[:manifest] = self.respond_to?(:manifest) ? manifest : RSpec.configuration.manifest
Puppet[:templatedir] = self.respond_to?(:template_dir) ? template_dir : RSpec.configuration.template_dir
Puppet[:config] = self.respond_to?(:config) ? config : RSpec.configuration.config
Puppet[:code] = ""
code = ""
nodename = self.class.top_level_description.downcase
@ -24,7 +24,7 @@ module RSpec::Puppet
}
facts_val.merge!(munge_facts(facts)) if self.respond_to?(:facts)
build_catalog(nodename, facts_val)
build_catalog(nodename, facts_val, code)
end
end
end

View File

@ -1,6 +1,12 @@
module RSpec::Puppet
module Support
def build_catalog nodename, facts_val
@@cache = {}
protected
def build_catalog_without_cache(nodename, facts_val, code)
Puppet[:code] = code
node_obj = Puppet::Node.new(nodename)
node_obj.merge(facts_val)
@ -13,6 +19,11 @@ module RSpec::Puppet
end
end
public
def build_catalog *args
@@cache[args] ||= self.build_catalog_without_cache(*args)
end
def munge_facts(facts)
output = {}
facts.keys.each { |key| output[key.to_s] = facts[key] }