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"
|
"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)
|
||||||
|
|
Loading…
Reference in a new issue