mirror of
				https://github.com/gohugoio/hugo.git
				synced 2024-05-11 05:54:58 +00: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