[rubygems/rubygems] Remove Gem::Specification#mark_version

This gets in the middle if we ever start allowing to build as if using a
different RubyGems version than the one being run.

This could be useful to make `gem rebuild` a little more usable, and
it's already done by Bundler specs which already make this method a noop
when they need this.

I'm not sure forcefully setting this, even if user explicitly specified
something else is helpful.

Since this could potentially prevent gems explicitly setting a constant
RubyGems version from building, I changed the error of incorrect
RubyGems version from a hard error to a warning, since it will start
happening in those cases if we stop overwriting the version.

https://github.com/rubygems/rubygems/commit/45676af80d
This commit is contained in:
David Rodriguez 2024-02-05 20:19:40 +01:00 committed by git
parent 0948b6a592
commit 281df1e495
6 changed files with 13 additions and 22 deletions

View File

@ -294,7 +294,6 @@ class Gem::Package
Gem.load_yaml
@spec.mark_version
@spec.validate true, strict_validation unless skip_validation
setup_signer(

View File

@ -194,7 +194,7 @@ class Gem::Specification < Gem::BasicSpecification
NOT_FOUND = Struct.new(:to_spec, :this).new # :nodoc:
# Tracking removed method calls to warn users during build time.
REMOVED_METHODS = [:rubyforge_project=].freeze # :nodoc:
REMOVED_METHODS = [:rubyforge_project=, :mark_version].freeze # :nodoc:
def removed_method_calls
@removed_method_calls ||= []
end
@ -1874,8 +1874,6 @@ class Gem::Specification < Gem::BasicSpecification
end
def encode_with(coder) # :nodoc:
mark_version
coder.add "name", @name
coder.add "version", @version
platform = case @original_platform
@ -2170,13 +2168,6 @@ class Gem::Specification < Gem::BasicSpecification
@spec_file = nil
end
##
# Sets the rubygems_version to the current RubyGems version.
def mark_version
@rubygems_version = Gem::VERSION
end
##
# Track removed method calls to warn about during build time.
# Warn about unknown attributes while loading a spec.
@ -2494,7 +2485,6 @@ class Gem::Specification < Gem::BasicSpecification
# still have their default values are omitted.
def to_ruby
mark_version
result = []
result << "# -*- encoding: utf-8 -*-"
result << "#{Gem::StubSpecification::PREFIX}#{name} #{version} #{platform} #{raw_require_paths.join("\0")}"

View File

@ -274,7 +274,9 @@ duplicate dependency on #{dep}, (#{prev.requirement}) use:
return if rubygems_version == Gem::VERSION
error "expected RubyGems version #{Gem::VERSION}, was #{rubygems_version}"
warning "expected RubyGems version #{Gem::VERSION}, was #{rubygems_version}"
@specification.rubygems_version = Gem::VERSION
end
def validate_required_attributes

View File

@ -518,7 +518,6 @@ module Spec
if options[:rubygems_version]
@spec.rubygems_version = options[:rubygems_version]
def @spec.mark_version; end
def @spec.validate(*); end
end

View File

@ -1281,7 +1281,6 @@ class TestGem < Gem::TestCase
def test_self_try_activate_missing_extensions
spec = util_spec "ext", "1" do |s|
s.extensions = %w[ext/extconf.rb]
s.mark_version
s.installed_by_version = v("2.2")
end

View File

@ -56,7 +56,6 @@ end
s.add_dependency "jabber4r", "> 0.0.0"
s.add_dependency "pqa", ["> 0.4", "<= 0.6"]
s.mark_version
s.files = %w[lib/code.rb]
end
end
@ -69,7 +68,6 @@ end
s.license = "MIT"
s.platform = platform
s.mark_version
s.files = %w[lib/code.rb]
s.installed_by_version = v("2.2")
end
@ -96,7 +94,6 @@ end
s.requirements << "A working computer"
s.license = "MIT"
s.mark_version
s.files = %w[lib/code.rb]
end
@ -3187,7 +3184,7 @@ or set it to nil if you don't want to specify a license.
end
def test_removed_methods
assert_equal Gem::Specification::REMOVED_METHODS, [:rubyforge_project=]
assert_equal Gem::Specification::REMOVED_METHODS, [:rubyforge_project=, :mark_version]
end
def test_validate_removed_rubyforge_project
@ -3480,12 +3477,17 @@ Did you mean 'Ruby'?
util_setup_validate
@a1.rubygems_version = "3"
e = assert_raise Gem::InvalidSpecificationException do
use_ui @ui do
@a1.validate
end
assert_equal "expected RubyGems version #{Gem::VERSION}, was 3",
e.message
expected = <<~EXPECTED
#{w}: expected RubyGems version #{Gem::VERSION}, was 3
#{w}: See https://guides.rubygems.org/specification-reference/ for help
EXPECTED
assert_equal expected, @ui.error
end
def test_validate_specification_version