diff options
author | David RodrÃguez <deivid.rodriguez@riseup.net> | 2019-02-28 17:48:47 +0100 |
---|---|---|
committer | David RodrÃguez <deivid.rodriguez@riseup.net> | 2019-03-01 11:03:14 +0100 |
commit | 6b6d56111e3360eaf2bececb775ea34492753a42 (patch) | |
tree | 32bc71ebb4bce74ce94df9d0340835d6260ffccb | |
parent | 39904ba9e655f5fed28d052f98e21444fdd716d9 (diff) | |
download | bundler-6b6d56111e3360eaf2bececb775ea34492753a42.tar.gz |
Lighther "prefer gems.rb" deprecation
The previous logic is unclear to me. It seemed to try to detect only
"multiple gemfile situations", but it was doing it incorrectly, I think.
The new message is printed _only_ if both gems.rb and Gemfile are
detected in the same project. And recommends sticking with gems.rb. But
we are not yet deprecating "Gemfile" other than that.
-rw-r--r-- | lib/bundler/shared_helpers.rb | 13 | ||||
-rw-r--r-- | spec/other/major_deprecation_spec.rb | 33 |
2 files changed, 38 insertions, 8 deletions
diff --git a/lib/bundler/shared_helpers.rb b/lib/bundler/shared_helpers.rb index 996f7b3fd4..0f4f54dced 100644 --- a/lib/bundler/shared_helpers.rb +++ b/lib/bundler/shared_helpers.rb @@ -157,11 +157,16 @@ module Bundler 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) diff --git a/spec/other/major_deprecation_spec.rb b/spec/other/major_deprecation_spec.rb index 8aa6005529..ae9253fef5 100644 --- a/spec/other/major_deprecation_spec.rb +++ b/spec/other/major_deprecation_spec.rb @@ -82,15 +82,32 @@ RSpec.describe "major deprecations" do 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 @@ -126,8 +143,16 @@ RSpec.describe "major deprecations" do RUBY end - it "should print a single deprecation warning" do - 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. 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 + + 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 |