]> git.maquefel.me Git - brevno-suite/hugo/commitdiff
commands: Fix data race in test
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Tue, 14 Mar 2023 11:18:42 +0000 (12:18 +0100)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Tue, 14 Mar 2023 11:18:42 +0000 (12:18 +0100)
Note that this is a test fix only.

commands/commandeer.go
commands/commands.go
commands/hugo.go
common/loggers/loggers.go
helpers/general.go
helpers/general_test.go

index b77e9e908824ff300e07b7dfaec7871c1b454c36..45385d50943654aafea3910f99ebfed2f45dc226 100644 (file)
@@ -302,6 +302,7 @@ func (c *commandeer) loadConfig() error {
        cfg := c.DepsCfg
        c.configured = false
        cfg.Running = c.running
+       loggers.PanicOnWarning.Store(c.h.panicOnWarning)
 
        var dir string
        if c.h.source != "" {
index c1042459d2f3d844f5fabbf23cee4a6c69b533d4..5b47ad82ecfc99e85526e75c8e2bd26447817816 100644 (file)
@@ -208,9 +208,10 @@ type hugoBuilderCommon struct {
        baseURL     string
        environment string
 
-       buildWatch bool
-       poll       string
-       clock      string
+       buildWatch     bool
+       panicOnWarning bool
+       poll           string
+       clock          string
 
        gc bool
 
@@ -299,7 +300,7 @@ func (cc *hugoBuilderCommon) handleFlags(cmd *cobra.Command) {
        cmd.Flags().Bool("enableGitInfo", false, "add Git revision, date, author, and CODEOWNERS info to the pages")
        cmd.Flags().BoolVar(&cc.gc, "gc", false, "enable to run some cleanup tasks (remove unused cache files) after the build")
        cmd.Flags().StringVar(&cc.poll, "poll", "", "set this to a poll interval, e.g --poll 700ms, to use a poll based approach to watch for file system changes")
-       cmd.Flags().BoolVar(&loggers.PanicOnWarning, "panicOnWarning", false, "panic on first WARNING log")
+       cmd.Flags().BoolVar(&cc.panicOnWarning, "panicOnWarning", false, "panic on first WARNING log")
        cmd.Flags().Bool("templateMetrics", false, "display metrics about template executions")
        cmd.Flags().Bool("templateMetricsHints", false, "calculate some improvement hints when combined with --templateMetrics")
        cmd.Flags().BoolP("forceSyncStatic", "", false, "copy all files when static is changed.")
index 12575618beabdb2bd8a3adbf512fa3b7c6b06711..1a35d1626098d241cc63c672010907fc031e85a6 100644 (file)
@@ -255,6 +255,7 @@ func initializeFlags(cmd *cobra.Command, cfg config.Provider) {
        setValueFromFlag(cmd.Flags(), "destination", cfg, "publishDir", false)
        setValueFromFlag(cmd.Flags(), "printI18nWarnings", cfg, "logI18nWarnings", false)
        setValueFromFlag(cmd.Flags(), "printPathWarnings", cfg, "logPathWarnings", false)
+
 }
 
 func setValueFromFlag(flags *flag.FlagSet, key string, cfg config.Provider, targetKey string, force bool) {
index 824fe18bd96af4d9db7565810b62cddec8dfd573..fbbbca4354bc296783d4010a283387ae89bfb458 100644 (file)
@@ -21,6 +21,7 @@ import (
        "os"
        "regexp"
        "runtime"
+       "sync/atomic"
        "time"
 
        "github.com/gohugoio/hugo/common/terminal"
@@ -31,7 +32,7 @@ import (
 var (
        // Counts ERROR logs to the global jww logger.
        GlobalErrorCounter *jww.Counter
-       PanicOnWarning     bool
+       PanicOnWarning     atomic.Bool
 )
 
 func init() {
@@ -136,14 +137,14 @@ const panicOnWarningMessage = "Warning trapped. Remove the --panicOnWarning flag
 
 func (l *logger) Warnf(format string, v ...any) {
        l.WARN.Printf(format, v...)
-       if PanicOnWarning {
+       if PanicOnWarning.Load() {
                panic(panicOnWarningMessage)
        }
 }
 
 func (l *logger) Warnln(v ...any) {
        l.WARN.Println(v...)
-       if PanicOnWarning {
+       if PanicOnWarning.Load() {
                panic(panicOnWarningMessage)
        }
 }
index c8a67682990bfd4dadbf272bb04c1a6e3cf6320f..9203762276dce4c69578313c54553976bcd536be 100644 (file)
@@ -415,7 +415,7 @@ func Deprecated(item, alternative string, err bool) {
                DistinctErrorLog.Errorf("%s is deprecated and will be removed in Hugo %s. %s", item, hugo.CurrentVersion.Next().ReleaseVersion(), alternative)
        } else {
                var warnPanicMessage string
-               if !loggers.PanicOnWarning {
+               if !loggers.PanicOnWarning.Load() {
                        warnPanicMessage = "\n\nRe-run Hugo with the flag --panicOnWarning to get a better error message."
                }
                DistinctWarnLog.Warnf("%s is deprecated and will be removed in a future release. %s%s", item, alternative, warnPanicMessage)
index 95d9c546134cdc0cae07e104e91500cb4b790cf8..b2ee03f152b0eac12f974ffe1a78b1409e947755 100644 (file)
@@ -65,10 +65,10 @@ func TestDistinctLoggerDoesNotLockOnWarningPanic(t *testing.T) {
 
        // Set PanicOnWarning to true to reproduce issue 9380
        // Ensure global variable loggers.PanicOnWarning is reset to old value after test
-       if loggers.PanicOnWarning == false {
-               loggers.PanicOnWarning = true
+       if !loggers.PanicOnWarning.Load() {
+               loggers.PanicOnWarning.Store(true)
                defer func() {
-                       loggers.PanicOnWarning = false
+                       loggers.PanicOnWarning.Store(false)
                }()
        }