diff options
| author | Hiroshi SHIBATA <hsbt@ruby-lang.org> | 2026-05-01 12:45:02 +0900 |
|---|---|---|
| committer | git <svn-admin@ruby-lang.org> | 2026-05-07 09:24:54 +0000 |
| commit | d763aec78246856d26b58e5cd88d40be2e9c2e96 (patch) | |
| tree | c426abdacde21cf9c032301ee10fb4bf79f2b81f | |
| parent | 41a558ae768d08fba9c88a6c51ecc11cce2fc0b3 (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.rb | 15 |
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 |
