mirror of
https://github.com/gohugoio/hugo.git
synced 2025-08-19 21:21:39 +02:00
@@ -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)
|
||||
|
Reference in New Issue
Block a user