diff options
author | Daniel Pittman <daniel@puppetlabs.com> | 2011-01-26 00:15:34 -0800 |
---|---|---|
committer | Daniel Pittman <daniel@rimspace.net> | 2011-01-26 00:15:34 -0800 |
commit | 1dc6b42d5dbaf0ca2ad1b1e9dd2a5788bcdb643d (patch) | |
tree | 29cf48ff2ca6d8baa1e07c846aae52c9a5494b83 | |
parent | 3478190ce9b8f28c0e36c8102342471eda2ca446 (diff) | |
parent | af1c1febd6ae4accf840279539855592705878bf (diff) | |
download | puppet-1dc6b42d5dbaf0ca2ad1b1e9dd2a5788bcdb643d.tar.gz puppet-1dc6b42d5dbaf0ca2ad1b1e9dd2a5788bcdb643d.tar.xz puppet-1dc6b42d5dbaf0ca2ad1b1e9dd2a5788bcdb643d.zip |
Merge branch 'bug/2.6.next/5855-freebsd-withenv' into 2.6.next
-rwxr-xr-x | lib/puppet/provider/package/freebsd.rb | 4 | ||||
-rwxr-xr-x | spec/unit/provider/package/freebsd_spec.rb | 55 |
2 files changed, 57 insertions, 2 deletions
diff --git a/lib/puppet/provider/package/freebsd.rb b/lib/puppet/provider/package/freebsd.rb index 2f012a4ed..e10a20b04 100755 --- a/lib/puppet/provider/package/freebsd.rb +++ b/lib/puppet/provider/package/freebsd.rb @@ -20,11 +20,11 @@ Puppet::Type.type(:package).provide :freebsd, :parent => :openbsd do if @resource[:source] =~ /\/$/ if @resource[:source] =~ /^(ftp|https?):/ - withenv :PACKAGESITE => @resource[:source] do + Puppet::Util::Execution::withenv :PACKAGESITE => @resource[:source] do pkgadd "-r", @resource[:name] end else - withenv :PKG_PATH => @resource[:source] do + Puppet::Util::Execution::withenv :PKG_PATH => @resource[:source] do pkgadd @resource[:name] end end diff --git a/spec/unit/provider/package/freebsd_spec.rb b/spec/unit/provider/package/freebsd_spec.rb new file mode 100755 index 000000000..0d38a16cf --- /dev/null +++ b/spec/unit/provider/package/freebsd_spec.rb @@ -0,0 +1,55 @@ +#!/usr/bin/env ruby + +require File.dirname(__FILE__) + '/../../../spec_helper' + +provider_class = Puppet::Type.type(:package).provider(:freebsd) + +describe provider_class do + before :each do + # Create a mock resource + @resource = stub 'resource' + + # A catch all; no parameters set + @resource.stubs(:[]).returns(nil) + + # But set name and source + @resource.stubs(:[]).with(:name).returns "mypackage" + @resource.stubs(:[]).with(:ensure).returns :installed + + @provider = provider_class.new + @provider.resource = @resource + end + + it "should have an install method" do + @provider = provider_class.new + @provider.should respond_to(:install) + end + + describe "when installing" do + before :each do + @resource.stubs(:should).with(:ensure).returns(:installed) + end + + it "should install a package from a path to a directory" do + # For better or worse, trailing '/' is needed. --daniel 2011-01-26 + path = '/path/to/directory/' + @resource.stubs(:[]).with(:source).returns(path) + Puppet::Util::Execution.expects(:withenv).once.with({:PKG_PATH => path}).yields + @provider.expects(:pkgadd).once.with("mypackage") + + expect { @provider.install }.should_not raise_error + end + + %w{http https ftp}.each do |protocol| + it "should install a package via #{protocol}" do + # For better or worse, trailing '/' is needed. --daniel 2011-01-26 + path = "#{protocol}://localhost/" + @resource.stubs(:[]).with(:source).returns(path) + Puppet::Util::Execution.expects(:withenv).once.with({:PACKAGESITE => path}).yields + @provider.expects(:pkgadd).once.with('-r', "mypackage") + + expect { @provider.install }.should_not raise_error + end + end + end +end |