diff options
| author | Eyal Posener <[email protected]> | 2017-05-13 00:45:08 +0300 |
|---|---|---|
| committer | GitHub <[email protected]> | 2017-05-13 00:45:08 +0300 |
| commit | 9123548bc5f7725948b6096be4ef490af71194b3 (patch) | |
| tree | 33e21d60ec1412ff7aaf1c73363208e79d96d8b3 /predict_test.go | |
| parent | 136e52e074be4a85fb9e9bccf93d060c46e67561 (diff) | |
| parent | bc5d682221f38e82bbd977d5567da8b884a30cbc (diff) | |
Merge pull request #16 from posener/recursive-dirs
Recursive directories and complete by go packages
Diffstat (limited to 'predict_test.go')
| -rw-r--r-- | predict_test.go | 114 |
1 files changed, 65 insertions, 49 deletions
diff --git a/predict_test.go b/predict_test.go index ebe8aa1..b2840c0 100644 --- a/predict_test.go +++ b/predict_test.go @@ -11,10 +11,10 @@ func TestPredicate(t *testing.T) { initTests() tests := []struct { - name string - p Predictor - arg string - want []string + name string + p Predictor + argList []string + want []string }{ { name: "set", @@ -22,10 +22,10 @@ func TestPredicate(t *testing.T) { want: []string{"a", "b", "c"}, }, { - name: "set with does", - p: PredictSet("./..", "./x"), - arg: "./.", - want: []string{"./.."}, + name: "set with does", + p: PredictSet("./..", "./x"), + argList: []string{"./.", "./.."}, + want: []string{"./.."}, }, { name: "set/empty", @@ -60,70 +60,86 @@ func TestPredicate(t *testing.T) { { name: "files/txt", p: PredictFiles("*.txt"), - want: []string{"./", "./dir/", "./a.txt", "./b.txt", "./c.txt", "./.dot.txt"}, + want: []string{"./", "./dir/", "./outer/", "./a.txt", "./b.txt", "./c.txt", "./.dot.txt"}, }, { - name: "files/txt", - p: PredictFiles("*.txt"), - arg: "./dir/", - want: []string{"./dir/"}, + name: "files/txt", + p: PredictFiles("*.txt"), + argList: []string{"./dir/"}, + want: []string{"./dir/"}, + }, + { + name: "complete files inside dir if it is the only match", + p: PredictFiles("foo"), + argList: []string{"./dir/", "./d"}, + want: []string{"./dir/", "./dir/foo"}, }, { - name: "files/x", - p: PredictFiles("x"), - arg: "./dir/", - want: []string{"./dir/", "./dir/x"}, + name: "complete files inside dir when argList includes file name", + p: PredictFiles("*"), + argList: []string{"./dir/f", "./dir/foo"}, + want: []string{"./dir/foo"}, }, { - name: "files/*", - p: PredictFiles("x*"), - arg: "./dir/", - want: []string{"./dir/", "./dir/x"}, + name: "files/md", + p: PredictFiles("*.md"), + argList: []string{"", ".", "./"}, + want: []string{"./", "./dir/", "./outer/", "./readme.md"}, }, { - name: "files/md", - p: PredictFiles("*.md"), - want: []string{"./", "./dir/", "./readme.md"}, + name: "dirs", + p: PredictDirs("*"), + argList: []string{"./dir/", "./di", "di", "dir", "dir/"}, + want: []string{"./dir/"}, }, { - name: "dirs", - p: PredictDirs("*"), - arg: "./dir/", - want: []string{"./dir/"}, + name: "predict anything in dir", + p: PredictFiles("*"), + argList: []string{"./dir", "dir", "./dir/", "./di"}, + want: []string{"./dir/", "./dir/foo", "./dir/bar"}, }, { - name: "dirs and files", - p: PredictFiles("*"), - arg: "./dir", - want: []string{"./dir/", "./dir/x"}, + name: "root directories", + p: PredictDirs("*"), + argList: []string{"", ".", "./"}, + want: []string{"./", "./dir/", "./outer/"}, }, { - name: "dirs", - p: PredictDirs("*"), - want: []string{"./", "./dir/"}, + name: "nested directories", + p: PredictDirs("*.md"), + argList: []string{"ou", "./ou", "./outer", "./outer/"}, + want: []string{"./outer/", "./outer/inner/"}, }, { - name: "subdir", - p: PredictFiles("*"), - arg: "./dir/", - want: []string{"./dir/", "./dir/x"}, + name: "nested inner directory", + p: PredictFiles("*.md"), + argList: []string{"outer/i"}, + want: []string{"./outer/inner/", "./outer/inner/readme.md"}, }, } for _, tt := range tests { - t.Run(tt.name+"?arg='"+tt.arg+"'", func(t *testing.T) { - matches := tt.p.Predict(newArgs(strings.Split(tt.arg, " "))) + // no args in argList, means an empty argument + if len(tt.argList) == 0 { + tt.argList = append(tt.argList, "") + } + + for _, arg := range tt.argList { + t.Run(tt.name+"/arg="+arg, func(t *testing.T) { + + matches := tt.p.Predict(newArgs(strings.Split(arg, " "))) - sort.Strings(matches) - sort.Strings(tt.want) + sort.Strings(matches) + sort.Strings(tt.want) - got := strings.Join(matches, ",") - want := strings.Join(tt.want, ",") + got := strings.Join(matches, ",") + want := strings.Join(tt.want, ",") - if got != want { - t.Errorf("failed %s\ngot = %s\nwant: %s", t.Name(), got, want) - } - }) + if got != want { + t.Errorf("failed %s\ngot = %s\nwant: %s", t.Name(), got, want) + } + }) + } } } |
