mirror of https://github.com/gohugoio/hugo
116 lines
2.8 KiB
Go
116 lines
2.8 KiB
Go
package segments
|
|
|
|
import (
|
|
"testing"
|
|
|
|
qt "github.com/frankban/quicktest"
|
|
)
|
|
|
|
func TestCompileSegments(t *testing.T) {
|
|
c := qt.New(t)
|
|
|
|
c.Run("excludes", func(c *qt.C) {
|
|
fields := []SegmentMatcherFields{
|
|
{
|
|
Lang: "n*",
|
|
Output: "rss",
|
|
},
|
|
}
|
|
|
|
match, err := compileSegments(fields)
|
|
c.Assert(err, qt.IsNil)
|
|
|
|
check := func() {
|
|
c.Assert(match, qt.IsNotNil)
|
|
c.Assert(match(SegmentMatcherFields{Lang: "no"}), qt.Equals, false)
|
|
c.Assert(match(SegmentMatcherFields{Lang: "no", Kind: "page"}), qt.Equals, false)
|
|
c.Assert(match(SegmentMatcherFields{Lang: "no", Output: "rss"}), qt.Equals, true)
|
|
c.Assert(match(SegmentMatcherFields{Lang: "no", Output: "html"}), qt.Equals, false)
|
|
c.Assert(match(SegmentMatcherFields{Kind: "page"}), qt.Equals, false)
|
|
c.Assert(match(SegmentMatcherFields{Lang: "no", Output: "rss", Kind: "page"}), qt.Equals, true)
|
|
}
|
|
|
|
check()
|
|
|
|
fields = []SegmentMatcherFields{
|
|
{
|
|
Path: "/blog/**",
|
|
},
|
|
{
|
|
Lang: "n*",
|
|
Output: "rss",
|
|
},
|
|
}
|
|
|
|
match, err = compileSegments(fields)
|
|
c.Assert(err, qt.IsNil)
|
|
check()
|
|
c.Assert(match(SegmentMatcherFields{Path: "/blog/foo"}), qt.Equals, true)
|
|
})
|
|
|
|
c.Run("includes", func(c *qt.C) {
|
|
fields := []SegmentMatcherFields{
|
|
{
|
|
Path: "/docs/**",
|
|
},
|
|
{
|
|
Lang: "no",
|
|
Output: "rss",
|
|
},
|
|
}
|
|
|
|
match, err := compileSegments(fields)
|
|
c.Assert(err, qt.IsNil)
|
|
c.Assert(match, qt.IsNotNil)
|
|
c.Assert(match(SegmentMatcherFields{Lang: "no"}), qt.Equals, false)
|
|
c.Assert(match(SegmentMatcherFields{Kind: "page"}), qt.Equals, false)
|
|
c.Assert(match(SegmentMatcherFields{Kind: "page", Path: "/blog/foo"}), qt.Equals, false)
|
|
c.Assert(match(SegmentMatcherFields{Lang: "en"}), qt.Equals, false)
|
|
c.Assert(match(SegmentMatcherFields{Lang: "no", Output: "rss"}), qt.Equals, true)
|
|
c.Assert(match(SegmentMatcherFields{Lang: "no", Output: "html"}), qt.Equals, false)
|
|
c.Assert(match(SegmentMatcherFields{Kind: "page", Path: "/docs/foo"}), qt.Equals, true)
|
|
})
|
|
|
|
c.Run("includes variant1", func(c *qt.C) {
|
|
c.Skip()
|
|
|
|
fields := []SegmentMatcherFields{
|
|
{
|
|
Kind: "home",
|
|
},
|
|
{
|
|
Path: "{/docs,/docs/**}",
|
|
},
|
|
}
|
|
|
|
match, err := compileSegments(fields)
|
|
c.Assert(err, qt.IsNil)
|
|
c.Assert(match, qt.IsNotNil)
|
|
c.Assert(match(SegmentMatcherFields{Path: "/blog/foo"}), qt.Equals, false)
|
|
c.Assert(match(SegmentMatcherFields{Kind: "page", Path: "/docs/foo"}), qt.Equals, true)
|
|
c.Assert(match(SegmentMatcherFields{Kind: "home", Path: "/"}), qt.Equals, true)
|
|
})
|
|
}
|
|
|
|
func BenchmarkSegmentsMatch(b *testing.B) {
|
|
fields := []SegmentMatcherFields{
|
|
{
|
|
Path: "/docs/**",
|
|
},
|
|
{
|
|
Lang: "no",
|
|
Output: "rss",
|
|
},
|
|
}
|
|
|
|
match, err := compileSegments(fields)
|
|
if err != nil {
|
|
b.Fatal(err)
|
|
}
|
|
|
|
b.ResetTimer()
|
|
for i := 0; i < b.N; i++ {
|
|
match(SegmentMatcherFields{Lang: "no", Output: "rss"})
|
|
}
|
|
}
|