diff options
author | David RodrÃguez <deivid.rodriguez@riseup.net> | 2022-05-29 13:51:13 +0200 |
---|---|---|
committer | git <svn-admin@ruby-lang.org> | 2022-05-29 22:19:35 +0900 |
commit | 373dabe00a71214e12702ff1ccda88f865b504c4 (patch) | |
tree | 64b35011b1fba5fda87338eca9d6e05cde83013c | |
parent | 931b013b9fa51f93db5b846882e988c7a8e3582f (diff) |
[rubygems/rubygems] Ignore `Errno::EPERM` errors when creating `bundler.lock`
This kind of error can happen when setting `GEM_HOME` to a path
under MacOS System Integrity Protection.
We ignore the error. Any permission issues should be better handled
further down the line.
https://github.com/rubygems/rubygems/commit/174cb66863
-rw-r--r-- | lib/bundler/process_lock.rb | 2 | ||||
-rw-r--r-- | spec/bundler/install/process_lock_spec.rb | 11 |
2 files changed, 12 insertions, 1 deletions
diff --git a/lib/bundler/process_lock.rb b/lib/bundler/process_lock.rb index a5cc614e20..af7cd8a05f 100644 --- a/lib/bundler/process_lock.rb +++ b/lib/bundler/process_lock.rb @@ -12,7 +12,7 @@ module Bundler yield f.flock(File::LOCK_UN) end - rescue Errno::EACCES, Errno::ENOLCK, Errno::ENOTSUP + rescue Errno::EACCES, Errno::ENOLCK, Errno::ENOTSUP, Errno::EPERM # In the case the user does not have access to # create the lock file or is using NFS where # locks are not available we skip locking. diff --git a/spec/bundler/install/process_lock_spec.rb b/spec/bundler/install/process_lock_spec.rb index dac0d34bc4..e2b8d20607 100644 --- a/spec/bundler/install/process_lock_spec.rb +++ b/spec/bundler/install/process_lock_spec.rb @@ -31,5 +31,16 @@ RSpec.describe "process lock spec" do expect(processed).to eq true end end + + context "when creating a lock raises Errno::EPERM" do + before { allow(File).to receive(:open).and_raise(Errno::EPERM) } + + it "skips creating the lock file and yields" do + processed = false + Bundler::ProcessLock.lock(default_bundle_path) { processed = true } + + expect(processed).to eq true + end + end end end |