Adds method to shared helpers for adding procs to be evaluated which can add default modifications to the option parser used by commands. Customized option parser class within Vagrant handles processing defined procs to set options.
202 lines
5.7 KiB
Ruby
202 lines
5.7 KiB
Ruby
require File.expand_path("../../base", __FILE__)
|
|
|
|
require "vagrant/shared_helpers"
|
|
require "vagrant/util/platform"
|
|
|
|
describe Vagrant do
|
|
include_context "unit"
|
|
|
|
subject { described_class }
|
|
|
|
describe ".global_lock" do
|
|
it "yields to the block" do
|
|
result = subject.global_lock { 42 }
|
|
expect(result).to eq(42)
|
|
end
|
|
end
|
|
|
|
describe ".in_installer?" do
|
|
it "is not if env is not set" do
|
|
with_temp_env("VAGRANT_INSTALLER_ENV" => nil) do
|
|
expect(subject.in_installer?).to be(false)
|
|
end
|
|
end
|
|
|
|
it "is if env is set" do
|
|
with_temp_env("VAGRANT_INSTALLER_ENV" => "/foo") do
|
|
expect(subject.in_installer?).to be(true)
|
|
end
|
|
end
|
|
end
|
|
|
|
describe ".installer_embedded_dir" do
|
|
it "returns nil if not in an installer" do
|
|
allow(Vagrant).to receive(:in_installer?).and_return(false)
|
|
expect(subject.installer_embedded_dir).to be_nil
|
|
end
|
|
|
|
it "returns the set directory" do
|
|
allow(Vagrant).to receive(:in_installer?).and_return(true)
|
|
|
|
with_temp_env("VAGRANT_INSTALLER_EMBEDDED_DIR" => "/foo") do
|
|
expect(subject.installer_embedded_dir).to eq("/foo")
|
|
end
|
|
end
|
|
end
|
|
|
|
describe ".plugins_enabled?" do
|
|
it "returns true if the env is not set" do
|
|
with_temp_env("VAGRANT_NO_PLUGINS" => nil) do
|
|
expect(subject.plugins_enabled?).to be(true)
|
|
end
|
|
end
|
|
|
|
it "returns false if the env is set" do
|
|
with_temp_env("VAGRANT_NO_PLUGINS" => "1") do
|
|
expect(subject.plugins_enabled?).to be(false)
|
|
end
|
|
end
|
|
end
|
|
|
|
describe ".server_url" do
|
|
it "defaults to the default value" do
|
|
with_temp_env("VAGRANT_SERVER_URL" => nil) do
|
|
expect(subject.server_url).to eq(
|
|
Vagrant::DEFAULT_SERVER_URL)
|
|
end
|
|
end
|
|
|
|
it "defaults if the string is empty" do
|
|
with_temp_env("VAGRANT_SERVER_URL" => "") do
|
|
expect(subject.server_url).to eq(
|
|
Vagrant::DEFAULT_SERVER_URL)
|
|
end
|
|
end
|
|
|
|
it "is the VAGRANT_SERVER_URL value" do
|
|
with_temp_env("VAGRANT_SERVER_URL" => "foo") do
|
|
expect(subject.server_url).to eq("foo")
|
|
end
|
|
end
|
|
|
|
it "is the VAGRANT_SERVER_URL value if the server url is configured" do
|
|
with_temp_env("VAGRANT_SERVER_URL" => "foo") do
|
|
expect(subject.server_url('bar')).to eq("foo")
|
|
end
|
|
end
|
|
|
|
it "is the configured server url if VAGRANT_SERVER_URL is not set" do
|
|
with_temp_env("VAGRANT_SERVER_URL" => nil) do
|
|
expect(subject.server_url("bar")).to eq("bar")
|
|
end
|
|
end
|
|
end
|
|
|
|
describe ".user_data_path" do
|
|
around do |example|
|
|
env = {
|
|
"USERPROFILE" => nil,
|
|
"VAGRANT_HOME" => nil,
|
|
}
|
|
with_temp_env(env) { example.run }
|
|
end
|
|
|
|
it "defaults to ~/.vagrant.d" do
|
|
expect(subject.user_data_path).to eql(Pathname.new("~/.vagrant.d").expand_path)
|
|
end
|
|
|
|
it "is VAGRANT_HOME if set" do
|
|
with_temp_env("VAGRANT_HOME" => "/foo") do
|
|
expected = Pathname.new("/foo").expand_path
|
|
expect(subject.user_data_path).to eql(expected)
|
|
end
|
|
end
|
|
|
|
it "is USERPROFILE/.vagrant.d if set" do
|
|
with_temp_env("USERPROFILE" => "/bar") do
|
|
expected = Pathname.new("/bar/.vagrant.d").expand_path
|
|
expect(subject.user_data_path).to eql(expected)
|
|
end
|
|
end
|
|
|
|
it "prefers VAGRANT_HOME over USERPROFILE if both are set" do
|
|
env = {
|
|
"USERPROFILE" => "/bar",
|
|
"VAGRANT_HOME" => "/foo",
|
|
}
|
|
|
|
with_temp_env(env) do
|
|
expected = Pathname.new("/foo").expand_path
|
|
expect(subject.user_data_path).to eql(expected)
|
|
end
|
|
end
|
|
end
|
|
|
|
describe ".prerelease?" do
|
|
it "should return true when Vagrant version is development" do
|
|
stub_const("Vagrant::VERSION", "1.0.0.dev")
|
|
expect(subject.prerelease?).to be(true)
|
|
end
|
|
|
|
it "should return false when Vagrant version is release" do
|
|
stub_const("Vagrant::VERSION", "1.0.0")
|
|
expect(subject.prerelease?).to be(false)
|
|
end
|
|
end
|
|
|
|
describe ".enable_resolv_replace" do
|
|
it "should not attempt to require resolv-replace by default" do
|
|
expect(subject).not_to receive(:require).with("resolv-replace")
|
|
subject.enable_resolv_replace
|
|
end
|
|
|
|
it "should require resolv-replace when VAGRANT_ENABLE_RESOLV_REPLACE is set" do
|
|
expect(subject).to receive(:require).with("resolv-replace")
|
|
with_temp_env("VAGRANT_ENABLE_RESOLV_REPLACE" => "1"){ subject.enable_resolv_replace }
|
|
end
|
|
|
|
it "should not require resolv-replace when VAGRANT_DISABLE_RESOLV_REPLACE is set" do
|
|
expect(subject).not_to receive(:require).with("resolv-replace")
|
|
with_temp_env("VAGRANT_ENABLE_RESOLV_REPLACE" => "1", "VAGRANT_DISABLE_RESOLV_REPLACE" => "1") do
|
|
subject.enable_resolv_replace
|
|
end
|
|
end
|
|
end
|
|
|
|
describe ".global_logger" do
|
|
after{ subject.global_logger = nil }
|
|
|
|
it "should return a logger when none have been provided" do
|
|
expect(subject.global_logger).not_to be_nil
|
|
end
|
|
|
|
it "should return previously set logger" do
|
|
logger = double("logger")
|
|
expect(subject.global_logger = logger).to eq(logger)
|
|
expect(subject.global_logger).to eq(logger)
|
|
end
|
|
end
|
|
|
|
describe ".add_default_cli_options" do
|
|
it "should raise a type error when no provided with proc" do
|
|
expect { subject.add_default_cli_options(true) }.
|
|
to raise_error(TypeError)
|
|
end
|
|
|
|
it "should raise an argument error when proc does not accept argument" do
|
|
expect { subject.add_default_cli_options(proc{}) }.
|
|
to raise_error(ArgumentError)
|
|
end
|
|
|
|
it "should accept a proc type argument" do
|
|
expect(subject.add_default_cli_options(proc{|o|})).to be_nil
|
|
end
|
|
end
|
|
|
|
describe ".default_cli_options" do
|
|
it "should return array of items" do
|
|
expect(subject.default_cli_options).to be_a(Array)
|
|
end
|
|
end
|
|
end
|