hugolib: Fix PrevInSection/NextInSection for nested sections
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Wed, 1 May 2019 15:51:03 +0000 (17:51 +0200)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Wed, 1 May 2019 17:34:28 +0000 (19:34 +0200)
This was broken in Hugo 0.55.0.

Fixes #5883

hugolib/site.go
hugolib/site_sections_test.go

index 4952250933ac6f6952dba3122c3e6d626bd83a38..7cc80e22fcc39ac8b39dd7ed6a00d1d0b0a638d8 100644 (file)
@@ -220,7 +220,7 @@ func (s *Site) prepareInits() {
                        if p1.IsPage() && p1.Section() == "" {
                                rootSection = append(rootSection, i)
                        }
-                       if p1.IsSection() && len(p1.SectionsEntries()) <= 1 {
+                       if p1.IsSection() {
                                sectionPages := p1.Pages()
                                for i, p2 := range sectionPages {
                                        p2s := p2.(*pageState)
index 3adfb2b57759c6249f4b38ded91e26c8b0cc0490..199947c31315ca17cfa5e47ffd6f1bf7fa16d1e3 100644 (file)
@@ -330,3 +330,48 @@ PAG|{{ .Title }}|{{ $sect.InSection . }}
        th.assertFileContent("public/l1/l2/page/2/index.html", "L1/l2-IsActive: true", "PAG|T2_3|true")
 
 }
+
+func TestNextInSectionNested(t *testing.T) {
+       t.Parallel()
+
+       pageContent := `---
+title: "The Page"
+weight: %d
+---
+Some content.
+`
+       createPageContent := func(weight int) string {
+               return fmt.Sprintf(pageContent, weight)
+       }
+
+       b := newTestSitesBuilder(t)
+       b.WithSimpleConfigFile()
+       b.WithTemplates("_default/single.html", `
+Prev: {{ with .PrevInSection }}{{ .RelPermalink }}{{ end }}|
+Next: {{ with .NextInSection }}{{ .RelPermalink }}{{ end }}|
+`)
+
+       b.WithContent("blog/page1.md", createPageContent(1))
+       b.WithContent("blog/page2.md", createPageContent(2))
+       b.WithContent("blog/cool/_index.md", createPageContent(1))
+       b.WithContent("blog/cool/cool1.md", createPageContent(1))
+       b.WithContent("blog/cool/cool2.md", createPageContent(2))
+       b.WithContent("root1.md", createPageContent(1))
+       b.WithContent("root2.md", createPageContent(2))
+
+       b.Build(BuildCfg{})
+
+       b.AssertFileContent("public/root1/index.html",
+               "Prev: /root2/|", "Next: |")
+       b.AssertFileContent("public/root2/index.html",
+               "Prev: |", "Next: /root1/|")
+       b.AssertFileContent("public/blog/page1/index.html",
+               "Prev: /blog/page2/|", "Next: |")
+       b.AssertFileContent("public/blog/page2/index.html",
+               "Prev: |", "Next: /blog/page1/|")
+       b.AssertFileContent("public/blog/cool/cool1/index.html",
+               "Prev: /blog/cool/cool2/|", "Next: |")
+       b.AssertFileContent("public/blog/cool/cool2/index.html",
+               "Prev: |", "Next: /blog/cool/cool1/|")
+
+}