diff --git a/plugins/communicators/winrm/command_filters/rm.rb b/plugins/communicators/winrm/command_filters/rm.rb index efc533197..755a48896 100644 --- a/plugins/communicators/winrm/command_filters/rm.rb +++ b/plugins/communicators/winrm/command_filters/rm.rb @@ -31,9 +31,9 @@ module VagrantPlugins ret_cmd = '' if recurse - ret_cmd = "rm \"#{dir}\" -recurse -force" + ret_cmd = "if (Test-Path \"#{dir}\") {Remove-Item \"#{dir}\" -force -recurse}" else - ret_cmd = "if (Test-Path #{dir}) {Remove-Item #{dir} -force}" + ret_cmd = "if (Test-Path \"#{dir}\") {Remove-Item \"#{dir}\" -force}" end return ret_cmd end diff --git a/plugins/provisioners/docker/client.rb b/plugins/provisioners/docker/client.rb index fa13f9744..4293dffed 100644 --- a/plugins/provisioners/docker/client.rb +++ b/plugins/provisioners/docker/client.rb @@ -127,10 +127,8 @@ module VagrantPlugins def create_container(config) args = container_run_args(config) - @machine.communicate.sudo %[rm -f #{config[:cidfile]} - ] - @machine.communicate.sudo %[docker run #{args} - ] + @machine.communicate.sudo %[rm -f "#{config[:cidfile]}"] + @machine.communicate.sudo %[docker run #{args}] sha = Digest::SHA1.hexdigest(args) container_data_path(config).open("w+") do |f| diff --git a/test/unit/plugins/communicators/winrm/command_filter_test.rb b/test/unit/plugins/communicators/winrm/command_filter_test.rb index 79b8808f8..151227b35 100644 --- a/test/unit/plugins/communicators/winrm/command_filter_test.rb +++ b/test/unit/plugins/communicators/winrm/command_filter_test.rb @@ -54,20 +54,22 @@ describe VagrantPlugins::CommunicatorWinRM::CommandFilter, unit: true do it 'filters out rm recurse commands' do expect(subject.filter('rm -Rf /some/dir')).to eq( - "rm \"/some/dir\" -recurse -force") + "if (Test-Path \"/some/dir\") {Remove-Item \"/some/dir\" -force -recurse}") expect(subject.filter('rm -fr /some/dir')).to eq( - "rm \"/some/dir\" -recurse -force") + "if (Test-Path \"/some/dir\") {Remove-Item \"/some/dir\" -force -recurse}") expect(subject.filter('rm -r /some/dir')).to eq( - "rm \"/some/dir\" -recurse -force") + "if (Test-Path \"/some/dir\") {Remove-Item \"/some/dir\" -force -recurse}") expect(subject.filter('rm -r "/some/dir"')).to eq( - "rm \"/some/dir\" -recurse -force") + "if (Test-Path \"/some/dir\") {Remove-Item \"/some/dir\" -force -recurse}") end it 'filters out rm commands' do expect(subject.filter('rm /some/dir')).to eq( - "if (Test-Path /some/dir) {Remove-Item /some/dir -force}") + "if (Test-Path \"/some/dir\") {Remove-Item \"/some/dir\" -force}") expect(subject.filter('rm -f /some/dir')).to eq( - "if (Test-Path /some/dir) {Remove-Item /some/dir -force}") + "if (Test-Path \"/some/dir\") {Remove-Item \"/some/dir\" -force}") + expect(subject.filter('rm -f "/some/dir"')).to eq( + "if (Test-Path \"/some/dir\") {Remove-Item \"/some/dir\" -force}") end it 'filters out mkdir commands' do