2022-04-05 07:57:58 +00:00
|
|
|
// Copyright 2021 The Hugo Authors. All rights reserved.
|
|
|
|
//
|
|
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
|
// you may not use this file except in compliance with the License.
|
|
|
|
// You may obtain a copy of the License at
|
|
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
//
|
|
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
// See the License for the specific language governing permissions and
|
|
|
|
// limitations under the License.
|
|
|
|
|
|
|
|
package page_test
|
|
|
|
|
|
|
|
import (
|
|
|
|
"testing"
|
|
|
|
|
|
|
|
"github.com/gohugoio/hugo/hugolib"
|
|
|
|
)
|
|
|
|
|
|
|
|
func TestGroupByLocalizedDate(t *testing.T) {
|
|
|
|
files := `
|
|
|
|
-- config.toml --
|
|
|
|
defaultContentLanguage = 'en'
|
|
|
|
defaultContentLanguageInSubdir = true
|
|
|
|
[languages]
|
|
|
|
[languages.en]
|
|
|
|
title = 'My blog'
|
|
|
|
weight = 1
|
|
|
|
[languages.fr]
|
|
|
|
title = 'Mon blogue'
|
|
|
|
weight = 2
|
|
|
|
[languages.nn]
|
|
|
|
title = 'Bloggen min'
|
|
|
|
weight = 3
|
|
|
|
-- content/p1.md --
|
|
|
|
---
|
|
|
|
title: "Post 1"
|
|
|
|
date: "2020-01-01"
|
|
|
|
---
|
|
|
|
-- content/p2.md --
|
|
|
|
---
|
|
|
|
title: "Post 2"
|
|
|
|
date: "2020-02-01"
|
|
|
|
---
|
|
|
|
-- content/p1.fr.md --
|
|
|
|
---
|
|
|
|
title: "Post 1"
|
|
|
|
date: "2020-01-01"
|
|
|
|
---
|
|
|
|
-- content/p2.fr.md --
|
|
|
|
---
|
|
|
|
title: "Post 2"
|
|
|
|
date: "2020-02-01"
|
|
|
|
---
|
|
|
|
-- layouts/index.html --
|
|
|
|
{{ range $k, $v := site.RegularPages.GroupByDate "January, 2006" }}{{ $k }}|{{ $v.Key }}|{{ $v.Pages }}{{ end }}
|
|
|
|
|
|
|
|
`
|
|
|
|
|
|
|
|
b := hugolib.NewIntegrationTestBuilder(
|
|
|
|
hugolib.IntegrationTestConfig{
|
|
|
|
T: t,
|
|
|
|
TxtarString: files,
|
|
|
|
NeedsOsFS: true,
|
|
|
|
}).Build()
|
|
|
|
|
|
|
|
b.AssertFileContent("public/en/index.html", "0|February, 2020|Pages(1)1|January, 2020|Pages(1)")
|
|
|
|
b.AssertFileContent("public/fr/index.html", "0|février, 2020|Pages(1)1|janvier, 2020|Pages(1)")
|
|
|
|
}
|
2022-04-10 18:30:52 +00:00
|
|
|
|
|
|
|
func TestPagesSortCollation(t *testing.T) {
|
|
|
|
files := `
|
|
|
|
-- config.toml --
|
|
|
|
defaultContentLanguage = 'en'
|
|
|
|
defaultContentLanguageInSubdir = true
|
|
|
|
[languages]
|
|
|
|
[languages.en]
|
|
|
|
title = 'My blog'
|
|
|
|
weight = 1
|
|
|
|
[languages.fr]
|
|
|
|
title = 'Mon blogue'
|
|
|
|
weight = 2
|
|
|
|
[languages.nn]
|
|
|
|
title = 'Bloggen min'
|
|
|
|
weight = 3
|
|
|
|
-- content/p1.md --
|
|
|
|
---
|
|
|
|
title: "zulu"
|
|
|
|
date: "2020-01-01"
|
|
|
|
param1: "xylophone"
|
|
|
|
tags: ["xylophone", "éclair", "zulu", "emma"]
|
|
|
|
---
|
|
|
|
-- content/p2.md --
|
|
|
|
---
|
|
|
|
title: "émotion"
|
|
|
|
date: "2020-01-01"
|
|
|
|
param1: "violin"
|
|
|
|
---
|
|
|
|
-- content/p3.md --
|
|
|
|
---
|
|
|
|
title: "alpha"
|
|
|
|
date: "2020-01-01"
|
|
|
|
param1: "éclair"
|
|
|
|
---
|
|
|
|
-- layouts/index.html --
|
|
|
|
ByTitle: {{ range site.RegularPages.ByTitle }}{{ .Title }}|{{ end }}
|
|
|
|
ByLinkTitle: {{ range site.RegularPages.ByLinkTitle }}{{ .Title }}|{{ end }}
|
|
|
|
ByParam: {{ range site.RegularPages.ByParam "param1" }}{{ .Params.param1 }}|{{ end }}
|
|
|
|
Tags Alphabetical: {{ range site.Taxonomies.tags.Alphabetical }}{{ .Term }}|{{ end }}
|
|
|
|
GroupBy: {{ range site.RegularPages.GroupBy "Title" }}{{ .Key }}|{{ end }}
|
|
|
|
{{ with (site.GetPage "p1").Params.tags }}
|
|
|
|
Sort: {{ sort . }}
|
|
|
|
ByWeight: {{ range site.RegularPages.ByWeight }}{{ .Title }}|{{ end }}
|
|
|
|
{{ end }}
|
|
|
|
|
|
|
|
`
|
|
|
|
|
|
|
|
b := hugolib.NewIntegrationTestBuilder(
|
|
|
|
hugolib.IntegrationTestConfig{
|
|
|
|
T: t,
|
|
|
|
TxtarString: files,
|
|
|
|
NeedsOsFS: true,
|
|
|
|
}).Build()
|
|
|
|
|
|
|
|
b.AssertFileContent("public/en/index.html", `
|
|
|
|
ByTitle: alpha|émotion|zulu|
|
|
|
|
ByLinkTitle: alpha|émotion|zulu|
|
|
|
|
ByParam: éclair|violin|xylophone
|
|
|
|
Tags Alphabetical: éclair|emma|xylophone|zulu|
|
|
|
|
GroupBy: alpha|émotion|zulu|
|
|
|
|
Sort: [éclair emma xylophone zulu]
|
|
|
|
ByWeight: alpha|émotion|zulu|
|
|
|
|
`)
|
|
|
|
}
|
2023-01-17 10:00:38 +00:00
|
|
|
|
|
|
|
// See #10377
|
|
|
|
func TestPermalinkExpansionSectionsRepeated(t *testing.T) {
|
|
|
|
t.Parallel()
|
|
|
|
|
|
|
|
files := `
|
|
|
|
-- hugo.toml --
|
|
|
|
disableKinds = ["home", "taxonomy", "taxonomyTerm", "sitemap"]
|
|
|
|
[outputs]
|
|
|
|
home = ["HTML"]
|
|
|
|
page = ["HTML"]
|
|
|
|
section = ["HTML"]
|
|
|
|
[outputFormats]
|
|
|
|
[permalinks]
|
|
|
|
posts = '/:sections[1]/:sections[last]/:slug'
|
|
|
|
-- content/posts/_index.md --
|
|
|
|
-- content/posts/a/_index.md --
|
|
|
|
-- content/posts/a/b/_index.md --
|
|
|
|
-- content/posts/a/b/c/_index.md --
|
|
|
|
-- content/posts/a/b/c/d.md --
|
|
|
|
---
|
|
|
|
title: "D"
|
|
|
|
slug: "d"
|
|
|
|
---
|
|
|
|
D
|
|
|
|
-- layouts/_default/single.html --
|
|
|
|
RelPermalink: {{ .RelPermalink }}
|
|
|
|
|
|
|
|
`
|
|
|
|
|
2024-01-28 21:11:05 +00:00
|
|
|
b := hugolib.Test(t, files)
|
2023-01-17 10:00:38 +00:00
|
|
|
|
|
|
|
b.AssertFileContent("public/a/c/d/index.html", "RelPermalink: /a/c/d/")
|
|
|
|
}
|