summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThom May <thom@may.lt>2017-04-10 20:08:25 +0100
committerGitHub <noreply@github.com>2017-04-10 20:08:25 +0100
commit2dc827958371ccba4b83e8afa0e2205c12e57bc9 (patch)
treed227172c1c270034b966009571ed8f5de0a83293
parenta7ceee2ac90b5003cea6dae0620d6abec0935d3a (diff)
parentb3aa3f13beb1b24f6561f8403586a4ade674b24a (diff)
downloadchef-2dc827958371ccba4b83e8afa0e2205c12e57bc9.tar.gz
Merge pull request #6039 from chef/tm/backport_5838
Ensure the apt package fix gets on chef-12 branch
-rw-r--r--lib/chef/provider/package.rb6
-rw-r--r--spec/unit/provider/package/apt_spec.rb10
2 files changed, 12 insertions, 4 deletions
diff --git a/lib/chef/provider/package.rb b/lib/chef/provider/package.rb
index 8f504939fc..97aefbd559 100644
--- a/lib/chef/provider/package.rb
+++ b/lib/chef/provider/package.rb
@@ -23,6 +23,7 @@ require "chef/log"
require "chef/file_cache"
require "chef/platform"
require "chef/decorator/lazy_array"
+require "shellwords"
class Chef
class Provider
@@ -54,10 +55,7 @@ class Chef
def options
if new_resource.options.is_a?(String)
- # XXX: needs to handle double quotes, single quotes, nested quotes, etc and probably act
- # more like a space-separated "C"SV file -- although users can fix this just by passing in
- # a correctly pre-split Array.
- new_resource.options.split(" ")
+ new_resource.options.shellsplit
else
new_resource.options
end
diff --git a/spec/unit/provider/package/apt_spec.rb b/spec/unit/provider/package/apt_spec.rb
index e14af488ac..a077b2a2a3 100644
--- a/spec/unit/provider/package/apt_spec.rb
+++ b/spec/unit/provider/package/apt_spec.rb
@@ -291,6 +291,16 @@ mpg123 1.12.1-0ubuntu1
@provider.install_package(["irssi"], ["0.8.12-7"])
end
+
+ it "should run apt-get install with the package name and quotes options if specified" do
+ expect(@provider).to receive(:shell_out!).with(
+ "apt-get", "-q", "-y", "--force-yes", "-o", "Dpkg::Options::=--force-confdef", "-o", "Dpkg::Options::=--force-confnew", "install", "irssi=0.8.12-7",
+ :env => { "DEBIAN_FRONTEND" => "noninteractive" },
+ :timeout => @timeout
+ )
+ @new_resource.options('--force-yes -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confnew"')
+ @provider.install_package(["irssi"], ["0.8.12-7"])
+ end
end
describe resource_klass, "upgrade_package" do