mirror of
https://github.com/gohugoio/hugo.git
synced 2024-12-28 12:12:50 +00:00
Tighten page kind logic, introduce tests
This commit is contained in:
parent
87217d1d0a
commit
8125b4b03d
2 changed files with 64 additions and 18 deletions
|
@ -759,7 +759,7 @@ func (s *Site) newPage(filename string) *Page {
|
||||||
func (s *Site) newPageFromFile(fi *fileInfo) *Page {
|
func (s *Site) newPageFromFile(fi *fileInfo) *Page {
|
||||||
return &Page{
|
return &Page{
|
||||||
pageInit: &pageInit{},
|
pageInit: &pageInit{},
|
||||||
Kind: kindFromFilename(fi.Path()),
|
Kind: kindFromFileInfo(fi),
|
||||||
contentType: "",
|
contentType: "",
|
||||||
Source: Source{File: fi},
|
Source: Source{File: fi},
|
||||||
Keywords: []string{}, Sitemap: Sitemap{Priority: -1},
|
Keywords: []string{}, Sitemap: Sitemap{Priority: -1},
|
||||||
|
@ -2010,24 +2010,16 @@ func sectionsFromDir(dirname string) []string {
|
||||||
return strings.Split(dirname, helpers.FilePathSeparator)
|
return strings.Split(dirname, helpers.FilePathSeparator)
|
||||||
}
|
}
|
||||||
|
|
||||||
const (
|
func kindFromFileInfo(fi *fileInfo) string {
|
||||||
regularPageFileNameDoesNotStartWith = "_index"
|
if fi.TranslationBaseName() == "_index" {
|
||||||
|
if fi.Dir() == "" {
|
||||||
// There can be "my_regular_index_page.md but not /_index_file.md
|
return KindHome
|
||||||
regularPageFileNameDoesNotContain = helpers.FilePathSeparator + regularPageFileNameDoesNotStartWith
|
}
|
||||||
)
|
// Could be index for section, taxonomy, taxonomy term
|
||||||
|
// We don't know enough yet to determine which
|
||||||
func kindFromFilename(filename string) string {
|
return kindUnknown
|
||||||
if !strings.HasPrefix(filename, regularPageFileNameDoesNotStartWith) && !strings.Contains(filename, regularPageFileNameDoesNotContain) {
|
|
||||||
return KindPage
|
|
||||||
}
|
}
|
||||||
|
return KindPage
|
||||||
if strings.HasPrefix(filename, "_index") {
|
|
||||||
return KindHome
|
|
||||||
}
|
|
||||||
|
|
||||||
// We don't know enough yet to determine the type.
|
|
||||||
return kindUnknown
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *Page) setValuesForKind(s *Site) {
|
func (p *Page) setValuesForKind(s *Site) {
|
||||||
|
|
|
@ -1010,6 +1010,60 @@ func TestCreatePage(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestPageKind(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
const sep = helpers.FilePathSeparator
|
||||||
|
var tests = []struct {
|
||||||
|
file string
|
||||||
|
kind string
|
||||||
|
}{
|
||||||
|
{"_index.md", KindHome},
|
||||||
|
{"about.md", KindPage},
|
||||||
|
{"sectionA" + sep + "_index.md", KindSection},
|
||||||
|
{"sectionA" + sep + "about.md", KindPage},
|
||||||
|
{"categories" + sep + "_index.md", KindTaxonomyTerm},
|
||||||
|
{"categories" + sep + "categoryA" + sep + "_index.md", KindTaxonomy},
|
||||||
|
{"tags" + sep + "_index.md", KindTaxonomyTerm},
|
||||||
|
{"tags" + sep + "tagA" + sep + "_index.md", KindTaxonomy},
|
||||||
|
|
||||||
|
// nn is configured as a language
|
||||||
|
{"_index.nn.md", KindHome},
|
||||||
|
{"about.nn.md", KindPage},
|
||||||
|
{"sectionA" + sep + "_index.nn.md", KindSection},
|
||||||
|
{"sectionA" + sep + "about.nn.md", KindPage},
|
||||||
|
|
||||||
|
// should NOT be categorized as KindHome
|
||||||
|
{"_indexNOT.md", KindPage},
|
||||||
|
|
||||||
|
// To be consistent with FileInfo.TranslationBaseName(),
|
||||||
|
// language codes not explicitly configured for the site
|
||||||
|
// are not treated as such. "fr" is not configured as
|
||||||
|
// a language in the test site, so ALL of the
|
||||||
|
// following should be KindPage
|
||||||
|
{"_index.fr.md", KindPage}, //not KindHome
|
||||||
|
{"about.fr.md", KindPage},
|
||||||
|
{"sectionA" + sep + "_index.fr.md", KindPage}, // KindSection
|
||||||
|
{"sectionA" + sep + "about.fr.md", KindPage},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, test := range tests {
|
||||||
|
s := newTestSite(t, "languages.nn.languageName", "Nynorsk")
|
||||||
|
taxonomies := make(map[string]string)
|
||||||
|
taxonomies["tag"] = "tags"
|
||||||
|
taxonomies["category"] = "categories"
|
||||||
|
s.Taxonomies = make(TaxonomyList)
|
||||||
|
for _, plural := range taxonomies {
|
||||||
|
s.Taxonomies[plural] = make(Taxonomy)
|
||||||
|
}
|
||||||
|
|
||||||
|
p, _ := s.NewPage(test.file)
|
||||||
|
p.setValuesForKind(s)
|
||||||
|
if p.Kind != test.kind {
|
||||||
|
t.Errorf("for %s expected p.Kind == %s, got %s", test.file, test.kind, p.Kind)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestDegenerateInvalidFrontMatterShortDelim(t *testing.T) {
|
func TestDegenerateInvalidFrontMatterShortDelim(t *testing.T) {
|
||||||
t.Parallel()
|
t.Parallel()
|
||||||
var tests = []struct {
|
var tests = []struct {
|
||||||
|
|
Loading…
Reference in a new issue