diff --git a/lib/vagrant/machine.rb b/lib/vagrant/machine.rb index 88ef368bd..450e21fc1 100644 --- a/lib/vagrant/machine.rb +++ b/lib/vagrant/machine.rb @@ -593,7 +593,7 @@ module Vagrant ).chomp end - if vagrant_cwd != @env.root_path.to_s + if !File.identical?(vagrant_cwd.to_s, @env.root_path.to_s) if vagrant_cwd ui.warn(I18n.t( 'vagrant.moved_cwd', diff --git a/test/unit/vagrant/machine_test.rb b/test/unit/vagrant/machine_test.rb index 639d14b8d..02646e353 100644 --- a/test/unit/vagrant/machine_test.rb +++ b/test/unit/vagrant/machine_test.rb @@ -370,6 +370,26 @@ describe Vagrant::Machine do end end + it 'should not warn if dirs are same but different cases' do + action_name = :destroy + callable = lambda { |_env| } + original_cwd = env.cwd.to_s + + allow(provider).to receive(:action).with(action_name).and_return(callable) + allow(subject.ui).to receive(:warn) + + instance.action(action_name) + + expect(subject.ui).to_not have_received(:warn) + + # In cygwin or other windows shell, it might have a path like + # c:/path and C:/path + # which are the same. + allow(env).to receive(:root_path).and_return(original_cwd.upcase) + expect(subject.ui).to_not have_received(:warn) + instance.action(action_name) + end + context "if in a subdir" do let (:data_dir) { env.cwd }