mirror of https://gerrit.hackerspace.pl/hscloud
100 lines
2.3 KiB
Go
100 lines
2.3 KiB
Go
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)
|
|
}
|
|
})
|
|
}
|
|
}
|