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 12:14:50 -0500
commit4516102817278ccd905f62d099fb6a0b3184919f (patch)
tree1acc4f8fe89b0009810580423a20001ad31796fa
parent0fa0830658c04bf9c88ce0bbfffd02ad55ef8193 (diff)
downloadbundler-seg-path-preserve-restore.tar.gz
[EnvironmentPreserver] Preserve originals in the backupseg-path-preserve-restore
-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