Escape identify file path

This commit is contained in:
Seth Vargo 2015-11-23 20:00:12 -05:00
parent 2a6db90afd
commit 8f420837a4
2 changed files with 15 additions and 7 deletions

View File

@ -6,11 +6,7 @@ Host <%= host_key %>
StrictHostKeyChecking no StrictHostKeyChecking no
PasswordAuthentication no PasswordAuthentication no
<% private_key_path.each do |path| %> <% private_key_path.each do |path| %>
<% if path.include?(" ") -%> IdentityFile <%= path.inspect %>
IdentityFile "<%= path %>"
<% else -%>
IdentityFile <%= path %>
<% end -%>
<% end -%> <% end -%>
IdentitiesOnly yes IdentitiesOnly yes
LogLevel FATAL LogLevel FATAL

View File

@ -92,8 +92,8 @@ Host #{machine.name}
subject.execute subject.execute
expect(output).to include("IdentityFile foo") expect(output).to include('IdentityFile "foo"')
expect(output).to include("IdentityFile bar") expect(output).to include('IdentityFile "bar"')
end end
it "puts quotes around an identityfile path if it has a space" do it "puts quotes around an identityfile path if it has a space" do
@ -107,5 +107,17 @@ Host #{machine.name}
expect(output).to include('IdentityFile "with a space"') expect(output).to include('IdentityFile "with a space"')
end end
it "escapes special characters" do
allow(machine).to receive(:ssh_info) { ssh_info.merge(private_key_path: ['/private/tmp/test of "vagrant" plugin/']) }
output = ""
allow(subject).to receive(:safe_puts) do |data|
output += data if data
end
subject.execute
expect(output).to include('"/private/tmp/test of \"vagrant\" plugin/"')
end
end end
end end