blob: ba542fe9e336f7251516574e279dd0a152005f95 [file] [log] [blame]
package config
import (
"testing"
"github.com/go-test/deep"
)
func TestParse(t *testing.T) {
for _, test := range []struct {
name string
data string
want *configToml
}{
{
name: "normal config",
data: `
default_index = ["foo.md", "bar.md"]
[template.default]
sources = ["hackdoc/bar.html", "hackdoc/baz.html"]
[template.foo]
sources = ["foo/bar.html", "foo/baz.html"]
`,
want: &configToml{
DefaultIndex: []string{"foo.md", "bar.md"},
Templates: map[string]*configTomlTemplate{
"default": &configTomlTemplate{
Sources: []string{"hackdoc/bar.html", "hackdoc/baz.html"},
},
"foo": &configTomlTemplate{
Sources: []string{"foo/bar.html", "foo/baz.html"},
},
},
},
}, {
name: "empty config",
data: "",
want: &configToml{
DefaultIndex: nil,
Templates: map[string]*configTomlTemplate{},
},
},
} {
t.Run(test.name, func(t *testing.T) {
got, err := parseToml([]byte(test.data))
if err != nil {
t.Fatalf("could not parse config: %w", err)
}
if diff := deep.Equal(test.want, got); diff != nil {
t.Fatal(diff)
}
})
}
}
func TestLocations(t *testing.T) {
for _, test := range []struct {
name string
path string
want []string
}{
{
name: "perforce-style path",
path: "//foo/bar/baz",
want: []string{"//hackdoc.toml", "//foo/hackdoc.toml", "//foo/bar/hackdoc.toml", "//foo/bar/baz/hackdoc.toml"},
}, {
name: "unix-style path",
path: "/foo/bar/baz",
want: []string{"/hackdoc.toml", "/foo/hackdoc.toml", "/foo/bar/hackdoc.toml", "/foo/bar/baz/hackdoc.toml"},
}, {
name: "relative-style path",
path: "foo/bar/baz",
want: []string{"hackdoc.toml", "foo/hackdoc.toml", "foo/bar/hackdoc.toml", "foo/bar/baz/hackdoc.toml"},
}, {
name: "root perforce-style path",
path: "//",
want: []string{"//hackdoc.toml"},
}, {
name: "root unix-style path",
path: "/",
want: []string{"/hackdoc.toml"},
}, {
name: "empty path",
path: "",
want: []string{"hackdoc.toml"},
}, {
name: "weird path",
path: "///what/is///this///",
want: nil,
},
} {
t.Run(test.name, func(t *testing.T) {
got := configFileLocations(test.path)
if diff := deep.Equal(test.want, got); diff != nil {
t.Fatal(diff)
}
})
}
}