88 lines
1.8 KiB
Go
88 lines
1.8 KiB
Go
package main
|
|
|
|
import (
|
|
"os"
|
|
"path"
|
|
"testing"
|
|
)
|
|
|
|
func TestConfigTargets(t *testing.T) {
|
|
touch := func(t *testing.T, p string) {
|
|
if err := os.WriteFile(p, nil, os.ModePerm); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
}
|
|
|
|
cases := map[string]struct {
|
|
setup func(*testing.T, string)
|
|
given string
|
|
want []string
|
|
}{
|
|
"does not exist": {
|
|
given: "x",
|
|
want: []string{"x"},
|
|
},
|
|
"one file": {
|
|
setup: func(t *testing.T, d string) {
|
|
touch(t, path.Join(d, "x"))
|
|
},
|
|
given: "x",
|
|
want: []string{"x"},
|
|
},
|
|
"two files": {
|
|
setup: func(t *testing.T, d string) {
|
|
touch(t, path.Join(d, "a"))
|
|
touch(t, path.Join(d, "root.yaml"))
|
|
touch(t, path.Join(d, "z"))
|
|
},
|
|
given: "",
|
|
want: []string{"root.yaml", "a", "z"},
|
|
},
|
|
"empty dir": {
|
|
setup: func(t *testing.T, d string) {
|
|
os.Mkdir(path.Join(d, "x"), os.ModePerm)
|
|
},
|
|
given: "x",
|
|
want: []string{"root.yaml"},
|
|
},
|
|
"dir": {
|
|
setup: func(t *testing.T, d string) {
|
|
os.Mkdir(path.Join(d, "x"), os.ModePerm)
|
|
touch(t, path.Join(d, "x", "a"))
|
|
touch(t, path.Join(d, "x", "a.todo.xyz"))
|
|
touch(t, path.Join(d, "x", "b"))
|
|
},
|
|
given: "x",
|
|
want: []string{"a", "a.todo.xyz", "b"},
|
|
},
|
|
}
|
|
|
|
for name, d := range cases {
|
|
c := d
|
|
t.Run(name, func(t *testing.T) {
|
|
d := t.TempDir()
|
|
if c.setup != nil {
|
|
c.setup(t, d)
|
|
}
|
|
config := config{target: path.Join(d, c.given)}
|
|
got := config.Targets()
|
|
for i := range got {
|
|
got[i] = path.Base(got[i])
|
|
}
|
|
for i := range c.want {
|
|
c.want[i] = path.Base(c.want[i])
|
|
}
|
|
|
|
t.Logf("want\n\t%+v, got \n\t%+v", c.want, got)
|
|
if len(got) != len(c.want) {
|
|
t.Error(c.want, got)
|
|
}
|
|
for i := range got {
|
|
if got[i] != c.want[i] {
|
|
t.Errorf("[%d] wanted %s, got %s", i, c.want[i], got[i])
|
|
}
|
|
}
|
|
})
|
|
}
|
|
}
|