File: rspec-puppet.rb

package info (click to toggle)
ruby-rspec-puppet 2.9.0%2Bds-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 1,416 kB
  • sloc: ruby: 6,661; makefile: 6
file content (144 lines) | stat: -rw-r--r-- 4,381 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
require 'puppet'
require 'rspec'
require 'fileutils'
require 'tmpdir'
require 'rspec-puppet/errors'
require 'rspec-puppet/matchers'
require 'rspec-puppet/example'
require 'rspec-puppet/setup'
require 'rspec-puppet/coverage'
require 'rspec-puppet/adapters'
require 'rspec-puppet/consts'

begin
  require 'puppet/test/test_helper'
rescue LoadError
end

RSpec.configure do |c|
  c.add_setting :enable_pathname_stubbing, :default => false
end

module RSpec::Puppet
  def self.rspec_puppet_example?
    RSpec::Puppet::EventListener.rspec_puppet_example?
  end

  def self.current_example
    RSpec::Puppet::EventListener.current_example
  end
end

require 'rspec-puppet/monkey_patches'

RSpec.configure do |c|
  c.add_setting :environmentpath, :default => Puppet::Util::Platform.actually_windows? ? 'c:/nul/' : '/dev/null'
  c.add_setting :module_path, :default => nil
  c.add_setting :manifest_dir, :default => nil
  c.add_setting :manifest, :default => nil
  c.add_setting :template_dir, :default => nil
  c.add_setting :config, :default => nil
  c.add_setting :confdir, :default => Puppet::Util::Platform.actually_windows? ? 'c:/nul/' : '/dev/null'
  c.add_setting :default_facts, :default => {}
  c.add_setting :default_node_params, :default => {}
  c.add_setting :default_trusted_facts, :default => {}
  c.add_setting :default_trusted_external_data, :default => {}
  c.add_setting :hiera_config, :default => Puppet::Util::Platform.actually_windows? ? 'c:/nul/' : '/dev/null'
  c.add_setting :parser, :default => 'current'
  c.add_setting :trusted_node_data, :default => false
  c.add_setting :ordering, :default => 'title-hash'
  c.add_setting :stringify_facts, :default => true
  c.add_setting :strict_variables, :default => false
  c.add_setting :setup_fixtures, :default => true
  c.add_setting :derive_node_facts_from_nodename, :default => true
  c.add_setting :adapter
  c.add_setting :platform, :default => Puppet::Util::Platform.actual_platform
  c.add_setting :vendormoduledir, :default => Puppet::Util::Platform.actually_windows? ? 'c:/nul/' : '/dev/null'
  c.add_setting :basemodulepath, :default => Puppet::Util::Platform.actually_windows? ? 'c:/nul/' : '/dev/null'
  c.add_setting :disable_module_hiera, :default => false
  c.add_setting :fixture_hiera_configs, :default => {}
  c.add_setting :use_fixture_spec_hiera, :default => false
  c.add_setting :fallback_to_default_hiera, :default => true

  c.instance_eval do
    def trusted_server_facts
      @trusted_server_facts.nil? ? false : @trusted_server_facts
    end

    def trusted_server_facts=(value)
      @trusted_server_facts = value
      adapter.setup_puppet(RSpec::Puppet.current_example) unless adapter.nil?
    end
  end

  c.before(:all) do
    if RSpec.configuration.setup_fixtures?
      RSpec::Puppet::Setup.safe_setup_directories(nil, false)
    end
  end

  if defined?(Puppet::Test::TestHelper)
    begin
      Puppet::Test::TestHelper.initialize
    rescue NoMethodError
      Puppet::Test::TestHelper.before_each_test
    end

    c.before :all do
      begin
        Puppet::Test::TestHelper.before_all_tests
      rescue
      end
    end

    c.after :all do
      begin
        Puppet::Test::TestHelper.after_all_tests
      rescue
      end
    end

    c.before :each do
      begin
        Puppet::Test::TestHelper.before_each_test
      rescue Puppet::Context::DuplicateRollbackMarkError
        Puppet::Test::TestHelper.send(:initialize_settings_before_each)
      rescue
      end
    end

    c.after :each do
      begin
        Puppet::Test::TestHelper.after_each_test
      rescue
      end
    end
  end

  c.before :each do
    if RSpec::Puppet.rspec_puppet_example?
      @adapter = RSpec::Puppet::Adapters.get
      @adapter.setup_puppet(self)
      c.adapter = adapter
    end
  end

  c.before :each do |example|
    if RSpec::Puppet.rspec_puppet_example?
      Puppet::Util::Platform.pretend_to_be RSpec.configuration.platform
      stub_file_consts(example) if self.respond_to?(:stub_file_consts)

      if defined?(Selinux)
        if respond_to?(:allow)
          allow(Selinux).to receive(:is_selinux_enabled).and_return(0)
        elsif Selinux.respond_to?(:stubs)
          Selinux.stubs(:is_selinux_enabled).returns(0)
        end
      end
    end
  end

  c.after(:each) do
    RSpec::Puppet::Consts.restore_consts if RSpec::Puppet.rspec_puppet_example?
  end
end