summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Rodríguez <deivid.rodriguez@riseup.net>2018-12-18 12:10:54 +0100
committerDavid Rodríguez <deivid.rodriguez@riseup.net>2018-12-19 10:26:45 +0100
commitac60650be8ba8904aeaa4a0b11318612d2254eb0 (patch)
tree51e16631b722e3af73923391146d4488c2cd73ec
parent777b7b335d3656c4623307959698247b74836fd9 (diff)
downloadbundler-ac60650be8ba8904aeaa4a0b11318612d2254eb0.tar.gz
Introduce `with_unbundled_env`
As a replacement to `with_clean_env`.
-rw-r--r--lib/bundler.rb5
-rw-r--r--spec/runtime/with_unbundled_env_spec.rb16
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))