diff options
author | Colby Swandale <hello@colby.fyi> | 2018-05-20 17:41:18 +1000 |
---|---|---|
committer | Colby Swandale <hello@colby.fyi> | 2018-06-06 21:15:52 +1000 |
commit | 3f64291ec5b8d848f3fab18a26fc0b501d9a62e0 (patch) | |
tree | b1dbe2b1bae8a838799cb09a17e3924ff623d5b7 | |
parent | 0c5d3b8c1f391aa5175321675ecd91ee6a1f231b (diff) | |
download | bundler-3f64291ec5b8d848f3fab18a26fc0b501d9a62e0.tar.gz |
add option to Bundler#mkdir_p to force Bundler to not use sudo
-rw-r--r-- | lib/bundler.rb | 4 | ||||
-rw-r--r-- | spec/bundler/bundler_spec.rb | 28 |
2 files changed, 30 insertions, 2 deletions
diff --git a/lib/bundler.rb b/lib/bundler.rb index 9944ebd051..3239e83885 100644 --- a/lib/bundler.rb +++ b/lib/bundler.rb @@ -373,8 +373,8 @@ EOF @requires_sudo = settings.allow_sudo? && sudo_present && sudo_needed end - def mkdir_p(path) - if requires_sudo? + def mkdir_p(path, options = {}) + if requires_sudo? && !options[:no_sudo] sudo "mkdir -p '#{path}'" unless File.exist?(path) else SharedHelpers.filesystem_access(path, :write) do |p| diff --git a/spec/bundler/bundler_spec.rb b/spec/bundler/bundler_spec.rb index 131146119e..ecff1b0d28 100644 --- a/spec/bundler/bundler_spec.rb +++ b/spec/bundler/bundler_spec.rb @@ -190,6 +190,34 @@ EOF end end + describe "#mkdir_p" do + it "creates a folder at the given path" do + install_gemfile <<-G + source "file://#{gem_repo1}" + gem "rack" + G + + Bundler.mkdir_p(bundled_app.join("foo", "bar")) + expect(bundled_app.join("foo", "bar")).to exist + end + + context "when mkdir_p requires sudo" do + it "creates a new folder using sudo" do + expect(Bundler).to receive(:requires_sudo?).and_return(true) + expect(Bundler).to receive(:sudo).and_return true + Bundler.mkdir_p(bundled_app.join("foo")) + end + end + + context "with :no_sudo option" do + it "forces mkdir_p to not use sudo" do + expect(Bundler).to receive(:requires_sudo?).and_return(true) + expect(Bundler).to_not receive(:sudo) + Bundler.mkdir_p(bundled_app.join("foo"), :no_sudo => true) + end + end + end + describe "#user_home" do context "home directory is set" do it "should return the user home" do |