47 lines
1.2 KiB
Ruby
47 lines
1.2 KiB
Ruby
# Copyright (c) HashiCorp, Inc.
|
|
# SPDX-License-Identifier: BUSL-1.1
|
|
|
|
require File.expand_path("../../../base", __FILE__)
|
|
|
|
require 'vagrant/util/env'
|
|
|
|
describe Vagrant::Util::Env do
|
|
context "with valid environment variables" do
|
|
before do
|
|
ENV["VAGRANT_TEST"] = "1"
|
|
end
|
|
|
|
after do
|
|
ENV.delete("VAGRANT_TEST")
|
|
end
|
|
|
|
it "should execute block with original environment variables" do
|
|
Vagrant::Util::Env.with_original_env do
|
|
expect(ENV["VAGRANT_TEST"]).to be_nil
|
|
end
|
|
end
|
|
|
|
it "should replace environment variables after executing block" do
|
|
Vagrant::Util::Env.with_original_env do
|
|
expect(ENV["VAGRANT_TEST"]).to be_nil
|
|
end
|
|
expect(ENV["VAGRANT_TEST"]).to eq("1")
|
|
end
|
|
end
|
|
|
|
context "with invalid environment variables" do
|
|
it "should not attempt to restore invalid environment variable" do
|
|
invalid_vars = ENV.to_hash.merge("VAGRANT_OLD_ENV_" => "INVALID")
|
|
mock = expect(ENV).to receive(:each)
|
|
invalid_vars.each do |k,v|
|
|
mock.and_yield(k, v)
|
|
end
|
|
expect do
|
|
Vagrant::Util::Env.with_original_env do
|
|
expect(ENV["VAGRANT_TEST"]).to be_nil
|
|
end
|
|
end.not_to raise_error
|
|
end
|
|
end
|
|
end
|