diff options
| author | Hiroshi SHIBATA <hsbt@ruby-lang.org> | 2024-01-19 13:32:45 +0900 |
|---|---|---|
| committer | Hiroshi SHIBATA <hsbt@ruby-lang.org> | 2024-01-22 09:57:10 +0900 |
| commit | d51f4c9288a2195fbf6889fca8790587f71a1cd9 (patch) | |
| tree | 16b50f108499e411e50f71330fb749790e3f2e1f | |
| parent | 94af1e5b811f13f9c1b9be6ab6a9eea192a713f8 (diff) | |
Reapply "[rubygems/rubygems] Fix `require` of a default gem when unresolved gems depend on it"
This reverts commit 54552b89e73fc616ba47c1c87d33625af99cbce9.
| -rw-r--r-- | lib/rubygems/core_ext/kernel_require.rb | 2 | ||||
| -rw-r--r-- | test/rubygems/test_require.rb | 20 |
2 files changed, 22 insertions, 0 deletions
diff --git a/lib/rubygems/core_ext/kernel_require.rb b/lib/rubygems/core_ext/kernel_require.rb index 46954c534d..50e3ea89b4 100644 --- a/lib/rubygems/core_ext/kernel_require.rb +++ b/lib/rubygems/core_ext/kernel_require.rb @@ -62,6 +62,8 @@ module Kernel Kernel.send(:gem, spec.name, Gem::Requirement.default_prerelease) unless resolved_path + + next end # If there are no unresolved deps, then we can use just try diff --git a/test/rubygems/test_require.rb b/test/rubygems/test_require.rb index b3926afe15..7f5584ea8a 100644 --- a/test/rubygems/test_require.rb +++ b/test/rubygems/test_require.rb @@ -540,6 +540,26 @@ class TestGemRequire < Gem::TestCase assert_equal %w[default-3.0.0.rc2], loaded_spec_names end + def test_default_gem_with_unresolved_gems_depending_on_it + net_http_old = util_spec "net-http", "0.1.1", nil, "lib/net/http.rb" + install_gem net_http_old + + net_http_default = new_default_spec "net-http", "0.3.0", nil, "net/http.rb" + install_default_gems net_http_default + + faraday_1 = util_spec "faraday", "1", { "net-http" => ">= 0" } + install_gem faraday_1 + + faraday_2 = util_spec "faraday", "2", { "net-http" => ">= 0" } + install_gem faraday_2 + + chef = util_spec "chef", "1", { "faraday" => [">= 1", "< 3"] }, "lib/chef.rb" + install_gem chef + + assert_require "chef" + assert_require "net/http" + end + def loaded_spec_names Gem.loaded_specs.values.map(&:full_name).sort end |
