mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
[rubygems/rubygems] Fix regression with old marshaled specs having null required_rubygems_version
https://github.com/rubygems/rubygems/commit/91f07a0208
This commit is contained in:
parent
39c36a5cf4
commit
e7249294fb
2 changed files with 60 additions and 0 deletions
|
@ -27,6 +27,13 @@ module Bundler
|
|||
@platform = _remote_specification.platform
|
||||
end
|
||||
|
||||
# A fallback is included because the original version of the specification
|
||||
# API didn't include that field, so some marshalled specs in the index have it
|
||||
# set to +nil+.
|
||||
def required_rubygems_version
|
||||
@required_rubygems_version ||= _remote_specification.required_rubygems_version || Gem::Requirement.default
|
||||
end
|
||||
|
||||
def full_name
|
||||
if platform == Gem::Platform::RUBY || platform.nil?
|
||||
"#{@name}-#{@version}"
|
||||
|
|
|
@ -1443,4 +1443,57 @@ RSpec.describe "bundle install with gems on multiple sources" do
|
|||
L
|
||||
end
|
||||
end
|
||||
|
||||
context "when default source includes old gems with nil required_rubygems_version" do
|
||||
before do
|
||||
build_repo2 do
|
||||
build_gem "ruport", "1.7.0.3" do |s|
|
||||
s.add_dependency "pdf-writer", "1.1.8"
|
||||
end
|
||||
end
|
||||
|
||||
build_repo gem_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 "ruport", "= 1.7.0.3", :source => "https://localgemserver.test/extra"
|
||||
G
|
||||
end
|
||||
|
||||
it "handles that fine" do
|
||||
bundle "install", :artifice => "compact_index_extra", :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)
|
||||
|
||||
GEM
|
||||
remote: https://localgemserver.test/extra/
|
||||
specs:
|
||||
ruport (1.7.0.3)
|
||||
pdf-writer (= 1.1.8)
|
||||
|
||||
PLATFORMS
|
||||
#{specific_local_platform}
|
||||
|
||||
DEPENDENCIES
|
||||
ruport (= 1.7.0.3)!
|
||||
|
||||
BUNDLED WITH
|
||||
#{Bundler::VERSION}
|
||||
L
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue