From: Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Date: Tue, 26 Nov 2019 13:20:31 +0000 (+0100)
Subject: hugolib: Fix cascade in server mode
X-Git-Tag: v0.60.0~10
X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=01766439246add22a6e6d0c12f932610be55cd8a;p=brevno-suite%2Fhugo

hugolib: Fix cascade in server mode

Fixes #6538
---

diff --git a/hugolib/cascade_test.go b/hugolib/cascade_test.go
index d6701cf2..6b176ad6 100644
--- a/hugolib/cascade_test.go
+++ b/hugolib/cascade_test.go
@@ -100,6 +100,50 @@ func TestCascade(t *testing.T) {
 
 }
 
+func TestCascadeEdit(t *testing.T) {
+	p1Content := `---
+title: P1
+---
+`
+	b := newTestSitesBuilder(t).Running()
+	b.WithTemplatesAdded("_default/single.html", `Banner: {{ .Params.banner }}|Layout: {{ .Layout }}|Type: {{ .Type }}|Content: {{ .Content }}`)
+	b.WithContent("post/_index.md", `
+---
+title: Post
+cascade:
+  banner: post.jpg
+  layout: postlayout
+  type: posttype
+---
+`)
+
+	b.WithContent("post/dir/_index.md", `
+---
+title: Dir
+---
+`, "post/dir/p1.md", p1Content)
+	b.Build(BuildCfg{})
+
+	assert := func() {
+		b.Helper()
+		b.AssertFileContent("public/post/dir/p1/index.html",
+			`Banner: post.jpg|`,
+			`Layout: postlayout`,
+			`Type: posttype`,
+		)
+	}
+
+	assert()
+
+	b.EditFiles("content/post/dir/p1.md", p1Content+"\ncontent edit")
+	b.Build(BuildCfg{})
+
+	assert()
+	b.AssertFileContent("public/post/dir/p1/index.html",
+		`content edit`,
+	)
+}
+
 func newCascadeTestBuilder(t testing.TB, langs []string) *sitesBuilder {
 	p := func(m map[string]interface{}) string {
 		var yamlStr string
diff --git a/hugolib/pages_map.go b/hugolib/pages_map.go
index bc858914..7c53aaf3 100644
--- a/hugolib/pages_map.go
+++ b/hugolib/pages_map.go
@@ -148,7 +148,19 @@ func (m *pagesMap) addBucketFor(key string, p *pageState, meta map[string]interf
 
 	disabled := !m.s.isEnabled(p.Kind())
 
-	bucket := &pagesMapBucket{owner: p, view: isView, meta: meta, disabled: disabled}
+	var cascade map[string]interface{}
+	if p.bucket != nil {
+		cascade = p.bucket.cascade
+	}
+
+	bucket := &pagesMapBucket{
+		owner:    p,
+		view:     isView,
+		cascade:  cascade,
+		meta:     meta,
+		disabled: disabled,
+	}
+
 	p.bucket = bucket
 
 	m.r.Insert(key, bucket)