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