diff options
author | Samuel Giddins <segiddins@segiddins.me> | 2016-04-15 12:14:34 -0500 |
---|---|---|
committer | Samuel Giddins <segiddins@segiddins.me> | 2016-04-15 15:18:47 -0500 |
commit | 2cc0439892d4a6adfa4169f7c3e0569c235c2c6c (patch) | |
tree | 9070bb9d6072486c4b9c5c4deba1030d082138a9 | |
parent | 4222dbccad42a9ec6d3ecd9ddaa6a283f4fecbef (diff) | |
download | bundler-2cc0439892d4a6adfa4169f7c3e0569c235c2c6c.tar.gz |
[EnvironmentPreserver] Preserve originals in the backup
-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 |