diff options
author | Samuel Giddins <segiddins@segiddins.me> | 2016-04-15 12:14:34 -0500 |
---|---|---|
committer | Samuel Giddins <segiddins@segiddins.me> | 2016-04-15 12:14:50 -0500 |
commit | 4516102817278ccd905f62d099fb6a0b3184919f (patch) | |
tree | 1acc4f8fe89b0009810580423a20001ad31796fa | |
parent | 0fa0830658c04bf9c88ce0bbfffd02ad55ef8193 (diff) | |
download | bundler-seg-path-preserve-restore.tar.gz |
[EnvironmentPreserver] Preserve originals in the backupseg-path-preserve-restore
-rw-r--r-- | lib/bundler/environment_preserver.rb | 5 | ||||
-rw-r--r-- | spec/bundler/environment_preserver_spec.rb | 12 |
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 |