mirror of
https://github.com/gohugoio/hugo.git
synced 2024-11-21 20:46:30 -05:00
parent
b09a40333f
commit
a9a93d082d
3 changed files with 42 additions and 1 deletions
|
@ -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)
|
||||
|
|
Loading…
Reference in a new issue