]> git.maquefel.me Git - brevno-suite/hugo/commitdiff
helpers: Fix panic with invalid defaultMarkdownHandler
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Sat, 4 Jun 2022 15:39:34 +0000 (17:39 +0200)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Sat, 4 Jun 2022 15:47:20 +0000 (17:47 +0200)
Fixes #9968

hugolib/config_test.go
hugolib/integrationtest_builder.go
markup/markup.go

index 222568b7c911225d0e2cbd7f30c6fab57e04c9b8..882d83c8dd93840abeb7cb705589837baa2d516a 100644 (file)
@@ -756,3 +756,29 @@ theme_param="themevalue2"
        })
 
 }
+
+func TestInvalidDefaultMarkdownHandler(t *testing.T) {
+       t.Parallel()
+
+       files := `
+-- config.toml --
+[markup]
+defaultMarkdownHandler = 'blackfriday'
+-- content/_index.md --
+## Foo
+-- layouts/index.html --
+{{ .Content }}
+
+`
+
+       b, err := NewIntegrationTestBuilder(
+               IntegrationTestConfig{
+                       T:           t,
+                       TxtarString: files,
+               },
+       ).BuildE()
+
+       b.Assert(err, qt.IsNotNil)
+       b.Assert(err.Error(), qt.Contains, "Configured defaultMarkdownHandler \"blackfriday\" not found. Did you mean to use goldmark? Blackfriday was removed in Hugo v0.100.0.")
+
+}
index df51b37c32d8ab99eda039b0bb0aa0e4a09aa20d..9dcfe4830b6f76989010f9023c3e8b8d6d504189 100644 (file)
@@ -197,7 +197,10 @@ func (s *IntegrationTestBuilder) Build() *IntegrationTestBuilder {
 
 func (s *IntegrationTestBuilder) BuildE() (*IntegrationTestBuilder, error) {
        s.Helper()
-       s.initBuilder()
+       if err := s.initBuilder(); err != nil {
+               return s, err
+       }
+
        err := s.build(BuildCfg{})
        return s, err
 }
@@ -267,7 +270,8 @@ func (s *IntegrationTestBuilder) FileContent(filename string) string {
        return s.readWorkingDir(s, s.fs, filepath.FromSlash(filename))
 }
 
-func (s *IntegrationTestBuilder) initBuilder() {
+func (s *IntegrationTestBuilder) initBuilder() error {
+       var initErr error
        s.builderInit.Do(func() {
                var afs afero.Fs
                if s.Cfg.NeedsOsFS {
@@ -320,7 +324,10 @@ func (s *IntegrationTestBuilder) initBuilder() {
 
                depsCfg := deps.DepsCfg{Cfg: cfg, Fs: fs, Running: s.Cfg.Running, Logger: logger}
                sites, err := NewHugoSites(depsCfg)
-               s.Assert(err, qt.IsNil)
+               if err != nil {
+                       initErr = err
+                       return
+               }
 
                s.H = sites
                s.fs = fs
@@ -338,6 +345,8 @@ func (s *IntegrationTestBuilder) initBuilder() {
 
                }
        })
+
+       return initErr
 }
 
 func (s *IntegrationTestBuilder) absFilename(filename string) string {
index f5e46ad90ee9365ba1b60719ed4f923e9752743d..1345867f93da1fe7c2d2c0337aba8decc44f6336 100644 (file)
@@ -14,6 +14,7 @@
 package markup
 
 import (
+       "fmt"
        "strings"
 
        "github.com/gohugoio/hugo/markup/highlight"
@@ -43,6 +44,8 @@ func NewConverterProvider(cfg converter.ProviderConfig) (ConverterProvider, erro
        }
 
        cfg.MarkupConfig = markupConfig
+       defaultHandler := cfg.MarkupConfig.DefaultMarkdownHandler
+       var defaultFound bool
 
        add := func(p converter.ProviderProvider, aliases ...string) error {
                c, err := p.New(cfg)
@@ -54,8 +57,9 @@ func NewConverterProvider(cfg converter.ProviderConfig) (ConverterProvider, erro
 
                aliases = append(aliases, name)
 
-               if strings.EqualFold(name, cfg.MarkupConfig.DefaultMarkdownHandler) {
+               if strings.EqualFold(name, defaultHandler) {
                        aliases = append(aliases, "markdown")
+                       defaultFound = true
                }
 
                addConverter(converters, c, aliases...)
@@ -78,6 +82,14 @@ func NewConverterProvider(cfg converter.ProviderConfig) (ConverterProvider, erro
                return nil, err
        }
 
+       if !defaultFound {
+               msg := "markup: Configured defaultMarkdownHandler %q not found."
+               if defaultHandler == "blackfriday" {
+                       msg += " Did you mean to use goldmark? Blackfriday was removed in Hugo v0.100.0."
+               }
+               return nil, fmt.Errorf(msg, defaultHandler)
+       }
+
        return &converterRegistry{
                config:     cfg,
                converters: converters,