[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]