Skip to content

Commit

Permalink
Fix regression with old marshaled specs having null required_rubygems…
Browse files Browse the repository at this point in the history
…_version
  • Loading branch information
deivid-rodriguez committed Jan 17, 2022
1 parent bf0f4b9 commit 91f07a0
Show file tree
Hide file tree
Showing 2 changed files with 60 additions and 0 deletions.
7 changes: 7 additions & 0 deletions bundler/lib/bundler/remote_specification.rb
Expand Up @@ -27,6 +27,13 @@ def fetch_platform
@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}"
Expand Down
53 changes: 53 additions & 0 deletions bundler/spec/install/gemfile/sources_spec.rb
Expand Up @@ -1443,4 +1443,57 @@
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

0 comments on commit 91f07a0

Please sign in to comment.