summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHiroshi SHIBATA <hsbt@ruby-lang.org>2026-05-01 12:45:02 +0900
committergit <svn-admin@ruby-lang.org>2026-05-07 09:24:54 +0000
commitd763aec78246856d26b58e5cd88d40be2e9c2e96 (patch)
treec426abdacde21cf9c032301ee10fb4bf79f2b81f
parent41a558ae768d08fba9c88a6c51ecc11cce2fc0b3 (diff)
[ruby/rubygems] Cover prerelease pin via override
When the Gemfile dependency does not request a prerelease, Resolver::Package's prerelease policy normally filters them out. Because Definition#expanded_dependencies now feeds the effective (override-applied) dep into Resolver::Base, an override that pins an exact prerelease propagates into the package's prerelease decision and the prerelease becomes selectable. Lock that contract in with an integration test on a has_prerelease 1.0 / 1.1.pre fixture. https://github.com/ruby/rubygems/commit/a40b224354 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
-rw-r--r--spec/bundler/install/gemfile/override_spec.rb15
1 files changed, 15 insertions, 0 deletions
diff --git a/spec/bundler/install/gemfile/override_spec.rb b/spec/bundler/install/gemfile/override_spec.rb
index d3fdace4ae..4f2eb8544d 100644
--- a/spec/bundler/install/gemfile/override_spec.rb
+++ b/spec/bundler/install/gemfile/override_spec.rb
@@ -50,5 +50,20 @@ RSpec.describe "override DSL" do
expect(the_bundle).to include_gems "myrack 0.9.1"
end
+
+ it "pins a prerelease version that the Gemfile dependency would otherwise filter out" do
+ build_repo2 do
+ build_gem "has_prerelease", "1.0"
+ build_gem "has_prerelease", "1.1.pre"
+ end
+
+ install_gemfile <<-G
+ source "https://gem.repo2"
+ override "has_prerelease", version: "= 1.1.pre"
+ gem "has_prerelease"
+ G
+
+ expect(the_bundle).to include_gems "has_prerelease 1.1.pre"
+ end
end
end