diff --git a/plugins/synced_folders/rsync/helper.rb b/plugins/synced_folders/rsync/helper.rb index 8eba835ee..c23cd1d53 100644 --- a/plugins/synced_folders/rsync/helper.rb +++ b/plugins/synced_folders/rsync/helper.rb @@ -1,3 +1,4 @@ +require "fileutils" require "ipaddr" require "shellwords" require "tmpdir" @@ -232,6 +233,8 @@ module VagrantPlugins message: err.to_s end end + ensure + FileUtils.remove_entry_secure(controlpath, true) if controlpath end # Check if rsync versions support using chown option diff --git a/test/unit/plugins/synced_folders/rsync/helper_test.rb b/test/unit/plugins/synced_folders/rsync/helper_test.rb index 244039a1d..e50ae872c 100644 --- a/test/unit/plugins/synced_folders/rsync/helper_test.rb +++ b/test/unit/plugins/synced_folders/rsync/helper_test.rb @@ -292,6 +292,20 @@ describe VagrantPlugins::SyncedFolderRSync::RsyncHelper do expect(args[9]).to include("ControlPath=/tmp/vagrant-rsync-12345") }.and_return(result) + expect(FileUtils).to receive(:remove_entry_secure).with("/tmp/vagrant-rsync-12345", true).and_return(true) + subject.rsync_single(machine, ssh_info, opts) + end + + it "does not create tmp dir on windows platforms" do + allow(Vagrant::Util::Platform).to receive(:windows?).and_return(true) + allow(Dir).to receive(:mktmpdir).with("vagrant-rsync-"). + and_return("/tmp/vagrant-rsync-12345") + + expect(Vagrant::Util::Subprocess).to receive(:execute).with(any_args) { |*args| + expect(args).not_to include("ControlPath=/tmp/vagrant-rsync-12345") + }.and_return(result) + + expect(FileUtils).not_to receive(:remove_entry_secure).with("/tmp/vagrant-rsync-12345", true) subject.rsync_single(machine, ssh_info, opts) end end