Fix mainSections logic - hugo - [fork] hugo port for 9front
 (HTM) git clone git@git.drkhsh.at/hugo.git
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) Submodules
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 67524c993623871626f0f22e6a2ac705a816a959
 (DIR) parent 952a3194962dd91f87e5bd227a1591b00c39ff05
 (HTM) Author: Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
       Date:   Thu, 15 Aug 2019 12:11:49 +0200
       
       Fix mainSections logic
       
       Fixes #6217
       
       Diffstat:
         M hugolib/pagecollections.go          |       2 +-
         M hugolib/site_test.go                |      57 +++++++++++++++++++++++++++++++
       
       2 files changed, 58 insertions(+), 1 deletion(-)
       ---
 (DIR) diff --git a/hugolib/pagecollections.go b/hugolib/pagecollections.go
       @@ -441,7 +441,7 @@ func (c *PageCollections) createWorkAllPages() error {
        
                        if parentBucket != nil {
        
       -                        if !mainSectionsFound && strings.Count(s, "/") == 1 {
       +                        if !mainSectionsFound && strings.Count(s, "/") == 1 && bucket.owner.IsSection() {
                                        // Root section
                                        rootBuckets = append(rootBuckets, bucket)
                                }
 (DIR) diff --git a/hugolib/site_test.go b/hugolib/site_test.go
       @@ -20,6 +20,8 @@ import (
                "strings"
                "testing"
        
       +        "github.com/spf13/viper"
       +
                "github.com/markbates/inflect"
        
                "github.com/gohugoio/hugo/helpers"
       @@ -364,6 +366,61 @@ func TestShouldNotWriteZeroLengthFilesToDestination(t *testing.T) {
                th.assertFileNotExist(filepath.Join("public", "index.html"))
        }
        
       +func TestMainSections(t *testing.T) {
       +        c := qt.New(t)
       +        for _, paramSet := range []bool{false, true} {
       +                c.Run(fmt.Sprintf("param-%t", paramSet), func(c *qt.C) {
       +                        v := viper.New()
       +                        if paramSet {
       +                                v.Set("params", map[string]interface{}{
       +                                        "mainSections": []string{"a1", "a2"},
       +                                })
       +                        }
       +
       +                        b := newTestSitesBuilder(c).WithViper(v)
       +
       +                        for i := 0; i < 20; i++ {
       +                                b.WithContent(fmt.Sprintf("page%d.md", i), `---
       +title: "Page"
       +---
       +`)
       +                        }
       +
       +                        for i := 0; i < 5; i++ {
       +                                b.WithContent(fmt.Sprintf("blog/page%d.md", i), `---
       +title: "Page"
       +tags: ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j"]
       +---
       +`)
       +                        }
       +
       +                        for i := 0; i < 3; i++ {
       +                                b.WithContent(fmt.Sprintf("docs/page%d.md", i), `---
       +title: "Page"
       +---
       +`)
       +                        }
       +
       +                        b.WithTemplates("index.html", `
       +mainSections: {{ .Site.Params.mainSections }}
       +
       +{{ range (where .Site.RegularPages "Type" "in" .Site.Params.mainSections) }}
       +Main section page: {{ .RelPermalink }}
       +{{ end }}
       +`)
       +
       +                        b.Build(BuildCfg{})
       +
       +                        if paramSet {
       +                                b.AssertFileContent("public/index.html", "mainSections: [a1 a2]")
       +                        } else {
       +                                b.AssertFileContent("public/index.html", "mainSections: [blog]", "Main section page: /blog/page3/")
       +                        }
       +
       +                })
       +        }
       +}
       +
        // Issue #1176
        func TestSectionNaming(t *testing.T) {
                for _, canonify := range []bool{true, false} {