aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbronzdoc <lsagastume1990@gmail.com>2020-07-28 22:15:09 -0600
committerHiroshi SHIBATA <hsbt@ruby-lang.org>2020-07-31 21:07:19 +0900
commit00bdac18cffce3fb74aa596c828a09e7d52affcd (patch)
treecaacb09ca7d02c5e821979bb9d1f099b0e98f2eb
parent985309ac38c212de327e419ad4a7bcf9e7b28267 (diff)
downloadruby-00bdac18cffce3fb74aa596c828a09e7d52affcd.tar.gz
[rubygems/rubygems] Warn on duplicate dependency in a specification
https://github.com/rubygems/rubygems/commit/af3e5f7883
-rw-r--r--lib/rubygems/specification.rb4
-rw-r--r--test/rubygems/test_gem_specification.rb7
2 files changed, 11 insertions, 0 deletions
diff --git a/lib/rubygems/specification.rb b/lib/rubygems/specification.rb
index 5e326e081f..d3d6d9ca20 100644
--- a/lib/rubygems/specification.rb
+++ b/lib/rubygems/specification.rb
@@ -556,6 +556,10 @@ class Gem::Specification < Gem::BasicSpecification
# spec.add_runtime_dependency 'example', '~> 1.1', '>= 1.1.4'
def add_runtime_dependency(gem, *requirements)
+ if requirements.uniq.size != requirements.size
+ warn "WARNING: duplicate dependency #{requirements}"
+ end
+
add_dependency_with_type(gem, :runtime, requirements)
end
diff --git a/test/rubygems/test_gem_specification.rb b/test/rubygems/test_gem_specification.rb
index c4da82373a..cd00f74c93 100644
--- a/test/rubygems/test_gem_specification.rb
+++ b/test/rubygems/test_gem_specification.rb
@@ -3051,6 +3051,13 @@ Please report a bug if this causes problems.
end
end
+ def test_duplicate_runtime_dependency
+ expected = "WARNING: duplicate dependency [\"~> 3.0\", \"~> 3.0\"]\n"
+ assert_output nil, expected do
+ @a1.add_runtime_dependency "b", "~> 3.0", "~> 3.0"
+ end
+ end
+
def set_orig(cls)
s_cls = cls.singleton_class
s_cls.send :alias_method, :orig_unresolved_deps , :unresolved_deps