mirror of
https://github.com/gohugoio/hugo.git
synced 2024-11-21 20:46:30 -05:00
parent
8d898ad667
commit
3e6cb2cb77
4 changed files with 54 additions and 7 deletions
|
@ -15,6 +15,9 @@ package hugolib
|
|||
|
||||
import (
|
||||
"net/url"
|
||||
"strings"
|
||||
|
||||
"github.com/gohugoio/hugo/helpers"
|
||||
|
||||
"github.com/gohugoio/hugo/resources/page"
|
||||
)
|
||||
|
@ -95,8 +98,9 @@ func (l pagePaths) OutputFormats() page.OutputFormats {
|
|||
|
||||
func createTargetPathDescriptor(s *Site, p page.Page, pm *pageMeta) (page.TargetPathDescriptor, error) {
|
||||
var (
|
||||
dir string
|
||||
baseName string
|
||||
dir string
|
||||
baseName string
|
||||
contentBaseName string
|
||||
)
|
||||
|
||||
d := s.Deps
|
||||
|
@ -104,6 +108,14 @@ func createTargetPathDescriptor(s *Site, p page.Page, pm *pageMeta) (page.Target
|
|||
if !p.File().IsZero() {
|
||||
dir = p.File().Dir()
|
||||
baseName = p.File().TranslationBaseName()
|
||||
contentBaseName = p.File().ContentBaseName()
|
||||
}
|
||||
|
||||
if baseName != contentBaseName {
|
||||
// See https://github.com/gohugoio/hugo/issues/4870
|
||||
// A leaf bundle
|
||||
dir = strings.TrimSuffix(dir, contentBaseName+helpers.FilePathSeparator)
|
||||
baseName = contentBaseName
|
||||
}
|
||||
|
||||
alwaysInSubDir := p.Kind() == kindSitemap
|
||||
|
|
|
@ -460,7 +460,7 @@ HEADLESS {{< myShort >}}
|
|||
assert.Equal(1, len(s.headlessPages))
|
||||
|
||||
regular := s.getPage(page.KindPage, "a/index")
|
||||
assert.Equal("/a/s1/", regular.RelPermalink())
|
||||
assert.Equal("/s1/", regular.RelPermalink())
|
||||
|
||||
headless := s.getPage(page.KindPage, "b/index")
|
||||
assert.NotNil(headless)
|
||||
|
@ -481,12 +481,12 @@ HEADLESS {{< myShort >}}
|
|||
|
||||
th := testHelper{s.Cfg, s.Fs, t}
|
||||
|
||||
th.assertFileContent(filepath.FromSlash(workDir+"/public/a/s1/index.html"), "TheContent")
|
||||
th.assertFileContent(filepath.FromSlash(workDir+"/public/a/s1/l1.png"), "PNG")
|
||||
th.assertFileContent(filepath.FromSlash(workDir+"/public/s1/index.html"), "TheContent")
|
||||
th.assertFileContent(filepath.FromSlash(workDir+"/public/s1/l1.png"), "PNG")
|
||||
|
||||
th.assertFileNotExist(workDir + "/public/b/s2/index.html")
|
||||
th.assertFileNotExist(workDir + "/public/s2/index.html")
|
||||
// But the bundled resources needs to be published
|
||||
th.assertFileContent(filepath.FromSlash(workDir+"/public/b/s2/l1.png"), "PNG")
|
||||
th.assertFileContent(filepath.FromSlash(workDir+"/public/s2/l1.png"), "PNG")
|
||||
|
||||
}
|
||||
|
||||
|
@ -942,3 +942,32 @@ date: 2017-01-15
|
|||
b.AssertFileContent("public/mybundle/data.json", "My changed data")
|
||||
|
||||
}
|
||||
|
||||
// https://github.com/gohugoio/hugo/issues/4870
|
||||
func TestBundleSlug(t *testing.T) {
|
||||
t.Parallel()
|
||||
assert := require.New(t)
|
||||
|
||||
const pageTemplate = `---
|
||||
title: Title
|
||||
slug: %s
|
||||
---
|
||||
`
|
||||
|
||||
b := newTestSitesBuilder(t)
|
||||
|
||||
b.WithTemplatesAdded("index.html", `{{ range .Site.RegularPages }}|{{ .RelPermalink }}{{ end }}|`)
|
||||
b.WithSimpleConfigFile().
|
||||
WithContent("about/services1/misc.md", fmt.Sprintf(pageTemplate, "this-is-the-slug")).
|
||||
WithContent("about/services2/misc/index.md", fmt.Sprintf(pageTemplate, "this-is-another-slug"))
|
||||
|
||||
b.CreateSites().Build(BuildCfg{})
|
||||
|
||||
b.AssertHome(
|
||||
"|/about/services1/this-is-the-slug/|/",
|
||||
"|/about/services2/this-is-another-slug/|")
|
||||
|
||||
assert.True(b.CheckExists("public/about/services1/this-is-the-slug/index.html"))
|
||||
assert.True(b.CheckExists("public/about/services2/this-is-another-slug/index.html"))
|
||||
|
||||
}
|
||||
|
|
|
@ -549,6 +549,10 @@ func (s *sitesBuilder) AssertFileContentFn(filename string, f func(s string) boo
|
|||
}
|
||||
}
|
||||
|
||||
func (s *sitesBuilder) AssertHome(matches ...string) {
|
||||
s.AssertFileContent("public/index.html", matches...)
|
||||
}
|
||||
|
||||
func (s *sitesBuilder) AssertFileContent(filename string, matches ...string) {
|
||||
content := s.FileContent(filename)
|
||||
for _, match := range matches {
|
||||
|
|
|
@ -221,6 +221,8 @@ func CreateTargetPaths(d TargetPathDescriptor) (tp TargetPaths) {
|
|||
|
||||
link = pagePath
|
||||
|
||||
// TODO(bep) this should not happen after the fix in https://github.com/gohugoio/hugo/issues/4870
|
||||
// but we may need some more testing before we can remove it.
|
||||
if baseNameSameAsType {
|
||||
link = strings.TrimSuffix(link, d.BaseName)
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue