"context"
"errors"
"fmt"
+ "math/rand"
"reflect"
"github.com/gohugoio/hugo/common/maps"
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 {
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)
"time"
"github.com/stretchr/testify/assert"
+ "github.com/stretchr/testify/require"
)
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)