Skip to content

Commit

Permalink
hugolib: Fall back to title in ByLinkTitle sort
Browse files Browse the repository at this point in the history
Fixes #4953
  • Loading branch information
bep committed Nov 28, 2018
1 parent b09a403 commit a9a93d0
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 1 deletion.
9 changes: 9 additions & 0 deletions hugolib/page.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import (
"context"
"errors"
"fmt"
"math/rand"
"reflect"

"github.com/gohugoio/hugo/common/maps"
Expand Down Expand Up @@ -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 {
Expand Down
2 changes: 1 addition & 1 deletion hugolib/pageSort.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
32 changes: 32 additions & 0 deletions hugolib/pageSort_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import (
"time"

"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)

func TestDefaultSort(t *testing.T) {
Expand Down Expand Up @@ -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)
Expand Down

0 comments on commit a9a93d0

Please sign in to comment.