diff options
author | Peter Burkholder <pburkholder@chef.io> | 2015-03-24 11:13:22 -0400 |
---|---|---|
committer | Bryan McLellan <btm@chef.io> | 2015-03-27 13:35:42 -0700 |
commit | 312253ebfd88ac57b8433c2f859690068fe7cb14 (patch) | |
tree | f19a8014978274dcc0f09da41197d3d463b8707a | |
parent | 36f040b73d99f0b5aae5bdab716ffa1aac060266 (diff) | |
download | chef-312253ebfd88ac57b8433c2f859690068fe7cb14.tar.gz |
Clearing sources works for string options
-rw-r--r-- | lib/chef/provider/package/rubygems.rb | 5 | ||||
-rw-r--r-- | lib/chef/resource/gem_package.rb | 5 | ||||
-rw-r--r-- | spec/unit/provider/package/rubygems_spec.rb | 10 |
3 files changed, 18 insertions, 2 deletions
diff --git a/lib/chef/provider/package/rubygems.rb b/lib/chef/provider/package/rubygems.rb index d152db1926..c53aa8934a 100644 --- a/lib/chef/provider/package/rubygems.rb +++ b/lib/chef/provider/package/rubygems.rb @@ -538,8 +538,9 @@ class Chef def install_via_gem_command(name, version) if @new_resource.source =~ /\.gem$/i name = @new_resource.source -# elsif source_is_remote? -# src = @new_resource.source && " --source=#{@new_resource.source}" + elsif @new_resource.clear_sources + src = ' --clear-sources' + src << (@new_resource.source && " --source=#{@new_resource.source}" || '') else src = @new_resource.source && " --source=#{@new_resource.source} --source=https://rubygems.org" end diff --git a/lib/chef/resource/gem_package.rb b/lib/chef/resource/gem_package.rb index 631aa13f56..0e838ca040 100644 --- a/lib/chef/resource/gem_package.rb +++ b/lib/chef/resource/gem_package.rb @@ -27,12 +27,17 @@ class Chef def initialize(name, run_context=nil) super @resource_name = :gem_package + @clear_sources = false end def source(arg=nil) set_or_return(:source, arg, :kind_of => [ String, Array ]) end + def clear_sources(arg=nil) + set_or_return(:clear_sources, arg, :kind_of => [ TrueClass, FalseClass ]) + end + # Sets a custom gem_binary to run for gem commands. def gem_binary(gem_cmd=nil) set_or_return(:gem_binary,gem_cmd,:kind_of => [ String ]) diff --git a/spec/unit/provider/package/rubygems_spec.rb b/spec/unit/provider/package/rubygems_spec.rb index b2ec482541..380572499c 100644 --- a/spec/unit/provider/package/rubygems_spec.rb +++ b/spec/unit/provider/package/rubygems_spec.rb @@ -556,6 +556,16 @@ describe Chef::Provider::Package::Rubygems do expect(@new_resource).to be_updated_by_last_action end + it "installs the gem with cleared sources and explict source when specified" do + @new_resource.gem_binary('/foo/bar') + @new_resource.source('http://mirror.ops.rhcloud.com/mirror/ruby') + @new_resource.clear_sources(true) + expected ="/foo/bar install rspec-core -q --no-rdoc --no-ri -v \"#{@spec_version}\" --clear-sources --source=#{@new_resource.source}" + expect(@provider).to receive(:shell_out!).with(expected, :env => nil) + @provider.run_action(:install) + expect(@new_resource).to be_updated_by_last_action + end + context "when no version is given" do let(:target_version) { nil } |