Skip to content
This repository was archived by the owner on Apr 14, 2021. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 9 additions & 4 deletions lib/bundler/shared_helpers.rb
Original file line number Diff line number Diff line change
Expand Up @@ -157,11 +157,16 @@ def print_major_deprecations!
multiple_gemfiles = search_up(".") do |dir|
gemfiles = gemfile_names.select {|gf| File.file? File.expand_path(gf, dir) }
next if gemfiles.empty?
break false if gemfiles.size == 1
break gemfiles.size != 1
end
return unless multiple_gemfiles && Bundler.bundler_major_version == 1
Bundler::SharedHelpers.major_deprecation 2, \
"gems.rb and gems.locked will be preferred to Gemfile and Gemfile.lock."
return unless multiple_gemfiles
diagnosis = "Multiple gemfiles (gems.rb and Gemfile) detected."
advice = if Bundler.feature_flag.prefer_gems_rb?
"Make sure you remove Gemfile and Gemfile.lock since bundler is ignoring them in favor of gems.rb and gems.rb.locked."
else
"The gems.rb and gems.rb.locked files are currently ignored, but they will get used as soon as you delete your Gemfile and Gemfile.lock files."
end
Bundler.ui.warn [diagnosis, advice].join(" ")
end

def trap(signal, override = false, &block)
Expand Down
37 changes: 32 additions & 5 deletions spec/other/major_deprecation_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@
end
end

context "when bundle is run" do
context "when bundle install is run" do
it "should not warn about gems.rb" do
create_file "gems.rb", <<-G
source "file://#{gem_repo1}"
Expand All @@ -82,15 +82,32 @@
expect(warnings).not_to have_major_deprecation
end

xit "should print a Gemfile deprecation warning" do
it "should print a proper warning when both gems.rb and Gemfile present, and use Gemfile", :bundler => "< 2" do
create_file "gems.rb"
install_gemfile! <<-G
source "file://#{gem_repo1}"
gem "rack"
G

expect(warnings).to include(
"Multiple gemfiles (gems.rb and Gemfile) detected. The gems.rb and gems.rb.locked files are currently ignored, but they will get used as soon as you delete your Gemfile and Gemfile.lock files."
)

expect(the_bundle).to include_gem "rack 1.0"
end

it "should print a proper warning when both gems.rb and Gemfile present, and use gems.rb", :bundler => "2" do
create_file "gems.rb"
install_gemfile! <<-G
source "file://#{gem_repo1}"
gem "rack"
G

expect(warnings).to have_major_deprecation a_string_including("gems.rb and gems.locked will be preferred to Gemfile and Gemfile.lock.")
expect(warnings).to include(
"Multiple gemfiles (gems.rb and Gemfile) detected. Make sure you remove Gemfile and Gemfile.lock since bundler is ignoring them in favor of gems.rb and gems.rb.locked."
)

expect(the_bundle).not_to include_gem "rack 1.0"
end

context "with flags" do
Expand All @@ -108,7 +125,7 @@
end

context "when Bundler.setup is run in a ruby script" do
it "should print a single deprecation warning" do
before do
create_file "gems.rb"
install_gemfile! <<-G
source "file://#{gem_repo1}"
Expand All @@ -124,8 +141,18 @@
Bundler.setup
Bundler.setup
RUBY
end

it "should print a single deprecation warning", :bundler => "< 2" do
expect(warnings).to include(
"Multiple gemfiles (gems.rb and Gemfile) detected. The gems.rb and gems.rb.locked files are currently ignored, but they will get used as soon as you delete your Gemfile and Gemfile.lock files."
)
end

expect(warnings).to have_major_deprecation("gems.rb and gems.locked will be preferred to Gemfile and Gemfile.lock.")
it "should print a single deprecation warning", :bundler => "2" do
expect(warnings).to include(
"Multiple gemfiles (gems.rb and Gemfile) detected. Make sure you remove Gemfile and Gemfile.lock since bundler is ignoring them in favor of gems.rb and gems.rb.locked."
)
end
end

Expand Down