]> git.maquefel.me Git - brevno-suite/hugo/commitdiff
Improve error message when attempting to paginate from a single page template
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Wed, 31 Jan 2024 15:19:52 +0000 (16:19 +0100)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Wed, 31 Jan 2024 15:54:34 +0000 (16:54 +0100)
Fixes #11953

hugolib/page__output.go
hugolib/paginator_test.go
resources/page/pagination.go

index 6fae10740e94679e768f9800f17f4038182f1d91..02956e87c6837816c9f042b68a2c428e74f23bdc 100644 (file)
@@ -14,6 +14,8 @@
 package hugolib
 
 import (
+       "fmt"
+
        "github.com/gohugoio/hugo/identity"
        "github.com/gohugoio/hugo/output"
        "github.com/gohugoio/hugo/resources/page"
@@ -37,12 +39,16 @@ func newPageOutput(
        targetPathsProvider = ft
        linksProvider = ft
 
-       var paginatorProvider page.PaginatorProvider = page.NopPage
+       var paginatorProvider page.PaginatorProvider
        var pag *pagePaginator
 
        if render && ps.IsNode() {
                pag = newPagePaginator(ps)
                paginatorProvider = pag
+       } else {
+               paginatorProvider = page.PaginatorNotSupportedFunc(func() error {
+                       return fmt.Errorf("pagination not supported for pages of kind %q", ps.Kind())
+               })
        }
 
        var dependencyManager identity.Manager = identity.NopManager
index 98b67bca5137ed2c6a2ba005d2afe3e4d93b7331..919f532cac819b63b96faed069139c46dfdb119c 100644 (file)
@@ -157,3 +157,16 @@ Len Pag: {{ len $pag.Pages }}
 
        b.AssertFileContent("public/index.html", "Len: 0", "Len Pag: 0")
 }
+
+func TestPaginatorNodePagesOnly(t *testing.T) {
+       files := `
+-- hugo.toml --
+paginate = 1
+-- content/p1.md --
+-- layouts/_default/single.html --
+Paginator: {{ .Paginator }}    
+`
+       b, err := TestE(t, files)
+       b.Assert(err, qt.IsNotNil)
+       b.Assert(err.Error(), qt.Contains, `error calling Paginator: pagination not supported for pages of kind "page"`)
+}
index 9113b60622080e7058e074eec1b46b5c927361ab..4beb96e50940c0b060337e2f6a05664a22074074 100644 (file)
@@ -32,6 +32,18 @@ type PaginatorProvider interface {
        Paginate(pages any, options ...any) (*Pager, error)
 }
 
+var _ PaginatorProvider = (*PaginatorNotSupportedFunc)(nil)
+
+type PaginatorNotSupportedFunc func() error
+
+func (f PaginatorNotSupportedFunc) Paginate(pages any, options ...any) (*Pager, error) {
+       return nil, f()
+}
+
+func (f PaginatorNotSupportedFunc) Paginator(options ...any) (*Pager, error) {
+       return nil, f()
+}
+
 // Pager represents one of the elements in a paginator.
 // The number, starting on 1, represents its place.
 type Pager struct {