mirror of
				https://github.com/gohugoio/hugo.git
				synced 2024-05-11 05:54:58 +00:00 
			
		
		
		
	@@ -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)
 | 
			
		||||
		}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user