diff options
author | Bjørn Erik Pedersen <[email protected]> | 2017-05-17 18:04:07 +0300 |
---|---|---|
committer | Bjørn Erik Pedersen <[email protected]> | 2017-05-17 19:00:15 +0300 |
commit | 6e2f2dd8d3ca61c92a2ee8824fbf05cadef08425 (patch) | |
tree | b8c8c97fca661ab6208d8ddd6d46ab68cf2e63b0 /hugolib/site_output_test.go | |
parent | 94b5be67fc73b87d114d94a7bb1a33ab997f30f1 (diff) | |
download | hugo-6e2f2dd8d3ca61c92a2ee8824fbf05cadef08425.tar.gz hugo-6e2f2dd8d3ca61c92a2ee8824fbf05cadef08425.zip |
hugolib: Fix output formats override when no outputs definition given
A common use case for this is to redefine the built-in output format `RSS` to give it a different URL.
Before this commit, that was not possible without also providing an `outputs` definition.
Fixes #3447
Diffstat (limited to 'hugolib/site_output_test.go')
-rw-r--r-- | hugolib/site_output_test.go | 56 |
1 files changed, 55 insertions, 1 deletions
diff --git a/hugolib/site_output_test.go b/hugolib/site_output_test.go index 2935f3257..d57173630 100644 --- a/hugolib/site_output_test.go +++ b/hugolib/site_output_test.go @@ -31,7 +31,7 @@ import ( func TestDefaultOutputFormats(t *testing.T) { t.Parallel() - defs, err := createDefaultOutputFormats(viper.New()) + defs, err := createDefaultOutputFormats(output.DefaultFormats, viper.New()) require.NoError(t, err) @@ -53,6 +53,30 @@ func TestDefaultOutputFormats(t *testing.T) { } } +func TestDefaultOutputFormatsWithOverrides(t *testing.T) { + t.Parallel() + + htmlOut := output.HTMLFormat + htmlOut.BaseName = "htmlindex" + rssOut := output.RSSFormat + rssOut.BaseName = "feed" + + defs, err := createDefaultOutputFormats(output.Formats{htmlOut, rssOut}, viper.New()) + + homeDefs := defs[KindHome] + + rss, found := homeDefs.GetByName("RSS") + require.True(t, found) + require.Equal(t, rss.BaseName, "feed") + + html, found := homeDefs.GetByName("HTML") + require.True(t, found) + require.Equal(t, html.BaseName, "htmlindex") + + require.NoError(t, err) + +} + func TestSiteWithPageOutputs(t *testing.T) { for _, outputs := range [][]string{{"html", "json", "calendar"}, {"json"}} { t.Run(fmt.Sprintf("%v", outputs), func(t *testing.T) { @@ -231,3 +255,33 @@ Content: {{ .Content }} } } + +// Issue #3447 +func TestRedefineRSSOutputFormat(t *testing.T) { + siteConfig := ` +baseURL = "http://example.com/blog" + +paginate = 1 +defaultContentLanguage = "en" + +disableKinds = ["page", "section", "taxonomy", "taxonomyTerm", "sitemap", "robotsTXT", "404"] + +[outputFormats] +[outputFormats.RSS] +mediatype = "application/rss" +baseName = "feed" + +` + + mf := afero.NewMemMapFs() + writeToFs(t, mf, "content/foo.html", `foo`) + + th, h := newTestSitesFromConfig(t, mf, siteConfig) + + err := h.Build(BuildCfg{}) + + require.NoError(t, err) + + th.assertFileContent("public/feed.xml", "Recent content on") + +} |