53 lines
1.0 KiB
Ruby
53 lines
1.0 KiB
Ruby
# Copyright (c) HashiCorp, Inc.
|
|
# SPDX-License-Identifier: BUSL-1.1
|
|
|
|
require 'tmpdir'
|
|
|
|
require File.expand_path("../../../base", __FILE__)
|
|
|
|
require 'vagrant/util/safe_chdir'
|
|
|
|
describe Vagrant::Util::SafeChdir do
|
|
let(:temp_dir) { Dir.mktmpdir("vagrant-test-util-safe-chdir") }
|
|
let(:temp_dir2) { Dir.mktmpdir("vagrant-test-util-safe-chdir-2") }
|
|
|
|
after do
|
|
FileUtils.rm_rf(temp_dir)
|
|
FileUtils.rm_rf(temp_dir2)
|
|
end
|
|
|
|
it "should change directories" do
|
|
expected = nil
|
|
result = nil
|
|
|
|
Dir.chdir(temp_dir) do
|
|
expected = Dir.pwd
|
|
end
|
|
|
|
described_class.safe_chdir(temp_dir) do
|
|
result = Dir.pwd
|
|
end
|
|
|
|
expect(result).to eq(expected)
|
|
end
|
|
|
|
it "should allow recursive chdir" do
|
|
expected = nil
|
|
result = nil
|
|
|
|
Dir.chdir(temp_dir) do
|
|
expected = Dir.pwd
|
|
end
|
|
|
|
expect do
|
|
described_class.safe_chdir(temp_dir2) do
|
|
described_class.safe_chdir(temp_dir) do
|
|
result = Dir.pwd
|
|
end
|
|
end
|
|
end.to_not raise_error
|
|
|
|
expect(result).to eq(expected)
|
|
end
|
|
end
|