Fix some change detection issues on server reloads

* Fix change detection when .GetPage/site.GetPage is used from shortcode
* Fix stale content for GetPage results with short name lookups on server reloads

Fixes #7623
Fixes #7624
Fixes #7625
This commit is contained in:
Bjørn Erik Pedersen
2020-09-07 15:07:10 +02:00
parent 3ba7c92530
commit 4055c12184
14 changed files with 228 additions and 28 deletions

View File

@@ -18,8 +18,11 @@ package page
import (
"html/template"
"github.com/gohugoio/hugo/identity"
"github.com/bep/gitmap"
"github.com/gohugoio/hugo/config"
"github.com/gohugoio/hugo/tpl"
"github.com/gohugoio/hugo/common/hugo"
"github.com/gohugoio/hugo/common/maps"
@@ -97,6 +100,9 @@ type GetPageProvider interface {
// This will return nil when no page could be found, and will return
// an error if the ref is ambiguous.
GetPage(ref string) (Page, error)
// GetPageWithTemplateInfo is for internal use only.
GetPageWithTemplateInfo(info tpl.Info, ref string) (Page, error)
}
// GitInfoProvider provides Git info.
@@ -260,6 +266,9 @@ type PageWithoutContent interface {
// e.g. GetTerms("categories")
GetTerms(taxonomy string) Pages
// Used in change/dependency tracking.
identity.Provider
DeprecatedWarningPageMethods
}

View File

@@ -19,7 +19,10 @@ import (
"html/template"
"time"
"github.com/gohugoio/hugo/identity"
"github.com/gohugoio/hugo/hugofs/files"
"github.com/gohugoio/hugo/tpl"
"github.com/gohugoio/hugo/hugofs"
@@ -170,6 +173,10 @@ func (p *nopPage) GetPage(ref string) (Page, error) {
return nil, nil
}
func (p *nopPage) GetPageWithTemplateInfo(info tpl.Info, ref string) (Page, error) {
return nil, nil
}
func (p *nopPage) GetParam(key string) interface{} {
return nil
}
@@ -484,3 +491,7 @@ func (p *nopPage) Weight() int {
func (p *nopPage) WordCount() int {
return 0
}
func (p *nopPage) GetIdentity() identity.Identity {
return identity.NewPathIdentity("content", "foo/bar.md")
}

View File

@@ -20,6 +20,8 @@ import (
"time"
"github.com/gohugoio/hugo/hugofs/files"
"github.com/gohugoio/hugo/identity"
"github.com/gohugoio/hugo/tpl"
"github.com/gohugoio/hugo/modules"
@@ -218,6 +220,10 @@ func (p *testPage) GetPage(ref string) (Page, error) {
panic("not implemented")
}
func (p *testPage) GetPageWithTemplateInfo(info tpl.Info, ref string) (Page, error) {
panic("not implemented")
}
func (p *testPage) GetParam(key string) interface{} {
panic("not implemented")
}
@@ -565,6 +571,10 @@ func (p *testPage) WordCount() int {
panic("not implemented")
}
func (p *testPage) GetIdentity() identity.Identity {
panic("not implemented")
}
func createTestPages(num int) Pages {
pages := make(Pages, num)