Sha256: 594644219d94a2c473fc9b13b4ee3430fdb0205cd722c0b86813a122510a81ec

Contents?: true

Size: 1.91 KB

Versions: 12

Compression:

Stored size: 1.91 KB

Contents

module PuppetSpec::Compiler
  module_function

  def compile_to_catalog(string, node = Puppet::Node.new('foonode'))
    Puppet[:code] = string
    # see lib/puppet/indirector/catalog/compiler.rb#filter
    Puppet::Parser::Compiler.compile(node).filter { |r| r.virtual? }
  end

  def compile_to_ral(manifest)
    catalog = compile_to_catalog(manifest)
    ral = catalog.to_ral
    ral.finalize
    ral
  end

  def compile_to_relationship_graph(manifest, prioritizer = Puppet::Graph::SequentialPrioritizer.new)
    ral = compile_to_ral(manifest)
    graph = Puppet::Graph::RelationshipGraph.new(prioritizer)
    graph.populate_from(ral)
    graph
  end

  def apply_compiled_manifest(manifest, prioritizer = Puppet::Graph::SequentialPrioritizer.new)
    catalog = compile_to_ral(manifest)
    if block_given?
      catalog.resources.each { |res| yield res }
    end
    transaction = Puppet::Transaction.new(catalog,
                                         Puppet::Transaction::Report.new("apply"),
                                         prioritizer)
    transaction.evaluate
    transaction.report.finalize_report

    transaction
  end

  def apply_with_error_check(manifest)
    apply_compiled_manifest(manifest) do |res|
      res.expects(:err).never
    end
  end

  def order_resources_traversed_in(relationships)
    order_seen = []
    relationships.traverse { |resource| order_seen << resource.ref }
    order_seen
  end

  def collect_notices(code, node = Puppet::Node.new('foonode'))
    Puppet[:code] = code
    compiler = Puppet::Parser::Compiler.new(node)
    logs = []
    Puppet::Util::Log.with_destination(Puppet::Test::LogCollector.new(logs)) do
      yield(compiler)
    end
    logs = logs.select { |log| log.level == :notice }.map { |log| log.message }
    logs
  end

  def eval_and_collect_notices(code, node = Puppet::Node.new('foonode'))
    collect_notices(code, node) do |compiler|
      compiler.compile
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
puppet-4.4.2 spec/lib/puppet_spec/compiler.rb
puppet-4.4.2-x86-mingw32 spec/lib/puppet_spec/compiler.rb
puppet-4.4.2-x64-mingw32 spec/lib/puppet_spec/compiler.rb
puppet-4.4.2-universal-darwin spec/lib/puppet_spec/compiler.rb
puppet-4.4.1 spec/lib/puppet_spec/compiler.rb
puppet-4.4.1-x86-mingw32 spec/lib/puppet_spec/compiler.rb
puppet-4.4.1-x64-mingw32 spec/lib/puppet_spec/compiler.rb
puppet-4.4.1-universal-darwin spec/lib/puppet_spec/compiler.rb
puppet-4.4.0 spec/lib/puppet_spec/compiler.rb
puppet-4.4.0-x86-mingw32 spec/lib/puppet_spec/compiler.rb
puppet-4.4.0-x64-mingw32 spec/lib/puppet_spec/compiler.rb
puppet-4.4.0-universal-darwin spec/lib/puppet_spec/compiler.rb