]> git.donarmstrong.com Git - dsa-puppet.git/blob - modules/stdlib/spec/spec_helper.rb
upgrade to concat 2.0.0
[dsa-puppet.git] / modules / stdlib / spec / spec_helper.rb
1 dir = File.expand_path(File.dirname(__FILE__))
2 $LOAD_PATH.unshift File.join(dir, 'lib')
3
4 p dir
5
6 # Don't want puppet getting the command line arguments for rake or autotest
7 ARGV.clear
8
9 require 'puppet'
10 require 'facter'
11 require 'mocha'
12 gem 'rspec', '>=2.0.0'
13 require 'rspec/expectations'
14
15 # So everyone else doesn't have to include this base constant.
16 module PuppetSpec
17   FIXTURE_DIR = File.join(dir = File.expand_path(File.dirname(__FILE__)), "fixtures") unless defined?(FIXTURE_DIR)
18 end
19
20 require 'pathname'
21 require 'tmpdir'
22
23 require 'puppet_spec/verbose'
24 require 'puppet_spec/files'
25 require 'puppet_spec/fixtures'
26 require 'puppet_spec/matchers'
27 require 'monkey_patches/alias_should_to_must'
28 require 'monkey_patches/publicize_methods'
29
30 # JJM Hack to make the stdlib tests run in Puppet 2.6 (See puppet commit cf183534)
31 if not Puppet.constants.include? "Test" then
32   module Puppet::Test
33     class LogCollector
34       def initialize(logs)
35         @logs = logs
36       end
37
38       def <<(value)
39         @logs << value
40       end
41     end
42   end
43   Puppet::Util::Log.newdesttype :log_collector do
44     match "Puppet::Test::LogCollector"
45
46     def initialize(messages)
47       @messages = messages
48     end
49
50     def handle(msg)
51       @messages << msg
52     end
53   end
54 end
55
56 Pathname.glob("#{dir}/shared_behaviours/**/*.rb") do |behaviour|
57   require behaviour.relative_path_from(Pathname.new(dir))
58 end
59
60 RSpec.configure do |config|
61   include PuppetSpec::Fixtures
62
63   config.mock_with :mocha
64
65   config.before :each do
66     GC.disable
67
68     # these globals are set by Application
69     $puppet_application_mode = nil
70     $puppet_application_name = nil
71
72     # REVISIT: I think this conceals other bad tests, but I don't have time to
73     # fully diagnose those right now.  When you read this, please come tell me
74     # I suck for letting this float. --daniel 2011-04-21
75     Signal.stubs(:trap)
76
77     # Set the confdir and vardir to gibberish so that tests
78     # have to be correctly mocked.
79     Puppet[:confdir] = "/dev/null"
80     Puppet[:vardir] = "/dev/null"
81
82     # Avoid opening ports to the outside world
83     Puppet.settings[:bindaddress] = "127.0.0.1"
84
85     @logs = []
86     Puppet::Util::Log.newdestination(Puppet::Test::LogCollector.new(@logs))
87
88     @log_level = Puppet::Util::Log.level
89   end
90
91   config.after :each do
92     Puppet.settings.clear
93     Puppet::Node::Environment.clear
94     Puppet::Util::Storage.clear
95     Puppet::Util::ExecutionStub.reset if Puppet::Util.constants.include? "ExecutionStub"
96
97     PuppetSpec::Files.cleanup
98
99     @logs.clear
100     Puppet::Util::Log.close_all
101     Puppet::Util::Log.level = @log_level
102
103     GC.enable
104   end
105 end