diff options
author | David RodrÃguez <deivid.rodriguez@riseup.net> | 2018-12-18 12:10:54 +0100 |
---|---|---|
committer | David RodrÃguez <deivid.rodriguez@riseup.net> | 2018-12-19 10:26:45 +0100 |
commit | ac60650be8ba8904aeaa4a0b11318612d2254eb0 (patch) | |
tree | 51e16631b722e3af73923391146d4488c2cd73ec | |
parent | 777b7b335d3656c4623307959698247b74836fd9 (diff) | |
download | bundler-ac60650be8ba8904aeaa4a0b11318612d2254eb0.tar.gz |
Introduce `with_unbundled_env`
As a replacement to `with_clean_env`.
-rw-r--r-- | lib/bundler.rb | 5 | ||||
-rw-r--r-- | spec/runtime/with_unbundled_env_spec.rb | 16 |
2 files changed, 21 insertions, 0 deletions
diff --git a/lib/bundler.rb b/lib/bundler.rb index 12b5daea9a..84634be933 100644 --- a/lib/bundler.rb +++ b/lib/bundler.rb @@ -324,6 +324,11 @@ EOF with_env(clean_env) { yield } end + # Run block with all bundler-related variables removed + def with_unbundled_env + with_env(unbundled_env) { yield } + end + def clean_system(*args) with_clean_env { Kernel.system(*args) } end diff --git a/spec/runtime/with_unbundled_env_spec.rb b/spec/runtime/with_unbundled_env_spec.rb index 5eb2dd55b5..dbefb2a8ce 100644 --- a/spec/runtime/with_unbundled_env_spec.rb +++ b/spec/runtime/with_unbundled_env_spec.rb @@ -158,6 +158,22 @@ RSpec.describe "Bundler.with_env helpers" do end end + describe "Bundler.with_unbundled_env" do + it "should set ENV to unbundled_env in the block" do + expected = Bundler.unbundled_env + actual = Bundler.with_unbundled_env { ENV.to_hash } + expect(actual).to eq(expected) + end + + it "should restore the environment after execution" do + Bundler.with_unbundled_env do + ENV["FOO"] = "hello" + end + + expect(ENV).not_to have_key("FOO") + end + end + describe "Bundler.clean_system", :ruby => ">= 1.9", :bundler => "< 2" do it "runs system inside with_clean_env" do Bundler.clean_system(%(echo 'if [ "$BUNDLE_PATH" = "" ]; then exit 42; else exit 1; fi' | /bin/sh)) |