Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/gohugoio/hugo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2018-11-15 09:21:14 +0300
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2018-11-15 10:45:15 +0300
commit12742bac71c65d65dc56548b643debda94757aee (patch)
tree0f52d229691f5322e7b64063f6402a18740f91b1
parentfabf026f4937bf6fbbb944aa7d6e721839ae4c92 (diff)
Add tests for permalink on Resource with baseURL with path
See #5226
-rw-r--r--hugolib/pagebundler_test.go328
-rw-r--r--hugolib/resource_chain_test.go12
-rw-r--r--hugolib/testhelpers_test.go9
3 files changed, 192 insertions, 157 deletions
diff --git a/hugolib/pagebundler_test.go b/hugolib/pagebundler_test.go
index 1eb5aacdd..53a1fcb09 100644
--- a/hugolib/pagebundler_test.go
+++ b/hugolib/pagebundler_test.go
@@ -42,162 +42,181 @@ import (
func TestPageBundlerSiteRegular(t *testing.T) {
t.Parallel()
- for _, ugly := range []bool{false, true} {
- t.Run(fmt.Sprintf("ugly=%t", ugly),
- func(t *testing.T) {
-
- assert := require.New(t)
- fs, cfg := newTestBundleSources(t)
- assert.NoError(loadDefaultSettingsFor(cfg))
- assert.NoError(loadLanguageSettings(cfg, nil))
-
- cfg.Set("permalinks", map[string]string{
- "a": ":sections/:filename",
- "b": ":year/:slug/",
- "c": ":sections/:slug",
- "": ":filename/",
- })
-
- cfg.Set("outputFormats", map[string]interface{}{
- "CUSTOMO": map[string]interface{}{
- "mediaType": media.HTMLType,
- "baseName": "cindex",
- "path": "cpath",
- },
- })
+ baseBaseURL := "https://example.com"
+
+ for _, baseURLPath := range []string{"", "/hugo"} {
+ for _, ugly := range []bool{false, true} {
+ t.Run(fmt.Sprintf("ugly=%t,path=%s", ugly, baseURLPath),
+ func(t *testing.T) {
+ baseURL := baseBaseURL + baseURLPath
+ assert := require.New(t)
+ fs, cfg := newTestBundleSources(t)
+ cfg.Set("baseURL", baseURL)
+ assert.NoError(loadDefaultSettingsFor(cfg))
+ assert.NoError(loadLanguageSettings(cfg, nil))
+
+ cfg.Set("permalinks", map[string]string{
+ "a": ":sections/:filename",
+ "b": ":year/:slug/",
+ "c": ":sections/:slug",
+ "": ":filename/",
+ })
+
+ cfg.Set("outputFormats", map[string]interface{}{
+ "CUSTOMO": map[string]interface{}{
+ "mediaType": media.HTMLType,
+ "baseName": "cindex",
+ "path": "cpath",
+ },
+ })
+
+ cfg.Set("outputs", map[string]interface{}{
+ "home": []string{"HTML", "CUSTOMO"},
+ "page": []string{"HTML", "CUSTOMO"},
+ "section": []string{"HTML", "CUSTOMO"},
+ })
+
+ cfg.Set("uglyURLs", ugly)
+
+ s := buildSingleSite(t, deps.DepsCfg{Logger: loggers.NewWarningLogger(), Fs: fs, Cfg: cfg}, BuildCfg{})
+
+ th := testHelper{s.Cfg, s.Fs, t}
+
+ assert.Len(s.RegularPages, 8)
+
+ singlePage := s.getPage(KindPage, "a/1.md")
+ assert.Equal("", singlePage.BundleType())
+
+ assert.NotNil(singlePage)
+ assert.Equal(singlePage, s.getPage("page", "a/1"))
+ assert.Equal(singlePage, s.getPage("page", "1"))
+
+ assert.Contains(singlePage.content(), "TheContent")
+
+ if ugly {
+ assert.Equal(baseURLPath+"/a/1.html", singlePage.RelPermalink())
+ th.assertFileContent(filepath.FromSlash("/work/public/a/1.html"), "TheContent")
+
+ } else {
+ assert.Equal(baseURLPath+"/a/1/", singlePage.RelPermalink())
+ th.assertFileContent(filepath.FromSlash("/work/public/a/1/index.html"), "TheContent")
+ }
+
+ th.assertFileContent(filepath.FromSlash("/work/public/images/hugo-logo.png"), "content")
+
+ // This should be just copied to destination.
+ th.assertFileContent(filepath.FromSlash("/work/public/assets/pic1.png"), "content")
+
+ leafBundle1 := s.getPage(KindPage, "b/my-bundle/index.md")
+ assert.NotNil(leafBundle1)
+ assert.Equal("leaf", leafBundle1.BundleType())
+ assert.Equal("b", leafBundle1.Section())
+ sectionB := s.getPage(KindSection, "b")
+ assert.NotNil(sectionB)
+ home, _ := s.Info.Home()
+ assert.Equal("branch", home.BundleType())
+
+ // This is a root bundle and should live in the "home section"
+ // See https://github.com/gohugoio/hugo/issues/4332
+ rootBundle := s.getPage(KindPage, "root")
+ assert.NotNil(rootBundle)
+ assert.True(rootBundle.Parent().IsHome())
+ if ugly {
+ assert.Equal(baseURLPath+"/root.html", rootBundle.RelPermalink())
+ } else {
+ assert.Equal(baseURLPath+"/root/", rootBundle.RelPermalink())
+ }
+
+ leafBundle2 := s.getPage(KindPage, "a/b/index.md")
+ assert.NotNil(leafBundle2)
+ unicodeBundle := s.getPage(KindPage, "c/bundle/index.md")
+ assert.NotNil(unicodeBundle)
+
+ pageResources := leafBundle1.Resources.ByType(pageResourceType)
+ assert.Len(pageResources, 2)
+ firstPage := pageResources[0].(*Page)
+ secondPage := pageResources[1].(*Page)
+ assert.Equal(filepath.FromSlash("/work/base/b/my-bundle/1.md"), firstPage.pathOrTitle(), secondPage.pathOrTitle())
+ assert.Contains(firstPage.content(), "TheContent")
+ assert.Equal(6, len(leafBundle1.Resources))
+
+ // Verify shortcode in bundled page
+ assert.Contains(secondPage.content(), filepath.FromSlash("MyShort in b/my-bundle/2.md"))
+
+ // https://github.com/gohugoio/hugo/issues/4582
+ assert.Equal(leafBundle1, firstPage.Parent())
+ assert.Equal(leafBundle1, secondPage.Parent())
+
+ assert.Equal(firstPage, pageResources.GetMatch("1*"))
+ assert.Equal(secondPage, pageResources.GetMatch("2*"))
+ assert.Nil(pageResources.GetMatch("doesnotexist*"))
+
+ imageResources := leafBundle1.Resources.ByType("image")
+ assert.Equal(3, len(imageResources))
+ image := imageResources[0]
+
+ altFormat := leafBundle1.OutputFormats().Get("CUSTOMO")
+ assert.NotNil(altFormat)
+
+ assert.Equal(baseURL+"/2017/pageslug/c/logo.png", image.Permalink())
+
+ th.assertFileContent(filepath.FromSlash("/work/public/2017/pageslug/c/logo.png"), "content")
+ th.assertFileContent(filepath.FromSlash("/work/public/cpath/2017/pageslug/c/logo.png"), "content")
+
+ // Custom media type defined in site config.
+ assert.Len(leafBundle1.Resources.ByType("bepsays"), 1)
+
+ relPermalinker := func(s string) string {
+ return fmt.Sprintf(s, baseURLPath)
+ }
+
+ permalinker := func(s string) string {
+ return fmt.Sprintf(s, baseURL)
+ }
+
+ if permalinker == nil {
+ }
+
+ if ugly {
+ assert.Equal(baseURLPath+"/2017/pageslug.html", leafBundle1.RelPermalink())
+ assert.Equal(baseURL+"/2017/pageslug.html", leafBundle1.Permalink())
+ th.assertFileContent(filepath.FromSlash("/work/public/2017/pageslug.html"),
+ "TheContent",
+ relPermalinker("Sunset RelPermalink: %s/2017/pageslug/sunset1.jpg"),
+ permalinker("Sunset Permalink: %s/2017/pageslug/sunset1.jpg"),
+ "Thumb Width: 123",
+ "Thumb Name: my-sunset-1",
+ relPermalinker("Short Sunset RelPermalink: %s/2017/pageslug/sunset2.jpg"),
+ "Short Thumb Width: 56",
+ "1: Image Title: Sunset Galore 1",
+ "1: Image Params: map[myparam:My Sunny Param]",
+ "2: Image Title: Sunset Galore 2",
+ "2: Image Params: map[myparam:My Sunny Param]",
+ "1: Image myParam: Lower: My Sunny Param Caps: My Sunny Param",
+ )
+ th.assertFileContent(filepath.FromSlash("/work/public/cpath/2017/pageslug.html"), "TheContent")
+
+ assert.Equal(baseURLPath+"/a/b.html", leafBundle2.RelPermalink())
+
+ // 은행
+ assert.Equal(baseURLPath+"/c/%EC%9D%80%ED%96%89.html", unicodeBundle.RelPermalink())
+ th.assertFileContent(filepath.FromSlash("/work/public/c/은행.html"), "Content for 은행")
+ th.assertFileContent(filepath.FromSlash("/work/public/c/은행/logo-은행.png"), "은행 PNG")
+
+ } else {
+ assert.Equal(baseURLPath+"/2017/pageslug/", leafBundle1.RelPermalink())
+ assert.Equal(baseURL+"/2017/pageslug/", leafBundle1.Permalink())
+ th.assertFileContent(filepath.FromSlash("/work/public/2017/pageslug/index.html"), "TheContent")
+ th.assertFileContent(filepath.FromSlash("/work/public/cpath/2017/pageslug/cindex.html"), "TheContent")
+ th.assertFileContent(filepath.FromSlash("/work/public/2017/pageslug/index.html"), "Single Title")
+ th.assertFileContent(filepath.FromSlash("/work/public/root/index.html"), "Single Title")
+
+ assert.Equal(baseURLPath+"/a/b/", leafBundle2.RelPermalink())
+
+ }
- cfg.Set("outputs", map[string]interface{}{
- "home": []string{"HTML", "CUSTOMO"},
- "page": []string{"HTML", "CUSTOMO"},
- "section": []string{"HTML", "CUSTOMO"},
})
-
- cfg.Set("uglyURLs", ugly)
-
- s := buildSingleSite(t, deps.DepsCfg{Logger: loggers.NewWarningLogger(), Fs: fs, Cfg: cfg}, BuildCfg{})
-
- th := testHelper{s.Cfg, s.Fs, t}
-
- assert.Len(s.RegularPages, 8)
-
- singlePage := s.getPage(KindPage, "a/1.md")
- assert.Equal("", singlePage.BundleType())
-
- assert.NotNil(singlePage)
- assert.Equal(singlePage, s.getPage("page", "a/1"))
- assert.Equal(singlePage, s.getPage("page", "1"))
-
- assert.Contains(singlePage.content(), "TheContent")
-
- if ugly {
- assert.Equal("/a/1.html", singlePage.RelPermalink())
- th.assertFileContent(filepath.FromSlash("/work/public/a/1.html"), "TheContent")
-
- } else {
- assert.Equal("/a/1/", singlePage.RelPermalink())
- th.assertFileContent(filepath.FromSlash("/work/public/a/1/index.html"), "TheContent")
- }
-
- th.assertFileContent(filepath.FromSlash("/work/public/images/hugo-logo.png"), "content")
-
- // This should be just copied to destination.
- th.assertFileContent(filepath.FromSlash("/work/public/assets/pic1.png"), "content")
-
- leafBundle1 := s.getPage(KindPage, "b/my-bundle/index.md")
- assert.NotNil(leafBundle1)
- assert.Equal("leaf", leafBundle1.BundleType())
- assert.Equal("b", leafBundle1.Section())
- sectionB := s.getPage(KindSection, "b")
- assert.NotNil(sectionB)
- home, _ := s.Info.Home()
- assert.Equal("branch", home.BundleType())
-
- // This is a root bundle and should live in the "home section"
- // See https://github.com/gohugoio/hugo/issues/4332
- rootBundle := s.getPage(KindPage, "root")
- assert.NotNil(rootBundle)
- assert.True(rootBundle.Parent().IsHome())
- if ugly {
- assert.Equal("/root.html", rootBundle.RelPermalink())
- } else {
- assert.Equal("/root/", rootBundle.RelPermalink())
- }
-
- leafBundle2 := s.getPage(KindPage, "a/b/index.md")
- assert.NotNil(leafBundle2)
- unicodeBundle := s.getPage(KindPage, "c/bundle/index.md")
- assert.NotNil(unicodeBundle)
-
- pageResources := leafBundle1.Resources.ByType(pageResourceType)
- assert.Len(pageResources, 2)
- firstPage := pageResources[0].(*Page)
- secondPage := pageResources[1].(*Page)
- assert.Equal(filepath.FromSlash("/work/base/b/my-bundle/1.md"), firstPage.pathOrTitle(), secondPage.pathOrTitle())
- assert.Contains(firstPage.content(), "TheContent")
- assert.Equal(6, len(leafBundle1.Resources))
-
- // Verify shortcode in bundled page
- assert.Contains(secondPage.content(), filepath.FromSlash("MyShort in b/my-bundle/2.md"))
-
- // https://github.com/gohugoio/hugo/issues/4582
- assert.Equal(leafBundle1, firstPage.Parent())
- assert.Equal(leafBundle1, secondPage.Parent())
-
- assert.Equal(firstPage, pageResources.GetMatch("1*"))
- assert.Equal(secondPage, pageResources.GetMatch("2*"))
- assert.Nil(pageResources.GetMatch("doesnotexist*"))
-
- imageResources := leafBundle1.Resources.ByType("image")
- assert.Equal(3, len(imageResources))
- image := imageResources[0]
-
- altFormat := leafBundle1.OutputFormats().Get("CUSTOMO")
- assert.NotNil(altFormat)
-
- assert.Equal("https://example.com/2017/pageslug/c/logo.png", image.Permalink())
-
- th.assertFileContent(filepath.FromSlash("/work/public/2017/pageslug/c/logo.png"), "content")
- th.assertFileContent(filepath.FromSlash("/work/public/cpath/2017/pageslug/c/logo.png"), "content")
-
- // Custom media type defined in site config.
- assert.Len(leafBundle1.Resources.ByType("bepsays"), 1)
-
- if ugly {
- assert.Equal("/2017/pageslug.html", leafBundle1.RelPermalink())
- th.assertFileContent(filepath.FromSlash("/work/public/2017/pageslug.html"),
- "TheContent",
- "Sunset RelPermalink: /2017/pageslug/sunset1.jpg",
- "Thumb Width: 123",
- "Thumb Name: my-sunset-1",
- "Short Sunset RelPermalink: /2017/pageslug/sunset2.jpg",
- "Short Thumb Width: 56",
- "1: Image Title: Sunset Galore 1",
- "1: Image Params: map[myparam:My Sunny Param]",
- "2: Image Title: Sunset Galore 2",
- "2: Image Params: map[myparam:My Sunny Param]",
- "1: Image myParam: Lower: My Sunny Param Caps: My Sunny Param",
- )
- th.assertFileContent(filepath.FromSlash("/work/public/cpath/2017/pageslug.html"), "TheContent")
-
- assert.Equal("/a/b.html", leafBundle2.RelPermalink())
-
- // 은행
- assert.Equal("/c/%EC%9D%80%ED%96%89.html", unicodeBundle.RelPermalink())
- th.assertFileContent(filepath.FromSlash("/work/public/c/은행.html"), "Content for 은행")
- th.assertFileContent(filepath.FromSlash("/work/public/c/은행/logo-은행.png"), "은행 PNG")
-
- } else {
- assert.Equal("/2017/pageslug/", leafBundle1.RelPermalink())
- th.assertFileContent(filepath.FromSlash("/work/public/2017/pageslug/index.html"), "TheContent")
- th.assertFileContent(filepath.FromSlash("/work/public/cpath/2017/pageslug/cindex.html"), "TheContent")
- th.assertFileContent(filepath.FromSlash("/work/public/2017/pageslug/index.html"), "Single Title")
- th.assertFileContent(filepath.FromSlash("/work/public/root/index.html"), "Single Title")
-
- assert.Equal("/a/b/", leafBundle2.RelPermalink())
-
- }
-
- })
+ }
}
}
@@ -490,6 +509,7 @@ Content: {{ .Content }}
{{ $sunset := .Resources.GetMatch "my-sunset-1*" }}
{{ with $sunset }}
Sunset RelPermalink: {{ .RelPermalink }}
+Sunset Permalink: {{ .Permalink }}
{{ $thumb := .Fill "123x123" }}
Thumb Width: {{ $thumb.Width }}
Thumb Name: {{ $thumb.Name }}
diff --git a/hugolib/resource_chain_test.go b/hugolib/resource_chain_test.go
index 3a1fb040a..0335339a3 100644
--- a/hugolib/resource_chain_test.go
+++ b/hugolib/resource_chain_test.go
@@ -301,6 +301,18 @@ T4: {{ $r2.Data.Integrity }}|
b.AssertFileContent("public/index.html", `T4: sha256-Hgu9bGhroFC46wP/7txk/cnYCUf86CGrvl1tyNJSxaw=|`)
}},
+ // https://github.com/gohugoio/hugo/issues/5226
+ {"baseurl-path", func() bool { return true }, func(b *sitesBuilder) {
+ b.WithSimpleConfigFileAndBaseURL("https://example.com/hugo/")
+ b.WithTemplates("home.html", `
+{{ $r1 := "ab" | resources.FromString "rocks/hugo.txt" }}
+T1: {{ $r1.Permalink }}|{{ $r1.RelPermalink }}
+`)
+ }, func(b *sitesBuilder) {
+ b.AssertFileContent("public/index.html", `T1: https://example.com/hugo/rocks/hugo.txt|/hugo/rocks/hugo.txt`)
+
+ }},
+
{"template", func() bool { return true }, func(b *sitesBuilder) {}, func(b *sitesBuilder) {
}},
}
diff --git a/hugolib/testhelpers_test.go b/hugolib/testhelpers_test.go
index f80f40c48..33f973e96 100644
--- a/hugolib/testhelpers_test.go
+++ b/hugolib/testhelpers_test.go
@@ -181,10 +181,13 @@ privacyEnhanced = true
`
func (s *sitesBuilder) WithSimpleConfigFile() *sitesBuilder {
- var config = `
-baseURL = "http://example.com/"
+ return s.WithSimpleConfigFileAndBaseURL("http://example.com/")
+}
-` + commonConfigSections
+func (s *sitesBuilder) WithSimpleConfigFileAndBaseURL(baseURL string) *sitesBuilder {
+ config := fmt.Sprintf("baseURL = %q", baseURL)
+
+ config = config + commonConfigSections
return s.WithConfigFile("toml", config)
}