diff options
author | Cory Stephenson <aevin@me.com> | 2014-08-28 18:54:29 -0500 |
---|---|---|
committer | Cory Stephenson <aevin@me.com> | 2014-08-28 18:54:29 -0500 |
commit | 712d4a87678537613413ed730888d63f3b03acd9 (patch) | |
tree | 5017678f218f4cf0fb7556dfae34270fbe2e1b34 | |
parent | 8fa5f78102f304250ba907bf7317edcce23f53f2 (diff) | |
download | chef-712d4a87678537613413ed730888d63f3b03acd9.tar.gz |
Move supports_with_pkgng? check to the freebsd_package package.
-rw-r--r-- | lib/chef/provider/package/freebsd/port.rb | 15 | ||||
-rw-r--r-- | lib/chef/resource/freebsd_package.rb | 21 | ||||
-rw-r--r-- | spec/unit/provider/package/freebsd/port_spec.rb | 19 | ||||
-rw-r--r-- | spec/unit/resource/freebsd_package_spec.rb | 4 |
4 files changed, 24 insertions, 35 deletions
diff --git a/lib/chef/provider/package/freebsd/port.rb b/lib/chef/provider/package/freebsd/port.rb index 536b73728f..8b191179f0 100644 --- a/lib/chef/provider/package/freebsd/port.rb +++ b/lib/chef/provider/package/freebsd/port.rb @@ -34,7 +34,7 @@ class Chef end def current_installed_version - pkg_info = if supports_pkgng? + pkg_info = if @new_resource.supports_pkgng? shell_out!("pkg info \"#{@new_resource.package_name}\"", :env => nil, :returns => [0,70]) else shell_out!("pkg_info -E \"#{@new_resource.package_name}*\"", :env => nil, :returns => [0,1]) @@ -53,19 +53,6 @@ class Chef def port_dir super(@new_resource.package_name) end - - private - - def ships_with_pkgng? - # It was not until __FreeBSD_version 1000017 that pkgng became - # the default binary package manager. See '/usr/ports/Mk/bsd.port.mk'. - node[:os_version].to_i >= 1000017 - end - - def supports_pkgng? - ships_with_pkgng? || !!shell_out!("make -V WITH_PKGNG", :env => nil).stdout.match(/yes/i) - end - end end end diff --git a/lib/chef/resource/freebsd_package.rb b/lib/chef/resource/freebsd_package.rb index 0af28892dd..40cc63fc55 100644 --- a/lib/chef/resource/freebsd_package.rb +++ b/lib/chef/resource/freebsd_package.rb @@ -52,8 +52,18 @@ class Chef "#{created_as_type}[#{name}]" end + def supports_pkgng? + ships_with_pkgng? || !!shell_out!("make -V WITH_PKGNG", :env => nil).stdout.match(/yes/i) + end + private + def ships_with_pkgng? + # It was not until __FreeBSD_version 1000017 that pkgng became + # the default binary package manager. See '/usr/ports/Mk/bsd.port.mk'. + node.automatic[:os_version].to_i >= 1000017 + end + def assign_provider @provider = if @source.to_s =~ /^ports$/i Chef::Provider::Package::Freebsd::Port @@ -63,17 +73,6 @@ class Chef Chef::Provider::Package::Freebsd::Pkg end end - - def ships_with_pkgng? - # It was not until __FreeBSD_version 1000017 that pkgng became - # the default binary package manager. See '/usr/ports/Mk/bsd.port.mk'. - node[:os_version].to_i >= 1000017 - end - - def supports_pkgng? - ships_with_pkgng? || !!shell_out!("make -V WITH_PKGNG", :env => nil).stdout.match(/yes/i) - end - end end end diff --git a/spec/unit/provider/package/freebsd/port_spec.rb b/spec/unit/provider/package/freebsd/port_spec.rb index f6c8d7da13..8725e5440f 100644 --- a/spec/unit/provider/package/freebsd/port_spec.rb +++ b/spec/unit/provider/package/freebsd/port_spec.rb @@ -26,7 +26,7 @@ describe Chef::Provider::Package::Freebsd::Port do @events = Chef::EventDispatch::Dispatcher.new @run_context = Chef::RunContext.new(@node, {}, @events) - @new_resource = Chef::Resource::Package.new("zsh") + @new_resource = Chef::Resource::FreebsdPackage.new("zsh", @run_context) @provider = Chef::Provider::Package::Freebsd::Port.new(@new_resource, @run_context) end @@ -70,22 +70,25 @@ describe Chef::Provider::Package::Freebsd::Port do end it "should check 'pkg_info' if system uses pkg_* tools" do - @provider.stub(:supports_pkgng?) - @provider.should_receive(:supports_pkgng?).and_return(false) + @new_resource.stub(:supports_pkgng?) + @new_resource.should_receive(:supports_pkgng?).and_return(false) @provider.should_receive(:shell_out!).with('pkg_info -E "zsh*"', :env => nil, :returns => [0,1]).and_return(@pkg_info) @provider.current_installed_version.should == "3.1.7" end - it "should check 'pkg info' if make supports WITH_PKGNG" do + it "should check 'pkg info' if make supports WITH_PKGNG if freebsd version is < 1000017" do pkg_enabled = OpenStruct.new(:stdout => "yes\n") - @provider.should_receive(:shell_out!).with('make -V WITH_PKGNG', :env => nil).and_return(pkg_enabled) - @provider.should_receive(:shell_out!).with('pkg info "zsh"', :env => nil, :returns => [0,70]).and_return(@pkg_info) - @provider.current_installed_version.should == "3.1.7" + [1000016, 1000000, 901503, 902506, 802511].each do |__freebsd_version| + @node.automatic_attrs[:os_version] = __freebsd_version + @new_resource.should_receive(:shell_out!).with('make -V WITH_PKGNG', :env => nil).and_return(pkg_enabled) + @provider.should_receive(:shell_out!).with('pkg info "zsh"', :env => nil, :returns => [0,70]).and_return(@pkg_info) + @provider.current_installed_version.should == "3.1.7" + end end it "should check 'pkg info' if the freebsd version is greater than or equal to 1000017" do __freebsd_version = 1000017 - @node.normal[:os_version] = __freebsd_version + @node.automatic_attrs[:os_version] = __freebsd_version @provider.should_receive(:shell_out!).with('pkg info "zsh"', :env => nil, :returns => [0,70]).and_return(@pkg_info) @provider.current_installed_version.should == "3.1.7" end diff --git a/spec/unit/resource/freebsd_package_spec.rb b/spec/unit/resource/freebsd_package_spec.rb index ef04e9447b..04a6962270 100644 --- a/spec/unit/resource/freebsd_package_spec.rb +++ b/spec/unit/resource/freebsd_package_spec.rb @@ -57,7 +57,7 @@ describe Chef::Resource::FreebsdPackage do describe "if __Freebsd_version is greater than or equal to 1000017" do it "should be Freebsd::Pkgng" do [1000017, 1000018, 1000500, 1001001, 1100000].each do |__freebsd_version| - @node.normal[:os_version] = __freebsd_version + @node.automatic_attrs[:os_version] = __freebsd_version @resource.after_created @resource.provider.should == Chef::Provider::Package::Freebsd::Pkgng end @@ -79,7 +79,7 @@ describe Chef::Resource::FreebsdPackage do @resource.stub(:shell_out!).with("make -V WITH_PKGNG", :env => nil).and_return(pkg_enabled) [1000016, 1000000, 901503, 902506, 802511].each do |__freebsd_version| - @node.normal[:os_version] = __freebsd_version + @node.automatic_attrs[:os_version] = __freebsd_version @resource.after_created @resource.provider.should == Chef::Provider::Package::Freebsd::Pkg end |