mirror of
https://github.com/kovidgoyal/kitty
synced 2026-07-22 00:08:04 +02:00
Finish porting SSH config file parsing
This commit is contained in:
76
tools/cmd/ssh/config_test.go
Normal file
76
tools/cmd/ssh/config_test.go
Normal file
@@ -0,0 +1,76 @@
|
||||
// License: GPLv3 Copyright: 2023, Kovid Goyal, <kovid at kovidgoyal.net>
|
||||
|
||||
package ssh
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"kitty/tools/utils"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"testing"
|
||||
|
||||
"github.com/google/go-cmp/cmp"
|
||||
)
|
||||
|
||||
var _ = fmt.Print
|
||||
|
||||
func TestSSHConfigParsing(t *testing.T) {
|
||||
tdir := t.TempDir()
|
||||
hostname := "unmatched"
|
||||
username := ""
|
||||
conf := ""
|
||||
for_python := false
|
||||
rt := func(expected_env ...string) {
|
||||
cf := filepath.Join(tdir, "ssh.conf")
|
||||
os.WriteFile(cf, []byte(conf), 0o600)
|
||||
c, err := load_config(hostname, username, nil, cf)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
actual := c.final_env_instructions(for_python, func(key string) (string, bool) {
|
||||
if key == "LOCAL_ENV" {
|
||||
return "LOCAL_VAL", true
|
||||
}
|
||||
return "", false
|
||||
})
|
||||
if expected_env == nil {
|
||||
expected_env = []string{}
|
||||
}
|
||||
diff := cmp.Diff(expected_env, utils.Splitlines(actual))
|
||||
if diff != "" {
|
||||
t.Fatalf("Unexpected env for\nhostname: %#v\nusername: %#v\nconf: %s\n%s", hostname, username, conf, diff)
|
||||
}
|
||||
}
|
||||
rt()
|
||||
conf = "env a=b"
|
||||
rt(`export 'a'="b"`)
|
||||
conf = "env a=b\nhostname 2\nenv a=c\nenv b=b"
|
||||
rt(`export 'a'="b"`)
|
||||
hostname = "2"
|
||||
rt(`export 'a'="c"`, `export 'b'="b"`)
|
||||
conf = "env a="
|
||||
rt(`export 'a'=""`)
|
||||
conf = "env a"
|
||||
rt(`unset 'a'`)
|
||||
conf = "env a=b\nhostname test@2\nenv a=c\nenv b=b"
|
||||
hostname = "unmatched"
|
||||
rt(`export 'a'="b"`)
|
||||
hostname = "2"
|
||||
rt(`export 'a'="b"`)
|
||||
username = "test"
|
||||
rt(`export 'a'="c"`, `export 'b'="b"`)
|
||||
conf = "env a=b\nhostname 1 2\nenv a=c\nenv b=b"
|
||||
username = ""
|
||||
hostname = "unmatched"
|
||||
rt(`export 'a'="b"`)
|
||||
hostname = "1"
|
||||
rt(`export 'a'="c"`, `export 'b'="b"`)
|
||||
hostname = "2"
|
||||
rt(`export 'a'="c"`, `export 'b'="b"`)
|
||||
for_python = true
|
||||
rt(`export ["a","c",false]`, `export ["b","b",false]`)
|
||||
conf = "env a="
|
||||
rt(`export ["a"]`)
|
||||
conf = "env a"
|
||||
rt(`unset ["a"]`)
|
||||
}
|
||||
Reference in New Issue
Block a user