hugo

Unnamed repository; edit this file 'description' to name the repository.

git clone git://git.shimmy1996.com/hugo.git
commit 2d159e9cc7a25832e4b0cad226b149f7c4624708
parent f45cb3172862140883cfa08bd401c17e1ada5b39
Author: Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Date:   Thu, 30 Jan 2020 18:35:40 +0100

Do not render alias paginator pages for non-HTML outputs

Update #6797

Diffstat:
Mhugolib/paginator_test.go | 33+++++++++++++++++++++++++++++++++
Mhugolib/site_render.go | 12+++++++-----
2 files changed, 40 insertions(+), 5 deletions(-)
diff --git a/hugolib/paginator_test.go b/hugolib/paginator_test.go
@@ -17,6 +17,8 @@ import (
 	"fmt"
 	"path/filepath"
 	"testing"
+
+	qt "github.com/frankban/quicktest"
 )
 
 func TestPaginator(t *testing.T) {
@@ -105,3 +107,34 @@ func TestPaginateWithSort(t *testing.T) {
 	b.Build(BuildCfg{}).AssertFileContent("public/index.html",
 		filepath.FromSlash("|content/sect/doc1.nn.md|content/sect/doc1.nb.md|content/sect/doc1.fr.md|content/sect/doc1.en.md"))
 }
+
+// https://github.com/gohugoio/hugo/issues/6797
+func TestPaginateOutputFormat(t *testing.T) {
+	b := newTestSitesBuilder(t).WithSimpleConfigFile()
+	b.WithContent("_index.md", `---
+title: "Home"
+cascade:
+  outputs:
+    - JSON
+---`)
+
+	for i := 0; i < 22; i++ {
+		b.WithContent(fmt.Sprintf("p%d.md", i+1), fmt.Sprintf(`---
+title: "Page"
+weight: %d
+---`, i+1))
+	}
+
+	b.WithTemplatesAdded("index.json", `JSON: {{ .Paginator.TotalNumberOfElements }}: {{ range .Paginator.Pages }}|{{ .RelPermalink }}{{ end }}:DONE`)
+	b.Build(BuildCfg{})
+
+	b.AssertFileContent("public/index.json",
+		`JSON: 22
+|/p1/index.json|/p2/index.json|
+`)
+
+	// This looks odd, so are most bugs.
+	b.Assert(b.CheckExists("public/page/1/index.json/index.html"), qt.Equals, false)
+	b.Assert(b.CheckExists("public/page/1/index.json"), qt.Equals, false)
+	b.AssertFileContent("public/page/2/index.json", `JSON: 22: |/p11/index.json|/p12/index.json`)
+}
diff --git a/hugolib/site_render.go b/hugolib/site_render.go
@@ -205,12 +205,14 @@ func (s *Site) renderPaginator(p *pageState, templ tpl.Template) error {
 		panic(fmt.Sprintf("invalid paginator state for %q", p.pathOrTitle()))
 	}
 
-	// Write alias for page 1
-	d.Addends = fmt.Sprintf("/%s/%d", paginatePath, 1)
-	targetPaths := page.CreateTargetPaths(d)
+	if f.IsHTML {
+		// Write alias for page 1
+		d.Addends = fmt.Sprintf("/%s/%d", paginatePath, 1)
+		targetPaths := page.CreateTargetPaths(d)
 
-	if err := s.writeDestAlias(targetPaths.TargetFilename, p.Permalink(), f, nil); err != nil {
-		return err
+		if err := s.writeDestAlias(targetPaths.TargetFilename, p.Permalink(), f, nil); err != nil {
+			return err
+		}
 	}
 
 	// Render pages for the rest