Module: RSpec::Puppet::FunctionExampleGroup

Includes:
FunctionMatchers, ManifestMatchers, Support
Defined in:
lib/rspec-puppet/example/function_example_group.rb

Instance Method Summary collapse

Instance Method Details

#build_compiler(node_name, fact_values) ⇒ Object

get a compiler with an attached compiled catalog



32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/rspec-puppet/example/function_example_group.rb', line 32

def build_compiler(node_name, fact_values)
  node_options = {
    :parameters => fact_values,
  }

  stub_facts! fact_values

  node = build_node(node_name, node_options)

  compiler = Puppet::Parser::Compiler.new(node)
  compiler.compile
  compiler
end

#subjectObject



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/rspec-puppet/example/function_example_group.rb', line 7

def subject
  function_name = self.class.top_level_description.downcase

  vardir = setup_puppet

  node_name = nodename(:function)

  facts_val = facts_hash(node_name)

  # if we specify a pre_condition, we should ensure that we compile that code
  # into a catalog that is accessible from the scope where the function is called
  Puppet[:code] = pre_cond

  compiler = build_compiler(node_name, facts_val)

  function_scope = scope(compiler, node_name)

  # Return the method instance for the function.  This can be used with
  # method.call
  return nil unless Puppet::Parser::Functions.function(function_name)
  FileUtils.rm_rf(vardir) if File.directory?(vardir)
  function_scope.method("function_#{function_name}".intern)
end