Skip to content

Commit

Permalink
Fix panic when theme has permalinks config
Browse files Browse the repository at this point in the history
Fixes #8724
  • Loading branch information
bep committed Jul 3, 2021
1 parent b4d60b3 commit e451b98
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 5 deletions.
6 changes: 3 additions & 3 deletions hugolib/config.go
Expand Up @@ -255,9 +255,9 @@ func (l configLoader) applyConfigDefaults() error {
"relativeURLs": false,
"removePathAccents": false,
"titleCaseStyle": "AP",
"taxonomies": map[string]string{"tag": "tags", "category": "categories"},
"permalinks": make(map[string]string),
"sitemap": config.Sitemap{Priority: -1, Filename: "sitemap.xml"},
"taxonomies": maps.Params{"tag": "tags", "category": "categories"},
"permalinks": maps.Params{},
"sitemap": maps.Params{"priority": -1, "filename": "sitemap.xml"},
"disableLiveReload": false,
"pluralizeListTitles": true,
"forceSyncStatic": false,
Expand Down
43 changes: 41 additions & 2 deletions hugolib/config_test.go
Expand Up @@ -185,15 +185,15 @@ name = "menu-theme"
`

buildForConfig := func(mainConfig, themeConfig string) *sitesBuilder {
buildForConfig := func(t testing.TB, mainConfig, themeConfig string) *sitesBuilder {
b := newTestSitesBuilder(t)
b.WithConfigFile("toml", mainConfig).WithThemeConfigFile("toml", themeConfig)
return b.Build(BuildCfg{})
}

buildForStrategy := func(t testing.TB, s string) *sitesBuilder {
mainConfig := strings.ReplaceAll(mainConfigTemplate, "MERGE_PARAMS", s)
return buildForConfig(mainConfig, themeConfig)
return buildForConfig(t, mainConfig, themeConfig)
}

c.Run("Merge default", func(c *qt.C) {
Expand Down Expand Up @@ -322,6 +322,7 @@ name = "menu-theme"

c.Run("Merge no params in project", func(c *qt.C) {
b := buildForConfig(
c,
"baseURL=\"https://example.org\"\ntheme = \"test-theme\"\n",
"[params]\np1 = \"p1 theme\"\n",
)
Expand All @@ -335,6 +336,7 @@ name = "menu-theme"

c.Run("Merge language no menus or params in project", func(c *qt.C) {
b := buildForConfig(
c,
`
theme = "test-theme"
baseURL = "https://example.com/"
Expand Down Expand Up @@ -378,6 +380,43 @@ name = "menu-theme"
)
})

// Issue #8724
for _, mergeStrategy := range []string{"none", "shallow"} {
c.Run(fmt.Sprintf("Merge with sitemap config in theme, mergestrategy %s", mergeStrategy), func(c *qt.C) {

smapConfigTempl := `[sitemap]
changefreq = %q
filename = "sitemap.xml"
priority = 0.5`

b := buildForConfig(
c,
fmt.Sprintf("_merge=%q\nbaseURL=\"https://example.org\"\ntheme = \"test-theme\"\n", mergeStrategy),
"baseURL=\"http://example.com\"\n"+fmt.Sprintf(smapConfigTempl, "monthly"),
)

got := b.Cfg.Get("").(maps.Params)

if mergeStrategy == "none" {
b.Assert(got["sitemap"], qt.DeepEquals, maps.Params{
"priority": int(-1),
"filename": "sitemap.xml",
})

b.AssertFileContent("public/sitemap.xml", "schemas/sitemap")
} else {
b.Assert(got["sitemap"], qt.DeepEquals, maps.Params{
"priority": int(-1),
"filename": "sitemap.xml",
"changefreq": "monthly",
})

b.AssertFileContent("public/sitemap.xml", "<changefreq>monthly</changefreq>")
}

})
}

}

func TestLoadConfigFromThemeDir(t *testing.T) {
Expand Down

0 comments on commit e451b98

Please sign in to comment.