[rubygems/rubygems] Warn on empty or open required_ruby_version specification attribute.
https://github.com/rubygems/rubygems/commit/e4bb33747a
This commit is contained in:
parent
1745dd2691
commit
bfb2dc8acf
@ -103,6 +103,8 @@ class Gem::SpecificationPolicy
|
|||||||
|
|
||||||
validate_dependencies
|
validate_dependencies
|
||||||
|
|
||||||
|
validate_required_ruby_version
|
||||||
|
|
||||||
validate_extensions
|
validate_extensions
|
||||||
|
|
||||||
validate_removed_attributes
|
validate_removed_attributes
|
||||||
@ -227,6 +229,12 @@ duplicate dependency on #{dep}, (#{prev.requirement}) use:
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def validate_required_ruby_version
|
||||||
|
if @specification.required_ruby_version.requirements == [Gem::Requirement::DefaultRequirement]
|
||||||
|
warning "make sure you specify the oldest ruby version constraint (like \">= 3.0\") that you want your gem to support by setting the `required_ruby_version` gemspec attribute"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
##
|
##
|
||||||
# Issues a warning for each file to be packaged which is world-readable.
|
# Issues a warning for each file to be packaged which is world-readable.
|
||||||
#
|
#
|
||||||
|
@ -1,14 +1,15 @@
|
|||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
Gem::Specification.new do |s|
|
Gem::Specification.new do |s|
|
||||||
s.name = "rubyforge"
|
s.name = "rubyforge"
|
||||||
s.version = "0.0.1"
|
s.version = "0.0.1"
|
||||||
s.platform = "ruby"
|
s.platform = "ruby"
|
||||||
s.require_paths = ["lib"]
|
s.require_paths = ["lib"]
|
||||||
s.summary = "A very bar gem"
|
s.summary = "A very bar gem"
|
||||||
s.authors = ["unknown"]
|
s.authors = ["unknown"]
|
||||||
s.license = "MIT"
|
s.license = "MIT"
|
||||||
s.homepage = "http://example.com"
|
s.homepage = "http://example.com"
|
||||||
s.files = ["README.md"]
|
s.files = ["README.md"]
|
||||||
s.rubyforge_project = "abc"
|
s.rubyforge_project = "abc"
|
||||||
|
s.required_ruby_version = ">= 1.9.3"
|
||||||
end
|
end
|
||||||
|
@ -28,6 +28,7 @@ class TestGemCommandsBuildCommand < Gem::TestCase
|
|||||||
@gem = util_spec "some_gem" do |s|
|
@gem = util_spec "some_gem" do |s|
|
||||||
s.license = "AGPL-3.0-only"
|
s.license = "AGPL-3.0-only"
|
||||||
s.files = ["README.md"]
|
s.files = ["README.md"]
|
||||||
|
s.required_ruby_version = "2.3.0"
|
||||||
end
|
end
|
||||||
|
|
||||||
@cmd = Gem::Commands::BuildCommand.new
|
@cmd = Gem::Commands::BuildCommand.new
|
||||||
@ -178,6 +179,7 @@ class TestGemCommandsBuildCommand < Gem::TestCase
|
|||||||
def test_execute_strict_with_warnings
|
def test_execute_strict_with_warnings
|
||||||
bad_gem = util_spec "some_bad_gem" do |s|
|
bad_gem = util_spec "some_bad_gem" do |s|
|
||||||
s.files = ["README.md"]
|
s.files = ["README.md"]
|
||||||
|
s.required_ruby_version = ">= 1.9.3"
|
||||||
end
|
end
|
||||||
|
|
||||||
gemspec_file = File.join(@tempdir, bad_gem.spec_name)
|
gemspec_file = File.join(@tempdir, bad_gem.spec_name)
|
||||||
|
@ -90,6 +90,7 @@ end
|
|||||||
Gem.instance_variable_set(:'@default_source_date_epoch', nil)
|
Gem.instance_variable_set(:'@default_source_date_epoch', nil)
|
||||||
|
|
||||||
@a1 = util_spec "a", "1" do |s|
|
@a1 = util_spec "a", "1" do |s|
|
||||||
|
s.required_ruby_version = ">= 2.3.0"
|
||||||
s.executable = "exec"
|
s.executable = "exec"
|
||||||
s.test_file = "test/suite.rb"
|
s.test_file = "test/suite.rb"
|
||||||
s.requirements << "A working computer"
|
s.requirements << "A working computer"
|
||||||
@ -2707,6 +2708,53 @@ duplicate dependency on c (>= 1.2.3, development), (~> 1.2) use:
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_validate_no_required_ruby_versions
|
||||||
|
util_setup_validate
|
||||||
|
|
||||||
|
Dir.chdir @tempdir do
|
||||||
|
use_ui @ui do
|
||||||
|
@a1.required_ruby_version = nil # reset
|
||||||
|
@a1.validate
|
||||||
|
end
|
||||||
|
|
||||||
|
assert_equal <<-EXPECTED, @ui.error
|
||||||
|
#{w}: make sure you specify the oldest ruby version constraint (like \">= 3.0\") that you want your gem to support by setting the `required_ruby_version` gemspec attribute
|
||||||
|
#{w}: See https://guides.rubygems.org/specification-reference/ for help
|
||||||
|
EXPECTED
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_validate_open_required_ruby_versions
|
||||||
|
util_setup_validate
|
||||||
|
|
||||||
|
Dir.chdir @tempdir do
|
||||||
|
@a1.required_ruby_version = ">= 0"
|
||||||
|
|
||||||
|
use_ui @ui do
|
||||||
|
@a1.validate
|
||||||
|
end
|
||||||
|
|
||||||
|
assert_equal <<-EXPECTED, @ui.error
|
||||||
|
#{w}: make sure you specify the oldest ruby version constraint (like \">= 3.0\") that you want your gem to support by setting the `required_ruby_version` gemspec attribute
|
||||||
|
#{w}: See https://guides.rubygems.org/specification-reference/ for help
|
||||||
|
EXPECTED
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_validate_valid_required_ruby_versions
|
||||||
|
util_setup_validate
|
||||||
|
|
||||||
|
Dir.chdir @tempdir do
|
||||||
|
@a1.required_ruby_version = ">= 2.3.0"
|
||||||
|
|
||||||
|
use_ui @ui do
|
||||||
|
@a1.validate
|
||||||
|
end
|
||||||
|
|
||||||
|
assert_equal "", @ui.error, "warning"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def test_validate_prerelease_dependencies_with_prerelease_version
|
def test_validate_prerelease_dependencies_with_prerelease_version
|
||||||
util_setup_validate
|
util_setup_validate
|
||||||
|
|
||||||
@ -3683,6 +3731,7 @@ Did you mean 'Ruby'?
|
|||||||
|
|
||||||
Dir.chdir @tempdir do
|
Dir.chdir @tempdir do
|
||||||
@m2 = quick_gem "m", "2" do |s|
|
@m2 = quick_gem "m", "2" do |s|
|
||||||
|
s.required_ruby_version = ">= 2.3.0"
|
||||||
s.files = %w[lib/code.rb]
|
s.files = %w[lib/code.rb]
|
||||||
s.licenses = "BSD-2-Clause"
|
s.licenses = "BSD-2-Clause"
|
||||||
s.metadata = {
|
s.metadata = {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user