ref: a9a93d082d8640684b7fd0076c64ea808ea7f762
parent: b09a40333f382cc1034d2eda856230258ab6b8cc
author: Bjørn Erik Pedersen <[email protected]>
date: Wed Nov 28 07:28:24 EST 2018
hugolib: Fall back to title in ByLinkTitle sort Fixes #4953
--- a/hugolib/page.go
+++ b/hugolib/page.go
@@ -18,6 +18,7 @@
"context"
"errors"
"fmt"
+ "math/rand"
"reflect"
"github.com/gohugoio/hugo/common/maps"
@@ -515,6 +516,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 {
--- a/hugolib/pageSort.go
+++ b/hugolib/pageSort.go
@@ -155,7 +155,7 @@
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)
--- a/hugolib/pageSort_test.go
+++ b/hugolib/pageSort_test.go
@@ -20,6 +20,7 @@
"time"
"github.com/stretchr/testify/assert"
+ "github.com/stretchr/testify/require"
)
func TestDefaultSort(t *testing.T) {
@@ -56,6 +57,37 @@
assert.Equal(t, "al", p[0].LinkTitle())
assert.Equal(t, "bl", p[1].LinkTitle())
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) {