diff options
| author | David RodrÃguez <deivid.rodriguez@riseup.net> | 2019-08-16 14:02:03 +0200 |
|---|---|---|
| committer | Hiroshi SHIBATA <hsbt@ruby-lang.org> | 2019-08-18 13:44:03 +0900 |
| commit | cc644c7116c7e540809e381be9d16a2f29a45f43 (patch) | |
| tree | de80a45178621327d790162107125a159eea364d | |
| parent | a02dbcecb15bff9c2a21f5d5e021707a3b150a57 (diff) | |
[bundler/bundler] Fix `bundle doctor` command
Previously `bundle doctor` would fail on any bundle that does not
include git gems or plugins. This is because the previously used
`Bundler.home` does not exist unless the bundle includes git gems or
plugins. For example, with `bundle config set path .bundle`, it points
to which does not exist unless this kind of gems exist in the Gemfile.
The name `Bundler.home` is really unfortunate, it should probably be
have more descriptive name, and be private. But for now I just want to
make `bundle doctor` usable.
https://github.com/bundler/bundler/commit/5531a18c1e
| -rw-r--r-- | lib/bundler/cli/doctor.rb | 2 | ||||
| -rw-r--r-- | spec/bundler/commands/doctor_spec.rb | 10 |
2 files changed, 9 insertions, 3 deletions
diff --git a/lib/bundler/cli/doctor.rb b/lib/bundler/cli/doctor.rb index 1b3913a300..fcf139ed1e 100644 --- a/lib/bundler/cli/doctor.rb +++ b/lib/bundler/cli/doctor.rb @@ -100,7 +100,7 @@ module Bundler files_not_readable_or_writable = [] files_not_rw_and_owned_by_different_user = [] files_not_owned_by_current_user_but_still_rw = [] - Find.find(Bundler.home.to_s).each do |f| + Find.find(Bundler.bundle_path.to_s).each do |f| if !File.writable?(f) || !File.readable?(f) if File.stat(f).uid != Process.uid files_not_rw_and_owned_by_different_user << f diff --git a/spec/bundler/commands/doctor_spec.rb b/spec/bundler/commands/doctor_spec.rb index 4198678baa..d829f00092 100644 --- a/spec/bundler/commands/doctor_spec.rb +++ b/spec/bundler/commands/doctor_spec.rb @@ -22,11 +22,17 @@ RSpec.describe "bundle doctor" do end end + it "succeeds on a sane installation" do + bundle :doctor + + expect(exitstatus).to eq(0) + end + context "when all files in home are readable/writable" do before(:each) do stat = double("stat") unwritable_file = double("file") - allow(Find).to receive(:find).with(Bundler.home.to_s) { [unwritable_file] } + allow(Find).to receive(:find).with(Bundler.bundle_path.to_s) { [unwritable_file] } allow(File).to receive(:stat).with(unwritable_file) { stat } allow(stat).to receive(:uid) { Process.uid } allow(File).to receive(:writable?).with(unwritable_file) { true } @@ -66,7 +72,7 @@ RSpec.describe "bundle doctor" do before(:each) do @stat = double("stat") @unwritable_file = double("file") - allow(Find).to receive(:find).with(Bundler.home.to_s) { [@unwritable_file] } + allow(Find).to receive(:find).with(Bundler.bundle_path.to_s) { [@unwritable_file] } allow(File).to receive(:stat).with(@unwritable_file) { @stat } end |
