Class: RSpec::Puppet::Adapters::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/rspec-puppet/adapters.rb

Direct Known Subclasses

Adapter27, Adapter3X, Adapter4X

Instance Method Summary collapse

Instance Method Details

#catalog(node, exported) ⇒ Object



73
74
75
76
77
78
79
80
# File 'lib/rspec-puppet/adapters.rb', line 73

def catalog(node, exported)
  if exported
    # Use the compiler directly to skip the filtering done by the indirector
    Puppet::Parser::Compiler.compile(node).filter { |r| !r.exported? }
  else
    Puppet::Resource::Catalog.indirection.find(node.name, :use_node => node)
  end
end

#current_environmentObject



82
83
84
# File 'lib/rspec-puppet/adapters.rb', line 82

def current_environment
  Puppet::Node::Environment.new(@environment_name)
end

#get_setting(example_group, rspec_setting) ⇒ Object



65
66
67
68
69
70
71
# File 'lib/rspec-puppet/adapters.rb', line 65

def get_setting(example_group, rspec_setting)
  if example_group.respond_to?(rspec_setting)
    example_group.send(rspec_setting)
  else
    RSpec.configuration.send(rspec_setting)
  end
end

#manifestString?

Returns The path to the Puppet manifest if it is present and set, nil otherwise.

Returns:

  • (String, nil)

    The path to the Puppet manifest if it is present and set, nil otherwise.



99
100
101
# File 'lib/rspec-puppet/adapters.rb', line 99

def manifest
  Puppet[:manifest]
end

#modulepathObject



94
95
96
# File 'lib/rspec-puppet/adapters.rb', line 94

def modulepath
  Puppet[:modulepath].split(File::PATH_SEPARATOR)
end

#settings_mapObject



86
87
88
89
90
91
92
# File 'lib/rspec-puppet/adapters.rb', line 86

def settings_map
  [
    [:modulepath, :module_path],
    [:config, :config],
    [:confdir, :confdir],
  ]
end

#setup_puppet(example_group) ⇒ void

This method returns an undefined value.

Set up all Puppet settings applicable for this Puppet version as application defaults.

Puppet setting values can be taken from the global RSpec configuration, or from the currently executing RSpec context. When a setting is specified both in the global configuration and in the example group, the setting in the example group is preferred.

Examples:

Configuring a Puppet setting from a global RSpec configuration value

RSpec.configure do |config|
  config.parser = "future"
end
# => Puppet[:parser] will be future

Configuring a Puppet setting from within an RSpec example group

RSpec.describe 'my_module::my_class', :type => :class do
  let(:module_path) { "/Users/luke/modules" }
  #=> Puppet[:modulepath] will be "/Users/luke/modules"
end

Configuring a Puppet setting with both a global RSpec configuration and local context

RSpec.configure do |config|
  config.confdir = "/etc/puppet"
end
RSpec.describe 'my_module', :type => :class do
  # Puppet[:confdir] will be "/etc/puppet"
end
RSpec.describe 'my_module::my_class', :type => :class do
  let(:confdir) { "/etc/puppetlabs/puppet" }
  # => Puppet[:confdir] will be "/etc/puppetlabs/puppet" in this example group
end
RSpec.describe 'my_module::my_define', :type => :define do
  # Puppet[:confdir] will be "/etc/puppet" again
end

Parameters:

  • example_group (RSpec::Core::ExampleGroup)

    The RSpec context to use for local settings



41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/rspec-puppet/adapters.rb', line 41

def setup_puppet(example_group)
  settings = settings_map.map do |puppet_setting, rspec_setting|
    [puppet_setting, get_setting(example_group, rspec_setting)]
  end.flatten
  default_hash = {:confdir => '/dev/null', :vardir => '/dev/null' }
  if defined?(Puppet::Test::TestHelper) && Puppet::Test::TestHelper.respond_to?(:app_defaults_for_tests, true)
    default_hash.merge!(Puppet::Test::TestHelper.send(:app_defaults_for_tests))
  end
  settings_hash = default_hash.merge(Hash[*settings])

  if Puppet.settings.respond_to?(:initialize_app_defaults)
    Puppet.settings.initialize_app_defaults(settings_hash)
  else
    # Set settings the old way for Puppet 2.x, because that's how
    # they're defaulted in that version of Puppet::Test::TestHelper and
    # we won't be able to override them otherwise.
    settings_hash.each do |setting, value|
      Puppet.settings[setting] = value
    end
  end

  @environment_name = example_group.environment
end