mirror of
https://github.com/neovim/neovim.git
synced 2025-09-06 11:28:22 +00:00
79 lines
1.7 KiB
Lua
79 lines
1.7 KiB
Lua
local t = require('test.testutil')
|
|
local parser = require('vim.net._ssh')
|
|
local eq = t.eq
|
|
|
|
describe('SSH parser', function()
|
|
it('parses SSH configuration strings', function()
|
|
local config = [[
|
|
Host *
|
|
ConnectTimeout 10
|
|
ServerAliveInterval 60
|
|
ServerAliveCountMax 3
|
|
# Use a specific key for any host not otherwise specified
|
|
# IdentityFile ~/.ssh/id_rsa
|
|
|
|
Host=dev
|
|
HostName=dev.example.com
|
|
User=devuser
|
|
Port=2222
|
|
IdentityFile=~/.ssh/id_rsa_dev
|
|
|
|
Host prod test
|
|
HostName 198.51.100.10
|
|
User admin
|
|
Port 22
|
|
IdentityFile ~/.ssh/id_rsa_prod
|
|
ForwardAgent yes
|
|
|
|
Host test
|
|
IdentitiesOnly yes
|
|
|
|
Host "quoted string"
|
|
User quote
|
|
Port 22
|
|
|
|
Match host foo host gh
|
|
HostName github.com
|
|
User git
|
|
IdentityFile ~/.ssh/id_rsa_github
|
|
IdentitiesOnly yes
|
|
]]
|
|
|
|
eq({
|
|
'dev',
|
|
'prod',
|
|
'test',
|
|
'quoted string',
|
|
'gh',
|
|
}, parser.parse_ssh_config(config))
|
|
end)
|
|
|
|
it('fails when a quote is not closed', function()
|
|
local config = [[
|
|
Host prod dev "test prod my
|
|
HostName 198.51.100.10
|
|
User admin
|
|
Port 22
|
|
IdentityFile ~/.ssh/id_rsa_prod
|
|
ForwardAgent yes
|
|
]]
|
|
|
|
local ok, _ = pcall(parser.parse_ssh_config, config)
|
|
eq(false, ok)
|
|
end)
|
|
|
|
it('fails when the line ends with a single backslash', function()
|
|
local config = [[
|
|
Host prod test
|
|
HostName 198.51.100.10
|
|
User admin\
|
|
Port 22
|
|
IdentityFile ~/.ssh/id_rsa_prod
|
|
ForwardAgent yes
|
|
]]
|
|
|
|
local ok, _ = pcall(parser.parse_ssh_config, config)
|
|
eq(false, ok)
|
|
end)
|
|
end)
|