Permalink
Browse files

hugolib: Fall back to title in ByLinkTitle sort

Fixes #4953
  • Loading branch information...
bep committed Nov 28, 2018
1 parent b09a403 commit a9a93d082d8640684b7fd0076c64ea808ea7f762
Showing with 42 additions and 1 deletion.
  1. +9 −0 hugolib/page.go
  2. +1 −1 hugolib/pageSort.go
  3. +32 −0 hugolib/pageSort_test.go
@@ -18,6 +18,7 @@ import (
"context"
"errors"
"fmt"
"math/rand"
"reflect"
"github.com/gohugoio/hugo/common/maps"
@@ -517,6 +518,14 @@ func (ps Pages) String() string {
return fmt.Sprintf("Pages(%d)", len(ps))
}
// Used in tests.
func (ps Pages) shuffle() {
for i := range ps {
j := rand.Intn(i + 1)
ps[i], ps[j] = ps[j], ps[i]
}
}
func (ps Pages) findPagePosByFilename(filename string) int {
for i, x := range ps {
if x.Filename() == filename {
@@ -155,7 +155,7 @@ func (p Pages) ByLinkTitle() Pages {
const key = "pageSort.ByLinkTitle"
linkTitle := func(p1, p2 *Page) bool {
return p1.linkTitle < p2.linkTitle
return p1.LinkTitle() < p2.LinkTitle()
}
pages, _ := spc.get(key, pageBy(linkTitle).Sort, p)
@@ -20,6 +20,7 @@ import (
"time"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestDefaultSort(t *testing.T) {
@@ -58,6 +59,37 @@ func TestDefaultSort(t *testing.T) {
assert.Equal(t, "cl", p[2].LinkTitle())
}
// https://github.com/gohugoio/hugo/issues/4953
func TestSortByLinkTitle(t *testing.T) {
t.Parallel()
assert := require.New(t)
s := newTestSite(t)
pages := createSortTestPages(s, 6)
for i, p := range pages {
if i < 5 {
p.title = fmt.Sprintf("title%d", i)
}
if i > 2 {
p.linkTitle = fmt.Sprintf("linkTitle%d", i)
}
}
pages.shuffle()
bylt := pages.ByLinkTitle()
for i, p := range bylt {
msg := fmt.Sprintf("test: %d", i)
if i < 3 {
assert.Equal(fmt.Sprintf("linkTitle%d", i+3), p.LinkTitle(), msg)
} else {
assert.Equal(fmt.Sprintf("title%d", i-3), p.LinkTitle(), msg)
}
}
}
func TestSortByN(t *testing.T) {
t.Parallel()
s := newTestSite(t)

0 comments on commit a9a93d0

Please sign in to comment.