1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
|
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)
})
}
}
|