summaryrefslogtreecommitdiffstats
path: root/spec
diff options
context:
space:
mode:
Diffstat (limited to 'spec')
-rw-r--r--spec/spec_helper.rb1
-rw-r--r--spec/unit/util/execution_stub_spec.rb35
2 files changed, 36 insertions, 0 deletions
diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb
index a374fb008..ae4edb2d9 100644
--- a/spec/spec_helper.rb
+++ b/spec/spec_helper.rb
@@ -34,6 +34,7 @@ RSpec.configure do |config|
Puppet.settings.clear
Puppet::Node::Environment.clear
Puppet::Util::Storage.clear
+ Puppet::Util::ExecutionStub.reset
if defined?($tmpfiles)
$tmpfiles.each do |file|
diff --git a/spec/unit/util/execution_stub_spec.rb b/spec/unit/util/execution_stub_spec.rb
new file mode 100644
index 000000000..14cf9c67a
--- /dev/null
+++ b/spec/unit/util/execution_stub_spec.rb
@@ -0,0 +1,35 @@
+#!/usr/bin/env ruby
+
+require File.dirname(__FILE__) + '/../../spec_helper'
+
+describe Puppet::Util::ExecutionStub do
+ it "should use the provided stub code when 'set' is called" do
+ Puppet::Util::ExecutionStub.set do |command, options|
+ command.should == ['/bin/foo', 'bar']
+ "stub output"
+ end
+ Puppet::Util::ExecutionStub.current_value.should_not == nil
+ Puppet::Util.execute(['/bin/foo', 'bar']).should == "stub output"
+ end
+
+ it "should automatically restore normal execution at the conclusion of each spec test" do
+ # Note: this test relies on the previous test creating a stub.
+ Puppet::Util::ExecutionStub.current_value.should == nil
+ end
+
+ it "should restore normal execution after 'reset' is called" do
+ true_command = Puppet::Util.which('true') # Note: "true" exists at different paths in different OSes
+ stub_call_count = 0
+ Puppet::Util::ExecutionStub.set do |command, options|
+ command.should == [true_command]
+ stub_call_count += 1
+ 'stub called'
+ end
+ Puppet::Util.execute([true_command]).should == 'stub called'
+ stub_call_count.should == 1
+ Puppet::Util::ExecutionStub.reset
+ Puppet::Util::ExecutionStub.current_value.should == nil
+ Puppet::Util.execute([true_command]).should == ''
+ stub_call_count.should == 1
+ end
+end