summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordheerajd-msys <dheeraj.dubey@msystechnologies.com>2018-08-16 16:23:41 +0530
committerdheerajd-msys <dheeraj.dubey@msystechnologies.com>2018-09-25 11:36:10 +0530
commit7b0adfc8f0b6507919f201f5314b4be5b794a1ba (patch)
treef240904149fd6e54a870d24c00f954958754792f
parent460ab7fd688a50c3b0812a4258955d5a32017824 (diff)
downloadchef-7b0adfc8f0b6507919f201f5314b4be5b794a1ba.tar.gz
Signed-off-by: dheerajd-msys <dheeraj.dubey@msystechnologies.com>
pick 3cf01debd fix for global options property pick af5cddaca added global_options property pick 7cc82d185 functional test added pick 3684cdb58 add suse rspec testing
-rw-r--r--lib/chef/provider/package/zypper.rb20
-rw-r--r--lib/chef/resource/zypper_package.rb2
-rw-r--r--spec/unit/provider/package/zypper_spec.rb43
3 files changed, 57 insertions, 8 deletions
diff --git a/lib/chef/provider/package/zypper.rb b/lib/chef/provider/package/zypper.rb
index 39abaabfac..2a333c4f5f 100644
--- a/lib/chef/provider/package/zypper.rb
+++ b/lib/chef/provider/package/zypper.rb
@@ -109,7 +109,7 @@ class Chef
end
def install_package(name, version)
- zypper_package("install", *options, allow_downgrade, name, version)
+ zypper_package("install", global_options, *options, "--auto-agree-with-licenses", allow_downgrade, name, version)
end
def upgrade_package(name, version)
@@ -118,19 +118,19 @@ class Chef
end
def remove_package(name, version)
- zypper_package("remove", *options, name, version)
+ zypper_package("remove", global_options, *options, name, version)
end
def purge_package(name, version)
- zypper_package("remove", *options, "--clean-deps", name, version)
+ zypper_package("remove", global_options, *options, "--clean-deps", name, version)
end
def lock_package(name, version)
- zypper_package("addlock", *options, name, version)
+ zypper_package("addlock", global_options, *options, name, version)
end
def unlock_package(name, version)
- zypper_package("removelock", *options, name, version)
+ zypper_package("removelock", global_options, *options, name, version)
end
private
@@ -141,12 +141,12 @@ class Chef
end
end
- def zypper_package(command, *options, names, versions)
+ def zypper_package(command, global_options, *options, names, versions)
zipped_names = zip(names, versions)
if zypper_version < 1.0
- shell_out!("zypper", gpg_checks, command, *options, "-y", names)
+ shell_out!("zypper", global_options, gpg_checks, command, *options, "-y", names)
else
- shell_out!("zypper", *options,"--non-interactive", gpg_checks, command, "--auto-agree-with-licenses", zipped_names)
+ shell_out!("zypper", global_options, "--non-interactive", gpg_checks, command, *options, zipped_names)
end
end
@@ -157,6 +157,10 @@ class Chef
def allow_downgrade
"--oldpackage" if new_resource.allow_downgrade
end
+
+ def global_options
+ new_resource.global_options if new_resource.global_options
+ end
end
end
end
diff --git a/lib/chef/resource/zypper_package.rb b/lib/chef/resource/zypper_package.rb
index 6caa14c1a3..9dd9a0b7b9 100644
--- a/lib/chef/resource/zypper_package.rb
+++ b/lib/chef/resource/zypper_package.rb
@@ -34,6 +34,8 @@ class Chef
property :allow_downgrade, [ TrueClass, FalseClass ],
description: "Allow downgrading a package to satisfy requested version requirements.",
default: false, introduced: "13.6"
+
+ property :global_options, [ String, Array ], coerce: proc { |x| x.is_a?(String) ? x.shellsplit : x }
end
end
end
diff --git a/spec/unit/provider/package/zypper_spec.rb b/spec/unit/provider/package/zypper_spec.rb
index 6795f9e051..d51c12e8f1 100644
--- a/spec/unit/provider/package/zypper_spec.rb
+++ b/spec/unit/provider/package/zypper_spec.rb
@@ -163,6 +163,14 @@ describe Chef::Provider::Package::Zypper do
)
provider.install_package(["emacs"], ["1.0"])
end
+
+ it "should add user provided global options" do
+ new_resource.global_options "--user-provided"
+ shell_out_expectation!(
+ "zypper", "--user-provided", "--non-interactive", "install", "--auto-agree-with-licenses", "emacs=1.0"
+ )
+ provider.install_package(["emacs"], ["1.0"])
+ end
end
describe "upgrade_package" do
@@ -193,6 +201,13 @@ describe Chef::Provider::Package::Zypper do
)
provider.upgrade_package(["emacs"], ["1.0"])
end
+ it "should add user provided global options" do
+ new_resource.global_options "--user-provided"
+ shell_out_expectation!(
+ "zypper", "--user-provided", "--non-interactive", "install", "--auto-agree-with-licenses", "emacs=1.0"
+ )
+ provider.install_package(["emacs"], ["1.0"])
+ end
end
describe "remove_package" do
@@ -234,6 +249,13 @@ describe Chef::Provider::Package::Zypper do
)
provider.remove_package(["emacs"], ["1.0"])
end
+ it "should add user provided global options" do
+ new_resource.global_options "--user-provided"
+ shell_out_expectation!(
+ "zypper", "--user-provided", "--non-interactive", "remove", "emacs=1.0"
+ )
+ provider.remove_package(["emacs"], ["1.0"])
+ end
end
end
@@ -265,6 +287,13 @@ describe Chef::Provider::Package::Zypper do
)
provider.purge_package(["emacs"], ["1.0"])
end
+ it "should add user provided global options" do
+ new_resource.global_options "--user-provided"
+ shell_out_expectation!(
+ "zypper", "--user-provided", "--non-interactive", "remove", "--clean-deps", "emacs=1.0"
+ )
+ provider.purge_package(["emacs"], ["1.0"])
+ end
end
describe "action_lock" do
@@ -320,6 +349,13 @@ describe Chef::Provider::Package::Zypper do
)
provider.lock_package(["emacs"], [nil])
end
+ it "should add user provided global options" do
+ new_resource.global_options "--user-provided"
+ shell_out_expectation!(
+ "zypper", "--user-provided", "--non-interactive", "addlock", "emacs"
+ )
+ provider.lock_package(["emacs"], [nil])
+ end
end
describe "action_unlock" do
@@ -374,6 +410,13 @@ describe Chef::Provider::Package::Zypper do
)
provider.unlock_package(["emacs"], [nil])
end
+ it "should add user provided global options" do
+ new_resource.global_options "--user-provided"
+ shell_out_expectation!(
+ "zypper", "--user-provided", "--non-interactive", "removelock", "emacs"
+ )
+ provider.unlock_package(["emacs"], [nil])
+ end
end
describe "on an older zypper" do