spec_helper.rb 1.82 KB
Newer Older
1
require 'puppetlabs_spec_helper/module_spec_helper'
2
3
4
5
6
require 'puppet_facts'
include PuppetFacts

ENV['UNIT_TEST_PLATFORMS'] = 'debian-7-x86_64'

7

8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
RSpec.configure do |c|
  c.include PuppetlabsSpec::Files

  c.before :each do
    # Ensure that we don't accidentally cache facts and environment
    # between test cases.
    Facter::Util::Loader.any_instance.stubs(:load_all)
    Facter.clear
    Facter.clear_messages

    # Store any environment variables away to be restored later
    @old_env = {}
    ENV.each_key {|k| @old_env[k] = ENV[k]}

    if Gem::Version.new(`puppet --version`) >= Gem::Version.new('3.5')
      Puppet.settings[:strict_variables]=true
    end
Raphaël Pinson's avatar
Raphaël Pinson committed
25
26

    if ENV['PUPPET_PARSER'] == 'future'
Raphaël Pinson's avatar
Raphaël Pinson committed
27
      c.parser='future'
Raphaël Pinson's avatar
Raphaël Pinson committed
28
    end
29
30
31
32
33
34
  end

  c.after :each do
    PuppetlabsSpec::Files.cleanup
  end
end
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55

require 'pathname'
dir = Pathname.new(__FILE__).parent
Puppet[:modulepath] = File.join(dir, 'fixtures', 'modules')

# There's no real need to make this version dependent, but it helps find
# regressions in Puppet
#
# 1. Workaround for issue #16277 where default settings aren't initialised from
# a spec and so the libdir is never initialised (3.0.x)
# 2. Workaround for 2.7.20 that now only loads types for the current node
# environment (#13858) so Puppet[:modulepath] seems to get ignored
# 3. Workaround for 3.5 where context hasn't been configured yet,
# ticket https://tickets.puppetlabs.com/browse/MODULES-823
#
ver = Gem::Version.new(Puppet.version.split('-').first)
if Gem::Requirement.new("~> 2.7.20") =~ ver || Gem::Requirement.new("~> 3.0.0") =~ ver || Gem::Requirement.new("~> 3.5") =~ ver
  puts "augeasproviders: setting Puppet[:libdir] to work around broken type autoloading"
  # libdir is only a single dir, so it can only workaround loading of one external module
  Puppet[:libdir] = "#{Puppet[:modulepath]}/augeasproviders_core/lib"
end