From 4f30a834d0913fcc5fd878c3ff1c17c67214b6d4 Mon Sep 17 00:00:00 2001 From: Mitchell Hashimoto Date: Sun, 8 Jan 2012 23:04:23 -0800 Subject: [PATCH] Tests for multivagrantfile being found --- lib/vagrant/environment.rb | 2 +- test/unit/support/isolated_environment.rb | 10 ++++++++-- test/unit/vagrant/environment_test.rb | 20 ++++++++++++++++++++ 3 files changed, 29 insertions(+), 3 deletions(-) diff --git a/lib/vagrant/environment.rb b/lib/vagrant/environment.rb index 5ef83ee62..100cda0d5 100644 --- a/lib/vagrant/environment.rb +++ b/lib/vagrant/environment.rb @@ -495,7 +495,7 @@ module Vagrant if current_path.exist? # We also test if current_path == path because on case insensitive # file systems, it will look like multiple exist. - if path && current_path == path + if path && current_path != path raise Errors::MultiVagrantfileFound, :directory => search_path.to_s end diff --git a/test/unit/support/isolated_environment.rb b/test/unit/support/isolated_environment.rb index 8320d60c5..51beaffc3 100644 --- a/test/unit/support/isolated_environment.rb +++ b/test/unit/support/isolated_environment.rb @@ -7,8 +7,13 @@ require "support/isolated_environment" module Unit class IsolatedEnvironment < ::IsolatedEnvironment - def create_vagrant_env - Vagrant::Environment.new(:cwd => @workdir, :home_path => @homedir) + def create_vagrant_env(options=nil) + options = { + :cwd => @workdir, + :home_path => @homedir + }.merge(options || {}) + + Vagrant::Environment.new(options) end def vagrantfile(contents, root=nil) @@ -22,6 +27,7 @@ module Unit box_dir = boxes_dir.join(name) box_dir.mkpath vagrantfile(vagrantfile_contents, box_dir) + box_dir end def boxes_dir diff --git a/test/unit/vagrant/environment_test.rb b/test/unit/vagrant/environment_test.rb index 520500214..0d700a344 100644 --- a/test/unit/vagrant/environment_test.rb +++ b/test/unit/vagrant/environment_test.rb @@ -151,6 +151,26 @@ VF env = environment.create_vagrant_env env.config.for_vm(:default).ssh.port.should == 100 end + + it "should error if the box has an ambiguous Vagrantfile" do + environment = isolated_environment do |env| + env.vagrantfile(<<-VF) +Vagrant::Config.run do |config| + config.vm.box = "base" +end +VF + + # Create two Vagrantfiles. The normal one and a Vagrantfile2 + box_dir = env.box("base", "") + box_dir.join("Vagrantfile2").open("w") do |f| + f.write("") + end + end + + env = environment.create_vagrant_env(:vagrantfile_name => ["Vagrantfile", "Vagrantfile2"]) + expect { env.config }. + to raise_error(Vagrant::Errors::MultiVagrantfileFound) + end end describe "ui" do