summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Giddins <segiddins@segiddins.me>2016-04-15 12:14:34 -0500
committerSamuel Giddins <segiddins@segiddins.me>2016-04-15 15:18:47 -0500
commit2cc0439892d4a6adfa4169f7c3e0569c235c2c6c (patch)
tree9070bb9d6072486c4b9c5c4deba1030d082138a9
parent4222dbccad42a9ec6d3ecd9ddaa6a283f4fecbef (diff)
downloadbundler-2cc0439892d4a6adfa4169f7c3e0569c235c2c6c.tar.gz
[EnvironmentPreserver] Preserve originals in the backup
-rw-r--r--lib/bundler/environment_preserver.rb5
-rw-r--r--spec/bundler/environment_preserver_spec.rb12
2 files changed, 16 insertions, 1 deletions
diff --git a/lib/bundler/environment_preserver.rb b/lib/bundler/environment_preserver.rb
index 0efd101bfe..5aaa46b1d8 100644
--- a/lib/bundler/environment_preserver.rb
+++ b/lib/bundler/environment_preserver.rb
@@ -14,7 +14,10 @@ module Bundler
env = @original.clone
@keys.each do |key|
value = env[key]
- env[@prefix + key] = value unless value.nil? || value.empty?
+ original_value = env[@prefix + key]
+ if !value.nil? && !value.empty? && original_value.nil?
+ env[@prefix + key] = value
+ end
end
env
end
diff --git a/spec/bundler/environment_preserver_spec.rb b/spec/bundler/environment_preserver_spec.rb
index b3e7019a75..0c2913cc37 100644
--- a/spec/bundler/environment_preserver_spec.rb
+++ b/spec/bundler/environment_preserver_spec.rb
@@ -32,6 +32,18 @@ describe Bundler::EnvironmentPreserver do
expect(subject.key?("BUNDLE_ORIG_foo")).to eq(false)
end
end
+
+ context "when an original key is set" do
+ let(:env) { { "foo" => "my-foo", "BUNDLE_ORIG_foo" => "orig-foo" } }
+
+ it "should keep the original value in the BUNDLE_ORIG_ variable" do
+ expect(subject["BUNDLE_ORIG_foo"]).to eq("orig-foo")
+ end
+
+ it "should keep the variable" do
+ expect(subject["foo"]).to eq("my-foo")
+ end
+ end
end
describe "#restore" do