summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2020-02-19 08:38:46 +0100
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2020-02-19 09:08:31 +0100
commitda54787cfa97789624e467a4451dfeb50f563e41 (patch)
treea9b7725cb444e485b94845b09707e00c3918e0c6
parentc7975b48b6532823868a6aa8c93eb76caa46c570 (diff)
Handle disabled RSS even if it's defined in outputs
See https://github.com/gohugoio/hugo/issues/6897#issuecomment-587947078
-rw-r--r--hugolib/disableKinds_test.go15
-rw-r--r--hugolib/site.go5
-rw-r--r--hugolib/site_output.go9
-rw-r--r--hugolib/site_output_test.go10
4 files changed, 31 insertions, 8 deletions
diff --git a/hugolib/disableKinds_test.go b/hugolib/disableKinds_test.go
index f5b2c65a1..e814f4a5a 100644
--- a/hugolib/disableKinds_test.go
+++ b/hugolib/disableKinds_test.go
@@ -266,3 +266,18 @@ headless: true
b.Assert(resource.RelPermalink(), qt.Equals, "/blog/sect/no-publishresources/data.json")
})
}
+
+// https://github.com/gohugoio/hugo/issues/6897#issuecomment-587947078
+func TestDisableRSSWithRSSInCustomOutputs(t *testing.T) {
+ b := newTestSitesBuilder(t).WithConfigFile("toml", `
+disableKinds = ["taxonomy", "taxonomyTerm", "RSS"]
+[outputs]
+home = [ "HTML", "RSS" ]
+`).Build(BuildCfg{})
+
+ // The config above is a little conflicting, but it exists in the real world.
+ // In Hugo 0.65 we consolidated the code paths and made RSS a pure output format,
+ // but we should make sure to not break existing sites.
+ b.Assert(b.CheckExists("public/index.xml"), qt.Equals, false)
+
+}
diff --git a/hugolib/site.go b/hugolib/site.go
index 34e5ad156..ac67c1210 100644
--- a/hugolib/site.go
+++ b/hugolib/site.go
@@ -432,7 +432,8 @@ func newSite(cfg deps.DepsCfg) (*Site, error) {
return nil, err
}
- if disabledKinds[kindRSS] {
+ rssDisabled := disabledKinds[kindRSS]
+ if rssDisabled {
// Legacy
tmp := siteOutputFormatsConfig[:0]
for _, x := range siteOutputFormatsConfig {
@@ -443,7 +444,7 @@ func newSite(cfg deps.DepsCfg) (*Site, error) {
siteOutputFormatsConfig = tmp
}
- outputFormats, err := createSiteOutputFormats(siteOutputFormatsConfig, cfg.Language)
+ outputFormats, err := createSiteOutputFormats(siteOutputFormatsConfig, cfg.Language, rssDisabled)
if err != nil {
return nil, err
}
diff --git a/hugolib/site_output.go b/hugolib/site_output.go
index b57794400..d064348a6 100644
--- a/hugolib/site_output.go
+++ b/hugolib/site_output.go
@@ -15,6 +15,7 @@ package hugolib
import (
"fmt"
+ "strings"
"github.com/gohugoio/hugo/config"
"github.com/gohugoio/hugo/output"
@@ -54,7 +55,7 @@ func createDefaultOutputFormats(allFormats output.Formats, cfg config.Provider)
}
-func createSiteOutputFormats(allFormats output.Formats, cfg config.Provider) (map[string]output.Formats, error) {
+func createSiteOutputFormats(allFormats output.Formats, cfg config.Provider, rssDisabled bool) (map[string]output.Formats, error) {
defaultOutputFormats := createDefaultOutputFormats(allFormats, cfg)
if !cfg.IsSet("outputs") {
@@ -82,6 +83,12 @@ func createSiteOutputFormats(allFormats output.Formats, cfg config.Provider) (ma
for _, format := range vals {
f, found := allFormats.GetByName(format)
if !found {
+ if rssDisabled && strings.EqualFold(format, "RSS") {
+ // This is legacy behaviour. We used to have both
+ // a RSS page kind and output format.
+ continue
+
+ }
return nil, fmt.Errorf("failed to resolve output format %q from site config", format)
}
formats = append(formats, f)
diff --git a/hugolib/site_output_test.go b/hugolib/site_output_test.go
index 7fb53b0f8..232364577 100644
--- a/hugolib/site_output_test.go
+++ b/hugolib/site_output_test.go
@@ -341,7 +341,7 @@ func TestCreateSiteOutputFormats(t *testing.T) {
cfg := viper.New()
cfg.Set("outputs", outputsConfig)
- outputs, err := createSiteOutputFormats(output.DefaultFormats, cfg)
+ outputs, err := createSiteOutputFormats(output.DefaultFormats, cfg, false)
c.Assert(err, qt.IsNil)
c.Assert(outputs[page.KindSection], deepEqualsOutputFormats, output.Formats{output.JSONFormat})
c.Assert(outputs[page.KindHome], deepEqualsOutputFormats, output.Formats{output.HTMLFormat, output.JSONFormat})
@@ -371,7 +371,7 @@ func TestCreateSiteOutputFormats(t *testing.T) {
}
cfg.Set("outputs", outputsConfig)
- outputs, err := createSiteOutputFormats(output.DefaultFormats, cfg)
+ outputs, err := createSiteOutputFormats(output.DefaultFormats, cfg, false)
c.Assert(err, qt.IsNil)
c.Assert(outputs[page.KindTaxonomyTerm], deepEqualsOutputFormats, output.Formats{output.JSONFormat})
@@ -389,7 +389,7 @@ func TestCreateSiteOutputFormatsInvalidConfig(t *testing.T) {
cfg := viper.New()
cfg.Set("outputs", outputsConfig)
- _, err := createSiteOutputFormats(output.DefaultFormats, cfg)
+ _, err := createSiteOutputFormats(output.DefaultFormats, cfg, false)
c.Assert(err, qt.Not(qt.IsNil))
}
@@ -403,7 +403,7 @@ func TestCreateSiteOutputFormatsEmptyConfig(t *testing.T) {
cfg := viper.New()
cfg.Set("outputs", outputsConfig)
- outputs, err := createSiteOutputFormats(output.DefaultFormats, cfg)
+ outputs, err := createSiteOutputFormats(output.DefaultFormats, cfg, false)
c.Assert(err, qt.IsNil)
c.Assert(outputs[page.KindHome], deepEqualsOutputFormats, output.Formats{output.HTMLFormat, output.RSSFormat})
}
@@ -423,7 +423,7 @@ func TestCreateSiteOutputFormatsCustomFormats(t *testing.T) {
customHTML = output.Format{Name: "HTML", BaseName: "customHTML"}
)
- outputs, err := createSiteOutputFormats(output.Formats{customRSS, customHTML}, cfg)
+ outputs, err := createSiteOutputFormats(output.Formats{customRSS, customHTML}, cfg, false)
c.Assert(err, qt.IsNil)
c.Assert(outputs[page.KindHome], deepEqualsOutputFormats, output.Formats{customHTML, customRSS})
}