mirror of
https://github.com/gohugoio/hugo.git
synced 2025-08-20 21:31:32 +02:00
@@ -18,6 +18,7 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"math/rand"
|
||||||
"reflect"
|
"reflect"
|
||||||
|
|
||||||
"github.com/gohugoio/hugo/common/maps"
|
"github.com/gohugoio/hugo/common/maps"
|
||||||
@@ -517,6 +518,14 @@ func (ps Pages) String() string {
|
|||||||
return fmt.Sprintf("Pages(%d)", len(ps))
|
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 {
|
func (ps Pages) findPagePosByFilename(filename string) int {
|
||||||
for i, x := range ps {
|
for i, x := range ps {
|
||||||
if x.Filename() == filename {
|
if x.Filename() == filename {
|
||||||
|
@@ -155,7 +155,7 @@ func (p Pages) ByLinkTitle() Pages {
|
|||||||
const key = "pageSort.ByLinkTitle"
|
const key = "pageSort.ByLinkTitle"
|
||||||
|
|
||||||
linkTitle := func(p1, p2 *Page) bool {
|
linkTitle := func(p1, p2 *Page) bool {
|
||||||
return p1.linkTitle < p2.linkTitle
|
return p1.LinkTitle() < p2.LinkTitle()
|
||||||
}
|
}
|
||||||
|
|
||||||
pages, _ := spc.get(key, pageBy(linkTitle).Sort, p)
|
pages, _ := spc.get(key, pageBy(linkTitle).Sort, p)
|
||||||
|
@@ -20,6 +20,7 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestDefaultSort(t *testing.T) {
|
func TestDefaultSort(t *testing.T) {
|
||||||
@@ -58,6 +59,37 @@ func TestDefaultSort(t *testing.T) {
|
|||||||
assert.Equal(t, "cl", p[2].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) {
|
func TestSortByN(t *testing.T) {
|
||||||
t.Parallel()
|
t.Parallel()
|
||||||
s := newTestSite(t)
|
s := newTestSite(t)
|
||||||
|
Reference in New Issue
Block a user