diff options
author | Pete Higgins <pete@peterhiggins.org> | 2020-03-17 16:10:53 -0700 |
---|---|---|
committer | Pete Higgins <pete@peterhiggins.org> | 2020-03-23 13:55:01 -0700 |
commit | 2658a90aca4d3fd64cea7cb7a52298ebaa0accd6 (patch) | |
tree | a1f3c19efdec620fbacc5b3685719d3107850dbb | |
parent | 5ea527cd5374dbe9a61fa1fbaf0e7d89ac59e8b2 (diff) | |
download | chef-2658a90aca4d3fd64cea7cb7a52298ebaa0accd6.tar.gz |
Clear sources if either a source or rubygems_url is set.
Signed-off-by: Pete Higgins <pete@peterhiggins.org>
-rw-r--r-- | lib/chef/provider/package/rubygems.rb | 7 | ||||
-rw-r--r-- | spec/unit/provider/package/rubygems_spec.rb | 22 |
2 files changed, 25 insertions, 4 deletions
diff --git a/lib/chef/provider/package/rubygems.rb b/lib/chef/provider/package/rubygems.rb index 731c68df98..abe270c8f8 100644 --- a/lib/chef/provider/package/rubygems.rb +++ b/lib/chef/provider/package/rubygems.rb @@ -552,11 +552,12 @@ class Chef ## # If `clear_sources` is nil, clearing sources is implied if a `source` - # was added. If `clear_sources` is not nil, it has been set explicitly - # on the resource and its value should be used. + # was added or if the global rubygems URL is set. If `clear_sources` + # is not nil, it has been set explicitly on the resource and its value + # should be used. def clear_sources? if new_resource.clear_sources.nil? - !!new_resource.source + !!(new_resource.source || Chef::Config[:rubygems_url]) else new_resource.clear_sources end diff --git a/spec/unit/provider/package/rubygems_spec.rb b/spec/unit/provider/package/rubygems_spec.rb index 63fc0231cd..d2a480cbb0 100644 --- a/spec/unit/provider/package/rubygems_spec.rb +++ b/spec/unit/provider/package/rubygems_spec.rb @@ -731,7 +731,7 @@ describe Chef::Provider::Package::Rubygems do it "installs the gem with rubygems.org as an added source" do Chef::Config[:rubygems_url] = "https://mirror1" expect(provider.gem_env).to receive(:candidate_version_from_remote).with(gem_dep, Chef::Config[:rubygems_url]).and_return(version) - expected = "#{gem_binary} install rspec-core -q --no-document -v \"#{target_version}\" --source=https://mirror1" + expected = "#{gem_binary} install rspec-core -q --no-document -v \"#{target_version}\" --clear-sources --source=https://mirror1" expect(provider).to receive(:shell_out_compacted!).with(expected, env: nil, timeout: 900) provider.run_action(:install) expect(new_resource).to be_updated_by_last_action @@ -1036,4 +1036,24 @@ describe Chef::Provider::Package::Rubygems, "clear_sources?" do expect(provider.clear_sources?).to be true end end + + context "when Chef::Config[:rubygems_url] is set" do + before do + Chef::Config.rubygems_url = "https://example.com/" + end + + it "is true when clear_sources is unset" do + expect(provider.clear_sources?).to be true + end + + it "is false when clear_sources is set false" do + new_resource.clear_sources(false) + expect(provider.clear_sources?).to be false + end + + it "is true when clear_sources is set true" do + new_resource.clear_sources(true) + expect(provider.clear_sources?).to be true + end + end end |