diff options
author | David RodrÃguez <deivid.rodriguez@riseup.net> | 2022-04-26 14:53:55 +0200 |
---|---|---|
committer | git <svn-admin@ruby-lang.org> | 2022-04-28 15:44:02 +0900 |
commit | 5250210aa9f632a415e90deaac424ff69c37fb3e (patch) | |
tree | c54023a390d9aaf8da705d377a37704c621bfcc8 /spec/bundler | |
parent | 4210ae2158b545beda908fb29e03d23994f262e3 (diff) | |
download | ruby-5250210aa9f632a415e90deaac424ff69c37fb3e.tar.gz |
[rubygems/rubygems] Fix missing required rubygems version when using old APIs
A while ago, we fixed resolution when using old dependency endpoints to
also consider metadata dependencies, by requesting the full gemspec from
the marsahaled index, which includes this information as opposed to
these old APIs. This has made resolution slower, but correct, but also
introduced the issue that some old marshaled gemspecs don't include the
`required_rubygems_version` field because they were created with a
RubyGems version that predates its addition.
Use a default value in this case.
https://github.com/rubygems/rubygems/commit/5dc94afcc0
Co-authored-by: Ilya Dudarenko <i.dudarenko@tinkoff.ru>
Diffstat (limited to 'spec/bundler')
-rw-r--r-- | spec/bundler/install/gemfile/sources_spec.rb | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/spec/bundler/install/gemfile/sources_spec.rb b/spec/bundler/install/gemfile/sources_spec.rb index 26ecb840c7..62cad6800f 100644 --- a/spec/bundler/install/gemfile/sources_spec.rb +++ b/spec/bundler/install/gemfile/sources_spec.rb @@ -1496,4 +1496,45 @@ RSpec.describe "bundle install with gems on multiple sources" do L end end + + context "when default source uses the old API and includes old gems with nil required_rubygems_version" do + before do + build_repo4 do + build_gem "pdf-writer", "1.1.8" + end + + path = "#{gem_repo4}/#{Gem::MARSHAL_SPEC_DIR}/pdf-writer-1.1.8.gemspec.rz" + spec = Marshal.load(Bundler.rubygems.inflate(File.binread(path))) + spec.instance_variable_set(:@required_rubygems_version, nil) + File.open(path, "wb") do |f| + f.write Gem.deflate(Marshal.dump(spec)) + end + + gemfile <<~G + source "https://localgemserver.test" + + gem "pdf-writer", "= 1.1.8" + G + end + + it "handles that fine" do + bundle "install --verbose", :artifice => "endpoint", :env => { "BUNDLER_SPEC_GEM_REPO" => gem_repo4.to_s } + + expect(lockfile).to eq <<~L + GEM + remote: https://localgemserver.test/ + specs: + pdf-writer (1.1.8) + + PLATFORMS + #{specific_local_platform} + + DEPENDENCIES + pdf-writer (= 1.1.8) + + BUNDLED WITH + #{Bundler::VERSION} + L + end + end end |