Fail on invalid defaultContentLanguage - hugo - [fork] hugo port for 9front
(HTM) git clone git@git.drkhsh.at/hugo.git
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) Submodules
(DIR) README
(DIR) LICENSE
---
(DIR) commit 9cdca1f9582597c3998e44cd16509ead362a90df
(DIR) parent 6462eecfbd7abc14fa62b33bb079ba424de7d765
(HTM) Author: Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Date: Tue, 30 May 2023 11:53:38 +0200
Fail on invalid defaultContentLanguage
Fixes #11044
Diffstat:
M config/allconfig/alldecoders.go | 21 ++++++++++++++++++++-
M hugolib/config_test.go | 28 ++++++++++++++++++++++++++++
2 files changed, 48 insertions(+), 1 deletion(-)
---
(DIR) diff --git a/config/allconfig/alldecoders.go b/config/allconfig/alldecoders.go
@@ -60,7 +60,14 @@ var allDecoderSetups = map[string]decodeWeight{
key: "",
weight: -100, // Always first.
decode: func(d decodeWeight, p decodeConfig) error {
- return mapstructure.WeakDecode(p.p.Get(""), &p.c.RootConfig)
+ if err := mapstructure.WeakDecode(p.p.Get(""), &p.c.RootConfig); err != nil {
+ return err
+ }
+
+ // This need to match with Lang which is always lower case.
+ p.c.RootConfig.DefaultContentLanguage = strings.ToLower(p.c.RootConfig.DefaultContentLanguage)
+
+ return nil
},
},
"imaging": {
@@ -263,6 +270,18 @@ var allDecoderSetups = map[string]decodeWeight{
return err
}
+ // Validate defaultContentLanguage.
+ var found bool
+ for lang := range p.c.Languages {
+ if lang == p.c.DefaultContentLanguage {
+ found = true
+ break
+ }
+ }
+ if !found {
+ return fmt.Errorf("config value %q for defaultContentLanguage does not match any language definition", p.c.DefaultContentLanguage)
+ }
+
return nil
},
},
(DIR) diff --git a/hugolib/config_test.go b/hugolib/config_test.go
@@ -1122,4 +1122,32 @@ Foo: {{ site.Params.foo }}|
b.Assert(err.Error(), qt.Contains, "no languages")
})
+ // Issue 11044
+ t.Run("invalid defaultContentLanguage", func(t *testing.T) {
+
+ files := `
+-- hugo.toml --
+baseURL = "https://example.org"
+defaultContentLanguage = "sv"
+
+[languages]
+[languages.en]
+languageCode = "en"
+languageName = "English"
+weight = 1
+
+
+
+ `
+ b, err := NewIntegrationTestBuilder(
+ IntegrationTestConfig{
+ T: t,
+ TxtarString: files,
+ },
+ ).BuildE()
+
+ b.Assert(err, qt.IsNotNil)
+ b.Assert(err.Error(), qt.Contains, "defaultContentLanguage does not match any language definition")
+ })
+
}