[rubygems/rubygems] Override initialize in bundle rubygems_ext for NameTuple

https://github.com/rubygems/rubygems/commit/f63ce682d2
This commit is contained in:
Martin Emde 2023-12-08 12:13:49 -08:00 коммит произвёл git
Родитель b673b5b432
Коммит e186cebe42
2 изменённых файлов: 30 добавлений и 5 удалений

Просмотреть файл

@ -352,11 +352,16 @@ module Gem
require "rubygems/name_tuple"
class NameTuple
def self.new(name, version, platform="ruby")
# Versions of RubyGems before about 3.5.0 don't to_s the platform.
unless Gem::NameTuple.new("a", Gem::Version.new("1"), Gem::Platform.new("x86_64-linux")).platform.is_a?(String)
alias_method :initialize_with_platform, :initialize
def initialize(name, version, platform=Gem::Platform::RUBY)
if Gem::Platform === platform
super(name, version, platform.to_s)
initialize_with_platform(name, version, platform.to_s)
else
super
initialize_with_platform(name, version, platform)
end
end
end

Просмотреть файл

@ -63,3 +63,23 @@ RSpec.describe "Gem::SourceIndex#refresh!" do
run "Gem::SourceIndex.new([]).refresh!", raise_on_error: false
end
end
RSpec.describe "Gem::NameTuple" do
describe "#initialize" do
it "creates a Gem::NameTuple with equality regardless of platform type" do
gem_platform = Gem::NameTuple.new "a", v("1"), pl("x86_64-linux")
str_platform = Gem::NameTuple.new "a", v("1"), "x86_64-linux"
expect(gem_platform).to eq(str_platform)
expect(gem_platform.hash).to eq(str_platform.hash)
expect(gem_platform.to_a).to eq(str_platform.to_a)
end
end
describe "#lock_name" do
it "returns the lock name" do
expect(Gem::NameTuple.new("a", v("1.0.0"), pl("x86_64-linux")).lock_name).to eq("a (1.0.0-x86_64-linux)")
expect(Gem::NameTuple.new("a", v("1.0.0"), "ruby").lock_name).to eq("a (1.0.0)")
expect(Gem::NameTuple.new("a", v("1.0.0")).lock_name).to eq("a (1.0.0)")
end
end
end