Environment#load_config! loads from the box directory and home directory as well
This commit is contained in:
parent
047c094e41
commit
cb2513b1ec
|
@ -32,6 +32,11 @@ module Vagrant
|
||||||
File.join(root_path, config.vagrant.dotfile_name)
|
File.join(root_path, config.vagrant.dotfile_name)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# The path to the home directory, which is usually in `~/.vagrant/~
|
||||||
|
def home_path
|
||||||
|
config ? config.vagrant.home : nil
|
||||||
|
end
|
||||||
|
|
||||||
#---------------------------------------------------------------
|
#---------------------------------------------------------------
|
||||||
# Load Methods
|
# Load Methods
|
||||||
#---------------------------------------------------------------
|
#---------------------------------------------------------------
|
||||||
|
@ -74,6 +79,8 @@ module Vagrant
|
||||||
def load_config!
|
def load_config!
|
||||||
# Prepare load paths for config files
|
# Prepare load paths for config files
|
||||||
load_paths = [File.join(PROJECT_ROOT, "config", "default.rb")]
|
load_paths = [File.join(PROJECT_ROOT, "config", "default.rb")]
|
||||||
|
load_paths << File.join(box.directory, ROOTFILE_NAME) if box
|
||||||
|
load_paths << File.join(home_path, ROOTFILE_NAME) if home_path
|
||||||
load_paths << File.join(root_path, ROOTFILE_NAME) if root_path
|
load_paths << File.join(root_path, ROOTFILE_NAME) if root_path
|
||||||
|
|
||||||
# Clear out the old data
|
# Clear out the old data
|
||||||
|
@ -94,8 +101,6 @@ module Vagrant
|
||||||
# Loads the home directory path and creates the necessary subdirectories
|
# Loads the home directory path and creates the necessary subdirectories
|
||||||
# within the home directory if they're not already created.
|
# within the home directory if they're not already created.
|
||||||
def load_home_directory!
|
def load_home_directory!
|
||||||
home_path = File.expand_path(config.vagrant.home)
|
|
||||||
|
|
||||||
# Setup the array of necessary home directories
|
# Setup the array of necessary home directories
|
||||||
dirs = HOME_SUBDIRS.collect { |subdir| File.join(home_path, subdir) }
|
dirs = HOME_SUBDIRS.collect { |subdir| File.join(home_path, subdir) }
|
||||||
dirs.unshift(home_path)
|
dirs.unshift(home_path)
|
||||||
|
|
|
@ -30,6 +30,17 @@ class EnvironmentTest < Test::Unit::TestCase
|
||||||
assert_equal File.join(@env.root_path, @env.config.vagrant.dotfile_name), @env.dotfile_path
|
assert_equal File.join(@env.root_path, @env.config.vagrant.dotfile_name), @env.dotfile_path
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context "home path" do
|
||||||
|
should "return nil if config is not yet loaded" do
|
||||||
|
@env.stubs(:config).returns(nil)
|
||||||
|
assert_nil @env.home_path
|
||||||
|
end
|
||||||
|
|
||||||
|
should "return the home path if it loaded" do
|
||||||
|
assert_equal @env.config.vagrant.home, @env.home_path
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context "loading" do
|
context "loading" do
|
||||||
|
@ -113,8 +124,9 @@ class EnvironmentTest < Test::Unit::TestCase
|
||||||
context "loading config" do
|
context "loading config" do
|
||||||
setup do
|
setup do
|
||||||
@root_path = "/foo"
|
@root_path = "/foo"
|
||||||
@env = Vagrant::Environment.new
|
@home_path = "/bar"
|
||||||
@env.stubs(:root_path).returns(@root_path)
|
@env.stubs(:root_path).returns(@root_path)
|
||||||
|
@env.stubs(:home_path).returns(@home_path)
|
||||||
|
|
||||||
File.stubs(:exist?).returns(false)
|
File.stubs(:exist?).returns(false)
|
||||||
Vagrant::Config.stubs(:execute!)
|
Vagrant::Config.stubs(:execute!)
|
||||||
|
@ -142,6 +154,32 @@ class EnvironmentTest < Test::Unit::TestCase
|
||||||
@env.load_config!
|
@env.load_config!
|
||||||
end
|
end
|
||||||
|
|
||||||
|
should "load from the home directory" do
|
||||||
|
File.expects(:exist?).with(File.join(@env.home_path, Vagrant::Environment::ROOTFILE_NAME)).once
|
||||||
|
@env.load_config!
|
||||||
|
end
|
||||||
|
|
||||||
|
should "not load from the home directory if the config is nil" do
|
||||||
|
@env.stubs(:home_path).returns(nil)
|
||||||
|
File.expects(:exist?).twice.returns(false)
|
||||||
|
@env.load_config!
|
||||||
|
end
|
||||||
|
|
||||||
|
should "not load from the box directory if it is nil" do
|
||||||
|
@env.expects(:box).once.returns(nil)
|
||||||
|
File.expects(:exist?).twice.returns(false)
|
||||||
|
@env.load_config!
|
||||||
|
end
|
||||||
|
|
||||||
|
should "load from the box directory if it is not nil" do
|
||||||
|
dir = "foo"
|
||||||
|
box = mock("box")
|
||||||
|
box.stubs(:directory).returns(dir)
|
||||||
|
@env.expects(:box).twice.returns(box)
|
||||||
|
File.expects(:exist?).with(File.join(dir, Vagrant::Environment::ROOTFILE_NAME)).once
|
||||||
|
@env.load_config!
|
||||||
|
end
|
||||||
|
|
||||||
should "load the files only if exist? returns true" do
|
should "load the files only if exist? returns true" do
|
||||||
File.expects(:exist?).once.returns(true)
|
File.expects(:exist?).once.returns(true)
|
||||||
@env.expects(:load).once
|
@env.expects(:load).once
|
||||||
|
|
Loading…
Reference in New Issue