summaryrefslogtreecommitdiff
path: root/spec/spec_helper.rb
diff options
context:
space:
mode:
authorJeff McCune <jeff@puppetlabs.com>2012-03-29 16:52:15 -0700
committerJeff McCune <jeff@puppetlabs.com>2012-03-29 16:52:15 -0700
commit665610baaf052a4b7b1c73682b9183ea743f2593 (patch)
tree905d915d405a914b4cc601b690314bec261c8ac2 /spec/spec_helper.rb
parentcbdffb711fb109628ecdada9083f064b2e8d3a64 (diff)
(#13439) Fix test failures with Puppet 2.6.x
Without this patch the spec_helper sends a message named initialize_everything_for_tests to Puppet.settings. This is a problem because Puppet 2.6.x does not have this method, only Puppet 2.7.x and Puppet master have this method at this time and we're getting false positive test failures. This patch fixes the problem by looking before we leap. We test if the private method exists before calling it. This works with Ruby 1.8.5 and onwards and Puppet 2.6, 2.7 and master. This should fix all of the failures I've caused in Jenkins today.
Diffstat (limited to 'spec/spec_helper.rb')
-rw-r--r--spec/spec_helper.rb14
1 files changed, 12 insertions, 2 deletions
diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb
index d6837a9..d0b493e 100644
--- a/spec/spec_helper.rb
+++ b/spec/spec_helper.rb
@@ -71,7 +71,12 @@ RSpec.configure do |config|
# I suck for letting this float. --daniel 2011-04-21
Signal.stubs(:trap)
- Puppet.settings.send(:initialize_everything_for_tests)
+ # We're using send because this is a private method to communicate it
+ # should only be used for tests. We're testing if it's defined to work
+ # with Puppet 2.6.x which does not have the method.
+ if Puppet.settings.private_methods.include? "initialize_everything_for_tests"
+ Puppet.settings.send(:initialize_everything_for_tests)
+ end
@logs = []
@@ -81,7 +86,12 @@ RSpec.configure do |config|
end
config.after :each do
- Puppet.settings.send(:clear_everything_for_tests)
+ # We're using send because this is a private method to communicate it
+ # should only be used for tests. We're testing if it's defined to work
+ # with Puppet 2.6.x which does not have the method at all.
+ if Puppet.settings.private_methods.include? "clear_everything_for_tests"
+ Puppet.settings.send(:clear_everything_for_tests)
+ end
Puppet::Node::Environment.clear
Puppet::Util::Storage.clear
Puppet::Util::ExecutionStub.reset if Puppet::Util.constants.include? "ExecutionStub"