74 lines
2.4 KiB
Ruby
74 lines
2.4 KiB
Ruby
# Copyright (c) HashiCorp, Inc.
|
|
# SPDX-License-Identifier: BUSL-1.1
|
|
|
|
require File.expand_path("../../../base", __FILE__)
|
|
|
|
require 'vagrant/util/install_cli_autocomplete'
|
|
require 'fileutils'
|
|
|
|
describe Vagrant::Util::InstallZSHShellConfig do
|
|
|
|
let(:home) { "#{Dir.tmpdir}/not-home" }
|
|
let(:target_file) { "#{home}/.zshrc" }
|
|
|
|
subject { described_class.new() }
|
|
|
|
describe "#shell_installed" do
|
|
it "should return path to config file if exists" do
|
|
allow(File).to receive(:exist?).with(target_file).and_return(true)
|
|
expect(subject.shell_installed(home)).to eq(target_file)
|
|
end
|
|
|
|
it "should return nil if config file does not exists" do
|
|
FileUtils.rm_rf(target_file)
|
|
expect(subject.shell_installed(home)).to eq(nil)
|
|
end
|
|
end
|
|
|
|
describe "#is_installed" do
|
|
it "returns false if autocompletion not already installed" do
|
|
allow(File).to receive(:foreach).with(target_file).and_yield("nothing")
|
|
expect(subject.is_installed(target_file)).to eq(false)
|
|
end
|
|
|
|
it "returns true if autocompletion is already installed" do
|
|
allow(File).to receive(:foreach).with(target_file).and_yield(subject.prepend_string)
|
|
expect(subject.is_installed(target_file)).to eq(true)
|
|
end
|
|
end
|
|
|
|
describe "#install" do
|
|
it "installs autocomplete" do
|
|
allow(File).to receive(:exist?).with(target_file).and_return(true)
|
|
allow(File).to receive(:foreach).with(target_file).and_yield("nothing")
|
|
expect(File).to receive(:open).with(target_file, "a")
|
|
subject.install(home)
|
|
end
|
|
end
|
|
end
|
|
|
|
describe Vagrant::Util::InstallCLIAutocomplete do
|
|
|
|
let(:zshrc_path) { "/path/to/.zshrc" }
|
|
let(:bashrc_path) { "/path/to/.bash_profile" }
|
|
|
|
subject { described_class }
|
|
|
|
describe ".install" do
|
|
it "installs requested shells" do
|
|
allow_any_instance_of(Vagrant::Util::InstallZSHShellConfig).to receive(:install).and_return(zshrc_path)
|
|
expect(subject.install(["zsh"])).to eq([zshrc_path])
|
|
end
|
|
|
|
it "installs all shells by default" do
|
|
allow_any_instance_of(Vagrant::Util::InstallZSHShellConfig).to receive(:install).and_return(zshrc_path)
|
|
allow_any_instance_of(Vagrant::Util::InstallBashShellConfig).to receive(:install).and_return(bashrc_path)
|
|
expect(subject.install()).to eq([zshrc_path, bashrc_path])
|
|
end
|
|
|
|
it "does not install unsupported shells" do
|
|
expect{ subject.install(["oops"]) }.to raise_error(ArgumentError)
|
|
end
|
|
end
|
|
end
|