зеркало из https://github.com/github/ruby.git
[rubygems/rubygems] Fix development dependency not being added if introduced by two gemspecs
https://github.com/rubygems/rubygems/commit/adc05bf1c3
This commit is contained in:
Родитель
b8f859f0bf
Коммит
ef0705b3c2
|
@ -102,9 +102,6 @@ module Bundler
|
|||
|
||||
# if there's already a dependency with this name we try to prefer one
|
||||
if current = @dependencies.find {|d| d.name == dep.name }
|
||||
# Always prefer the dependency from the Gemfile
|
||||
@dependencies.delete(current) if current.gemspec_dev_dep?
|
||||
|
||||
if current.requirement != dep.requirement
|
||||
current_requirement_open = current.requirements_list.include?(">= 0")
|
||||
|
||||
|
@ -116,8 +113,6 @@ module Bundler
|
|||
Bundler.ui.warn "A gemspec development dependency (#{gemspec_dep.name}, #{gemspec_dep.requirement}) is being overridden by a Gemfile dependency (#{gemfile_dep.name}, #{gemfile_dep.requirement}).\n" \
|
||||
"This behaviour may change in the future. Please remove either of them, or make sure they both have the same requirement\n"
|
||||
end
|
||||
|
||||
return if dep.gemspec_dev_dep?
|
||||
else
|
||||
update_prompt = ""
|
||||
|
||||
|
@ -135,8 +130,13 @@ module Bundler
|
|||
"You specified: #{current.name} (#{current.requirement}) and #{dep.name} (#{dep.requirement})" \
|
||||
"#{update_prompt}"
|
||||
end
|
||||
elsif current.gemspec_dev_dep? || dep.gemspec_dev_dep?
|
||||
return if dep.gemspec_dev_dep?
|
||||
end
|
||||
|
||||
# Always prefer the dependency from the Gemfile
|
||||
if current.gemspec_dev_dep?
|
||||
@dependencies.delete(current)
|
||||
elsif dep.gemspec_dev_dep?
|
||||
return
|
||||
elsif current.source != dep.source
|
||||
raise GemfileError, "You cannot specify the same gem twice coming from different sources.\n" \
|
||||
"You specified that #{dep.name} (#{dep.requirement}) should come from " \
|
||||
|
|
|
@ -460,6 +460,35 @@ RSpec.describe "bundle install with gem sources" do
|
|||
expect(the_bundle).to include_gems("rubocop 1.37.1")
|
||||
end
|
||||
|
||||
it "includes the gem without warning if two gemspecs add it with the same requirement" do
|
||||
gem1 = tmp.join("my-gem-1")
|
||||
gem2 = tmp.join("my-gem-2")
|
||||
|
||||
build_lib "my-gem", path: gem1 do |s|
|
||||
s.add_development_dependency "rubocop", "~> 1.36.0"
|
||||
end
|
||||
|
||||
build_lib "my-gem-2", path: gem2 do |s|
|
||||
s.add_development_dependency "rubocop", "~> 1.36.0"
|
||||
end
|
||||
|
||||
build_repo4 do
|
||||
build_gem "rubocop", "1.36.0"
|
||||
end
|
||||
|
||||
gemfile <<~G
|
||||
source "#{file_uri_for(gem_repo4)}"
|
||||
|
||||
gemspec path: "#{gem1}"
|
||||
gemspec path: "#{gem2}"
|
||||
G
|
||||
|
||||
bundle :install
|
||||
|
||||
expect(err).to be_empty
|
||||
expect(the_bundle).to include_gems("rubocop 1.36.0")
|
||||
end
|
||||
|
||||
it "warns when a Gemfile dependency is overriding a gemspec development dependency, with different requirements" do
|
||||
build_lib "my-gem", path: bundled_app do |s|
|
||||
s.add_development_dependency "rails", ">= 5"
|
||||
|
|
Загрузка…
Ссылка в новой задаче