diff --git a/plugins/guests/windows/cap/reboot.rb b/plugins/guests/windows/cap/reboot.rb index e09037cf2..2534a1e2b 100644 --- a/plugins/guests/windows/cap/reboot.rb +++ b/plugins/guests/windows/cap/reboot.rb @@ -12,6 +12,10 @@ module VagrantPlugins while machine.communicate.execute(script, error_check: false) != 0 sleep 10 end + + # This re-establishes our symbolic links if they were + # created between now and a reboot + machine.communicate.execute("net use", error_check: false) end end end diff --git a/plugins/provisioners/chef/provisioner/chef_client.rb b/plugins/provisioners/chef/provisioner/chef_client.rb index 935cec6bf..f475b1a82 100644 --- a/plugins/provisioners/chef/provisioner/chef_client.rb +++ b/plugins/provisioners/chef/provisioner/chef_client.rb @@ -62,14 +62,6 @@ module VagrantPlugins @machine.guest.capability(:wait_for_reboot) end - if windows? - # This re-establishes our symbolic links if they were - # created between now and a reboot - @machine.communicate.execute( - "& net use a-non-existant-share", - error_check: false) - end - command = build_command(:client) @config.attempts.times do |attempt| diff --git a/plugins/provisioners/chef/provisioner/chef_solo.rb b/plugins/provisioners/chef/provisioner/chef_solo.rb index db926e11c..53a2af0d3 100644 --- a/plugins/provisioners/chef/provisioner/chef_solo.rb +++ b/plugins/provisioners/chef/provisioner/chef_solo.rb @@ -138,14 +138,6 @@ module VagrantPlugins @machine.guest.capability(:wait_for_reboot) end - if windows? - # This re-establishes our symbolic links if they were - # created between now and a reboot - @machine.communicate.execute( - "& net use a-non-existant-share", - error_check: false) - end - command = build_command(:solo) @config.attempts.times do |attempt| diff --git a/plugins/provisioners/puppet/provisioner/puppet.rb b/plugins/provisioners/puppet/provisioner/puppet.rb index 93dfc50f9..7398026d4 100644 --- a/plugins/provisioners/puppet/provisioner/puppet.rb +++ b/plugins/provisioners/puppet/provisioner/puppet.rb @@ -101,14 +101,6 @@ module VagrantPlugins end def run_puppet_apply - if windows? - # This re-establishes our symbolic links if they were - # created between now and a reboot - @machine.communicate.execute( - "& net use a-non-existant-share", - error_check: false) - end - default_module_path = "/etc/puppet/modules" if windows? default_module_path = "/ProgramData/PuppetLabs/puppet/etc/modules" diff --git a/test/unit/plugins/guests/windows/cap/reboot_test.rb b/test/unit/plugins/guests/windows/cap/reboot_test.rb index 7f8266759..8297b9a26 100644 --- a/test/unit/plugins/guests/windows/cap/reboot_test.rb +++ b/test/unit/plugins/guests/windows/cap/reboot_test.rb @@ -9,7 +9,7 @@ describe "VagrantPlugins::GuestWindows::Cap::Reboot" do let(:vm) { double("vm") } let(:config) { double("config") } let(:machine) { double("machine") } - let(:communicator) { double(:execute) } + let(:communicator) { double("communicator") } before do allow(machine).to receive(:communicate).and_return(communicator) @@ -18,37 +18,37 @@ describe "VagrantPlugins::GuestWindows::Cap::Reboot" do end describe "winrm communicator" do - before do allow(vm).to receive(:communicator).and_return(:winrm) end describe ".wait_for_reboot" do - it "runs reboot detect script" do - expect(communicator).to receive(:execute) do |cmd| - expect(cmd).to include("SM_SHUTTINGDOWN") - end.and_return(0) + expect(communicator).to receive(:execute).with(/# Function/, { error_check: false }).and_return(0) + allow(communicator).to receive(:execute) + described_class.wait_for_reboot(machine) end + + it "fixes symlinks to network shares" do + allow(communicator).to receive(:execute).and_return(0) + expect(communicator).to receive(:execute).with('net use', { error_check: false }) + described_class.wait_for_reboot(machine) + end end end describe "ssh communicator" do - before do allow(vm).to receive(:communicator).and_return(:ssh) end describe ".wait_for_reboot" do - - it "runs reboot detect script" do + it "does not execute Windows reboot detect script" do expect(communicator).to_not receive(:execute) described_class.wait_for_reboot(machine) end - end end - end