]> git.maquefel.me Git - brevno-suite/hugo/commitdiff
Fail on invalid defaultContentLanguage
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Tue, 30 May 2023 09:53:38 +0000 (11:53 +0200)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Tue, 30 May 2023 13:59:43 +0000 (15:59 +0200)
Fixes #11044

config/allconfig/alldecoders.go
hugolib/config_test.go

index b798ef7985e53ab5d031a9cb20e17dda3a67c2cb..b45bd1e11be08c2b2ab16c4e99f347b1214f44e9 100644 (file)
@@ -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
                },
        },
index efa2bf6b50fd6a724d6b7b92f5c37a24bb396c9d..814be667f06ec3e1d21d13592a7454d6f35f08a3 100644 (file)
@@ -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")
+       })
+
 }