package commands import ( "os" "testing" "github.com/stretchr/testify/assert" ) func TestCompletePath(t *testing.T) { os.Chdir("testdata") defer os.Chdir("..") vectors := []struct { arg string onlyDirs bool fuzzyComplete bool expected []string }{ { arg: "", expected: []string{"Foobar", "baz/", "foo.ini", "foo/"}, }, { arg: "", onlyDirs: true, expected: []string{"baz/", "foo/"}, }, { arg: ".", expected: []string{".hidden/", ".keep-me"}, }, { arg: "fo", expected: []string{"Foobar", "foo.ini", "foo/"}, }, { arg: "Fo", expected: []string{"Foobar"}, }, { arg: "..", expected: []string{"../"}, }, { arg: "../..", expected: []string{"../../"}, }, { arg: "../testdata/", expected: []string{ "../testdata/Foobar", "../testdata/baz/", "../testdata/foo.ini", "../testdata/foo/", }, }, { arg: "../testdata/f", onlyDirs: true, expected: []string{"../testdata/foo/"}, }, { arg: "oo", expected: []string{}, }, { arg: "oo", fuzzyComplete: true, expected: []string{"Foobar", "foo.ini", "foo/"}, }, { arg: "../testdata/oo", expected: []string{}, }, { arg: "../testdata/oo", fuzzyComplete: true, expected: []string{"../testdata/Foobar", "../testdata/foo.ini", "../testdata/foo/"}, }, } for _, vec := range vectors { t.Run(vec.arg, func(t *testing.T) { res := completePath(vec.arg, vec.onlyDirs, vec.fuzzyComplete) assert.Equal(t, vec.expected, res) }) } }