diff options
author | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2019-11-26 16:20:31 +0300 |
---|---|---|
committer | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2019-11-26 19:04:39 +0300 |
commit | 01766439246add22a6e6d0c12f932610be55cd8a (patch) | |
tree | aa748a3c1cd6c5ab52caee1b29bd12866ce9f05a | |
parent | da53523599b43261520a22d77019b390aaa072e7 (diff) |
hugolib: Fix cascade in server mode
Fixes #6538
-rw-r--r-- | hugolib/cascade_test.go | 44 | ||||
-rw-r--r-- | hugolib/pages_map.go | 14 |
2 files changed, 57 insertions, 1 deletions
diff --git a/hugolib/cascade_test.go b/hugolib/cascade_test.go index d6701cf28..6b176ad64 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 bc8589142..7c53aaf3f 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) |