diff options
-rw-r--r-- | lib/chef/provider/package/zypper.rb | 2 | ||||
-rw-r--r-- | spec/unit/provider/package/zypper_spec.rb | 44 |
2 files changed, 29 insertions, 17 deletions
diff --git a/lib/chef/provider/package/zypper.rb b/lib/chef/provider/package/zypper.rb index 2639f18deb..b00bef0f92 100644 --- a/lib/chef/provider/package/zypper.rb +++ b/lib/chef/provider/package/zypper.rb @@ -103,7 +103,7 @@ class Chef private def zypper_package(command, pkgname, version) - version = "=#{version}" unless version.empty? + version = "=#{version}" unless version.nil? || version.empty? if zypper_version < 1.0 shell_out!("zypper#{gpg_checks} #{command} -y #{pkgname}") else diff --git a/spec/unit/provider/package/zypper_spec.rb b/spec/unit/provider/package/zypper_spec.rb index c437631309..87f02d7794 100644 --- a/spec/unit/provider/package/zypper_spec.rb +++ b/spec/unit/provider/package/zypper_spec.rb @@ -146,25 +146,37 @@ describe Chef::Provider::Package::Zypper do end describe "remove_package" do - it "should run zypper remove with the package name" do - Chef::Config.stub(:[]).with(:zypper_check_gpg).and_return(true) - @provider.should_receive(:shell_out!).with( - "zypper --non-interactive remove emacs=1.0") - @provider.remove_package("emacs", "1.0") + + context "when package version is not explicitly specified" do + it "should run zypper remove with the package name" do + Chef::Config.stub(:[]).with(:zypper_check_gpg).and_return(true) + @provider.should_receive(:shell_out!).with( + "zypper --non-interactive remove emacs") + @provider.remove_package("emacs", nil) + end end - it "should run zypper remove without gpg checks" do - Chef::Config.stub(:[]).with(:zypper_check_gpg).and_return(false) - @provider.should_receive(:shell_out!).with( + + context "when package version is explicitly specified" do + it "should run zypper remove with the package name" do + Chef::Config.stub(:[]).with(:zypper_check_gpg).and_return(true) + @provider.should_receive(:shell_out!).with( + "zypper --non-interactive remove emacs=1.0") + @provider.remove_package("emacs", "1.0") + end + it "should run zypper remove without gpg checks" do + Chef::Config.stub(:[]).with(:zypper_check_gpg).and_return(false) + @provider.should_receive(:shell_out!).with( + "zypper --non-interactive --no-gpg-checks remove emacs=1.0") + @provider.remove_package("emacs", "1.0") + end + it "should warn about gpg checks on zypper remove" do + Chef::Log.should_receive(:warn).with( + /All packages will be installed without gpg signature checks/) + @provider.should_receive(:shell_out!).with( "zypper --non-interactive --no-gpg-checks remove emacs=1.0") - @provider.remove_package("emacs", "1.0") - end - it "should warn about gpg checks on zypper remove" do - Chef::Log.should_receive(:warn).with( - /All packages will be installed without gpg signature checks/) - @provider.should_receive(:shell_out!).with( - "zypper --non-interactive --no-gpg-checks remove emacs=1.0") - @provider.remove_package("emacs", "1.0") + @provider.remove_package("emacs", "1.0") + end end end |