[rubygems/rubygems] Freeze more strings in generated gemspecs

Specifically, this will have frozen string literals for:
- Gem platform tuple entries
- Gem::Version strings
- Gem::Specification#installed_by_version
- Dependency requirement strings

https://github.com/rubygems/rubygems/commit/6195da5bdb
This commit is contained in:
Samuel Giddins 2023-09-18 17:30:34 -07:00 committed by git
parent 7f407e0240
commit 02fa2acbde
2 changed files with 18 additions and 19 deletions

View File

@ -2363,12 +2363,12 @@ class Gem::Specification < Gem::BasicSpecification
when Hash then
seg = obj.keys.sort.map {|k| "#{k.to_s.dump} => #{obj[k].to_s.dump}" }
"{ #{seg.join(", ")} }"
when Gem::Version then obj.to_s.dump
when Gem::Version then ruby_code(obj.to_s)
when DateLike then obj.strftime("%Y-%m-%d").dump
when Time then obj.strftime("%Y-%m-%d").dump
when Numeric then obj.inspect
when true, false, nil then obj.inspect
when Gem::Platform then "Gem::Platform.new(#{obj.to_a.inspect})"
when Gem::Platform then "Gem::Platform.new(#{ruby_code obj.to_a})"
when Gem::Requirement then
list = obj.as_list
"Gem::Requirement.new(#{ruby_code(list.size == 1 ? obj.to_s : list)})"
@ -2533,12 +2533,12 @@ class Gem::Specification < Gem::BasicSpecification
end
if String === signing_key
result << " s.signing_key = #{signing_key.dump}.freeze"
result << " s.signing_key = #{ruby_code signing_key}"
end
if @installed_by_version
result << nil
result << " s.installed_by_version = \"#{Gem::VERSION}\" if s.respond_to? :installed_by_version"
result << " s.installed_by_version = #{ruby_code Gem::VERSION} if s.respond_to? :installed_by_version"
end
unless dependencies.empty?
@ -2547,9 +2547,8 @@ class Gem::Specification < Gem::BasicSpecification
result << nil
dependencies.each do |dep|
req = dep.requirements_list.inspect
dep.instance_variable_set :@type, :runtime if dep.type.nil? # HACK
result << " s.add_#{dep.type}_dependency(%q<#{dep.name}>.freeze, #{req})"
result << " s.add_#{dep.type}_dependency(%q<#{dep.name}>.freeze, #{ruby_code dep.requirements_list})"
end
end

View File

@ -2291,7 +2291,7 @@ dependencies: []
Gem::Specification.new do |s|
s.name = "a".freeze
s.version = "2"
s.version = "2".freeze
s.required_rubygems_version = Gem::Requirement.new(\"> 0\".freeze) if s.respond_to? :required_rubygems_version=
s.require_paths = ["lib".freeze, "other".freeze]
@ -2306,7 +2306,7 @@ Gem::Specification.new do |s|
s.specification_version = #{Gem::Specification::CURRENT_SPECIFICATION_VERSION}
s.add_runtime_dependency(%q<b>.freeze, [\"= 1\"])
s.add_runtime_dependency(%q<b>.freeze, [\"= 1\".freeze])
end
SPEC
@ -2331,7 +2331,7 @@ end
Gem::Specification.new do |s|
s.name = "a".freeze
s.version = "2"
s.version = "2".freeze
s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
s.require_paths = ["lib".freeze]
@ -2364,7 +2364,7 @@ end
Gem::Specification.new do |s|
s.name = "a".freeze
s.version = "2"
s.version = "2".freeze
s.required_rubygems_version = Gem::Requirement.new(\"> 0\".freeze) if s.respond_to? :required_rubygems_version=
s.require_paths = ["lib".freeze]
@ -2376,11 +2376,11 @@ Gem::Specification.new do |s|
s.rubygems_version = "#{Gem::VERSION}".freeze
s.summary = "this is a summary".freeze
s.installed_by_version = "#{Gem::VERSION}" if s.respond_to? :installed_by_version
s.installed_by_version = "#{Gem::VERSION}".freeze if s.respond_to? :installed_by_version
s.specification_version = #{Gem::Specification::CURRENT_SPECIFICATION_VERSION}
s.add_runtime_dependency(%q<b>.freeze, [\"= 1\"])
s.add_runtime_dependency(%q<b>.freeze, ["= 1".freeze])
end
SPEC
@ -2400,7 +2400,7 @@ end
ruby_code = @c1.to_ruby
local = Gem::Platform.local
expected_platform = "[#{local.cpu.inspect}, #{local.os.inspect}, #{local.version.inspect}]"
expected_platform = "[#{local.cpu.inspect}.freeze, #{local.os.inspect}.freeze, #{local.version.inspect}.freeze]"
stub_require_paths =
@c1.instance_variable_get(:@require_paths).join "\u0000"
extensions = @c1.extensions.join "\u0000"
@ -2412,7 +2412,7 @@ end
Gem::Specification.new do |s|
s.name = "a".freeze
s.version = "1"
s.version = "1".freeze
s.platform = Gem::Platform.new(#{expected_platform})
s.required_rubygems_version = Gem::Requirement.new(\">= 0\".freeze) if s.respond_to? :required_rubygems_version=
@ -2433,9 +2433,9 @@ Gem::Specification.new do |s|
s.specification_version = 4
s.add_runtime_dependency(%q<rake>.freeze, [\"> 0.4\"])
s.add_runtime_dependency(%q<jabber4r>.freeze, [\"> 0.0.0\"])
s.add_runtime_dependency(%q<pqa>.freeze, [\"> 0.4\", \"<= 0.6\"])
s.add_runtime_dependency(%q<rake>.freeze, [\"> 0.4\".freeze])
s.add_runtime_dependency(%q<jabber4r>.freeze, [\"> 0.0.0\".freeze])
s.add_runtime_dependency(%q<pqa>.freeze, [\"> 0.4\".freeze, \"<= 0.6\".freeze])
end
SPEC
@ -2451,7 +2451,7 @@ end
s.add_dependency "b", ["~> 1.0", ">= 1.0.0"]
end
assert_includes spec.to_ruby, '"~> 1.0", ">= 1.0.0"'
assert_includes spec.to_ruby, '"~> 1.0".freeze, ">= 1.0.0".freeze'
end
def test_to_ruby_legacy
@ -3665,7 +3665,7 @@ Did you mean 'Ruby'?
Gem::Specification.new do |s|
s.name = "m".freeze
s.version = "1"
s.version = "1".freeze
s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
s.metadata = { "one" => "two", "two" => "three" } if s.respond_to? :metadata=