ruby-changes:68423
From: David <ko1@a...>
Date: Wed, 13 Oct 2021 16:21:59 +0900 (JST)
Subject: [ruby-changes:68423] bd87397f73 (master): [rubygems/rubygems] Use correct way to detect default gems
https://git.ruby-lang.org/ruby.git/commit/?id=bd87397f73 From bd87397f73c36f1428b4cf8de24918b98fa71c8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Rodr=C3=ADguez?= <deivid.rodriguez@r...> Date: Mon, 11 Oct 2021 19:59:46 +0200 Subject: [rubygems/rubygems] Use correct way to detect default gems The other way, in particular matching a substring in the gemspec summary, is brittle and no longer used since Ruby 2.0. This needed rewriting the specs that depended on that way. https://github.com/rubygems/rubygems/commit/059dbfa971 --- lib/bundler/source/rubygems.rb | 12 ++---------- spec/bundler/cache/gems_spec.rb | 24 +++++++++++------------- 2 files changed, 13 insertions(+), 23 deletions(-) diff --git a/lib/bundler/source/rubygems.rb b/lib/bundler/source/rubygems.rb index 7f8699b91c..593f68d5cd 100644 --- a/lib/bundler/source/rubygems.rb +++ b/lib/bundler/source/rubygems.rb @@ -135,7 +135,7 @@ module Bundler https://github.com/ruby/ruby/blob/trunk/lib/bundler/source/rubygems.rb#L135 force = opts[:force] ensure_builtin_gems_cached = opts[:ensure_builtin_gems_cached] - if ensure_builtin_gems_cached && builtin_gem?(spec) + if ensure_builtin_gems_cached && spec.default_gem? if !cached_path(spec) cached_built_in_gem(spec) unless spec.remote force = true @@ -233,7 +233,7 @@ module Bundler https://github.com/ruby/ruby/blob/trunk/lib/bundler/source/rubygems.rb#L233 end def cache(spec, custom_path = nil) - if builtin_gem?(spec) + if spec.default_gem? cached_path = cached_built_in_gem(spec) else cached_path = cached_gem(spec) @@ -479,14 +479,6 @@ module Bundler https://github.com/ruby/ruby/blob/trunk/lib/bundler/source/rubygems.rb#L479 Bundler.rm_rf(download_path) if requires_sudo? end - def builtin_gem?(spec) - # Ruby 2.1, where all included gems have this summary - return true if spec.summary =~ /is bundled with Ruby/ - - # Ruby 2.0, where gemspecs are stored in specifications/default/ - spec.loaded_from && spec.loaded_from.include?("specifications/default/") - end - def installed?(spec) installed_specs[spec].any? end diff --git a/spec/bundler/cache/gems_spec.rb b/spec/bundler/cache/gems_spec.rb index 72e372fb41..a8382a5d8c 100644 --- a/spec/bundler/cache/gems_spec.rb +++ b/spec/bundler/cache/gems_spec.rb @@ -89,35 +89,33 @@ RSpec.describe "bundle cache" do https://github.com/ruby/ruby/blob/trunk/spec/bundler/cache/gems_spec.rb#L89 it_behaves_like "when there are only gemsources" end - describe "when there is a built-in gem" do + describe "when there is a built-in gem", :ruby_repo do + let(:default_json_version) { ruby "gem 'json'; require 'json'; puts JSON::VERSION" } + before :each do build_repo2 do - build_gem "builtin_gem", "1.0.2" - end - - build_gem "builtin_gem", "1.0.2", :to_system => true do |s| - s.summary = "This builtin_gem is bundled with Ruby" + build_gem "json", default_json_version end - FileUtils.rm("#{system_gem_path}/cache/builtin_gem-1.0.2.gem") + build_gem "json", default_json_version, :to_system => true, :default => true end it "uses builtin gems when installing to system gems" do bundle "config set path.system true" - install_gemfile %(source "#{file_uri_for(gem_repo1)}"; gem 'builtin_gem', '1.0.2') - expect(the_bundle).to include_gems("builtin_gem 1.0.2") + install_gemfile %(source "#{file_uri_for(gem_repo1)}"; gem 'json', '#{default_json_version}'), :verbose => true + expect(out).to include("Using json #{default_json_version}") end it "caches remote and builtin gems" do install_gemfile <<-G source "#{file_uri_for(gem_repo2)}" - gem 'builtin_gem', '1.0.2' + gem 'json', '#{default_json_version}' gem 'rack', '1.0.0' G bundle :cache expect(bundled_app("vendor/cache/rack-1.0.0.gem")).to exist - expect(bundled_app("vendor/cache/builtin_gem-1.0.2.gem")).to exist + expect(bundled_app("vendor/cache/json-#{default_json_version}.gem")).to exist end it "doesn't make remote request after caching the gem" do @@ -139,12 +137,12 @@ RSpec.describe "bundle cache" do https://github.com/ruby/ruby/blob/trunk/spec/bundler/cache/gems_spec.rb#L137 install_gemfile <<-G source "#{file_uri_for(gem_repo1)}" - gem 'builtin_gem', '1.0.2' + gem 'json', '#{default_json_version}' G bundle :cache, :raise_on_error => false expect(exitstatus).to_not eq(0) - expect(err).to include("builtin_gem-1.0.2 is built in to Ruby, and can't be cached") + expect(err).to include("json-#{default_json_version} is built in to Ruby, and can't be cached") end end -- cgit v1.2.1 -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/