]> git.maquefel.me Git - brevno-suite/hugo/commitdiff
Fix Erroridf/Warnidf mixed case issue
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Sat, 22 Jun 2024 16:41:18 +0000 (18:41 +0200)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Sat, 22 Jun 2024 17:01:56 +0000 (19:01 +0200)
Fixes #12617

common/loggers/logger.go
config/allconfig/allconfig.go
hugolib/cascade_test.go
hugolib/integrationtest_builder.go
hugolib/menu_test.go
hugolib/pagesfromdata/pagesfromgotmpl_integration_test.go
tpl/fmt/fmt_integration_test.go

index f851513b3eb19dcc98c07cd7a1484670d8c3829a..5b49e2b17a530ffd5a4308a5bf4ed25aeb1ef51c 100644 (file)
@@ -323,11 +323,13 @@ func (l *logAdapter) Errors() string {
 }
 
 func (l *logAdapter) Erroridf(id, format string, v ...any) {
+       id = strings.ToLower(id)
        format += l.idfInfoStatement("error", id, format)
        l.errorl.WithField(FieldNameStatementID, id).Logf(format, v...)
 }
 
 func (l *logAdapter) Warnidf(id, format string, v ...any) {
+       id = strings.ToLower(id)
        format += l.idfInfoStatement("warning", id, format)
        l.warnl.WithField(FieldNameStatementID, id).Logf(format, v...)
 }
index 9f899939b546cd2382f3b13959e0ad325c051b70..afa72fb11ac2c9850a6c94d13a526f021f789dec 100644 (file)
@@ -315,9 +315,13 @@ func (c *Config) CompileConfig(logger loggers.Logger) error {
                }
        }
 
+       for i, s := range c.IgnoreLogs {
+               c.IgnoreLogs[i] = strings.ToLower(s)
+       }
+
        ignoredLogIDs := make(map[string]bool)
        for _, err := range c.IgnoreLogs {
-               ignoredLogIDs[strings.ToLower(err)] = true
+               ignoredLogIDs[err] = true
        }
 
        baseURL, err := urls.NewBaseURLFromString(c.BaseURL)
index 7a4b6e6be687b553ee2b89142e00f614b6737910..cbceaaed58a8be92392b78d15cabcb9389bb54e6 100644 (file)
@@ -779,7 +779,7 @@ title: "Post 1"
 {{ .Title }}|{{ .Params.foo }}$
 `
        b := Test(t, files)
-       b.AssertLogNotContains(`looks like a path with an extension`)
+       b.AssertLogContains(`! looks like a path with an extension`)
 }
 
 func TestCascadConfigExtensionInPath(t *testing.T) {
@@ -813,7 +813,7 @@ foo = 'bar'
 path = '/p1.md'
 `
        b := Test(t, files)
-       b.AssertLogNotContains(`looks like a path with an extension`)
+       b.AssertLogContains(`! looks like a path with an extension`)
 }
 
 func TestCascadeIssue12172(t *testing.T) {
index 7495d33417fd66f514d0a7e01a31df9dc9393e2c..758fc4ec93dcb3513247f9aeb5985ff0d3d046ab 100644 (file)
@@ -206,24 +206,34 @@ func (b *lockingBuffer) Write(p []byte) (n int, err error) {
        return
 }
 
+// AssertLogContains asserts that the last build log contains the given strings.
+// Each string can be negated with a "! " prefix.
 func (s *IntegrationTestBuilder) AssertLogContains(els ...string) {
        s.Helper()
        for _, el := range els {
-               s.Assert(s.lastBuildLog, qt.Contains, el)
-       }
-}
-
-func (s *IntegrationTestBuilder) AssertLogNotContains(els ...string) {
-       s.Helper()
-       for _, el := range els {
-               s.Assert(s.lastBuildLog, qt.Not(qt.Contains), el)
+               var negate bool
+               el, negate = s.negate(el)
+               check := qt.Contains
+               if negate {
+                       check = qt.Not(qt.Contains)
+               }
+               s.Assert(s.lastBuildLog, check, el)
        }
 }
 
+// AssertLogNotContains asserts that the last build log does matches the given regular expressions.
+// The regular expressions can be negated with a "! " prefix.
 func (s *IntegrationTestBuilder) AssertLogMatches(expression string) {
        s.Helper()
+       var negate bool
+       expression, negate = s.negate(expression)
        re := regexp.MustCompile(expression)
-       s.Assert(re.MatchString(s.lastBuildLog), qt.IsTrue, qt.Commentf(s.lastBuildLog))
+       checker := qt.IsTrue
+       if negate {
+               checker = qt.IsFalse
+       }
+
+       s.Assert(re.MatchString(s.lastBuildLog), checker, qt.Commentf(s.lastBuildLog))
 }
 
 func (s *IntegrationTestBuilder) AssertBuildCountData(count int) {
@@ -258,6 +268,15 @@ func (s *IntegrationTestBuilder) AssertFileCount(dirname string, expected int) {
        s.Assert(count, qt.Equals, expected)
 }
 
+func (s *IntegrationTestBuilder) negate(match string) (string, bool) {
+       var negate bool
+       if strings.HasPrefix(match, "! ") {
+               negate = true
+               match = strings.TrimPrefix(match, "! ")
+       }
+       return match, negate
+}
+
 func (s *IntegrationTestBuilder) AssertFileContent(filename string, matches ...string) {
        s.Helper()
        content := strings.TrimSpace(s.FileContent(filename))
@@ -270,10 +289,7 @@ func (s *IntegrationTestBuilder) AssertFileContent(filename string, matches ...s
                                continue
                        }
                        var negate bool
-                       if strings.HasPrefix(match, "! ") {
-                               negate = true
-                               match = strings.TrimPrefix(match, "! ")
-                       }
+                       match, negate = s.negate(match)
                        if negate {
                                s.Assert(content, qt.Not(qt.Contains), match, cm)
                                continue
index 9e73a8dc348bdf9d1123bbd42a947c85c1724798..304b4fbf4eaf733c4464337b47e19a6c59960437 100644 (file)
@@ -674,7 +674,7 @@ menu: main
 
        b.AssertFileContent("public/en/index.html", `<a href="/en/p1/">p1</a><a href="/en/p2/">p2</a>`)
        b.AssertFileContent("public/fr/index.html", `<a href="/fr/p1/">p1</a>`)
-       b.AssertLogNotContains("WARN")
+       b.AssertLogContains("! WARN")
 }
 
 func TestSectionPagesIssue12399(t *testing.T) {
index 3c50f87f7eaa3925df3619654c3d8f2fe3d576b7..709d6db7b8337674a1f5d1fb64385a397fa09e2d 100644 (file)
@@ -562,7 +562,7 @@ title: "p1"
 
        b = hugolib.Test(t, files, hugolib.TestOptWarn())
 
-       b.AssertLogNotContains("WARN")
+       b.AssertLogContains("! WARN")
 }
 
 func TestPagesFromGoTmplPathWarningsPathResource(t *testing.T) {
@@ -597,7 +597,7 @@ value: data1
 
        b = hugolib.Test(t, files, hugolib.TestOptWarn())
 
-       b.AssertLogNotContains("WARN")
+       b.AssertLogContains("! WARN")
 }
 
 func TestPagesFromGoTmplShortcodeNoPreceddingCharacterIssue12544(t *testing.T) {
index 74322770e08e8499200c63cec508cb7ec71f92b2..87a89943ce0d1438acdeb60ef41a76636c69acb1 100644 (file)
@@ -27,16 +27,22 @@ func TestErroridf(t *testing.T) {
        files := `
 -- hugo.toml --
 disableKinds = ['page','rss','section','sitemap','taxonomy','term']
-ignoreErrors = ['error-b']
+ignoreErrors = ['error-b','error-C']
 -- layouts/index.html --
 {{ erroridf "error-a" "%s" "a"}}
 {{ erroridf "error-b" "%s" "b"}}
+{{ erroridf "error-C" "%s" "C"}}
+{{ erroridf "error-c" "%s" "c"}}
+ {{ erroridf "error-d" "%s" "D"}}
   `
 
        b, err := hugolib.TestE(t, files)
 
        b.Assert(err, qt.IsNotNil)
-       b.AssertLogMatches(`^ERROR a\nYou can suppress this error by adding the following to your site configuration:\nignoreLogs = \['error-a'\]\n$`)
+       b.AssertLogMatches(`ERROR a\nYou can suppress this error by adding the following to your site configuration:\nignoreLogs = \['error-a'\]`)
+       b.AssertLogMatches(`ERROR D`)
+       b.AssertLogMatches(`! ERROR C`)
+       b.AssertLogMatches(`! ERROR c`)
 }
 
 func TestWarnidf(t *testing.T) {
@@ -45,13 +51,15 @@ func TestWarnidf(t *testing.T) {
        files := `
 -- hugo.toml --
 disableKinds = ['page','rss','section','sitemap','taxonomy','term']
-ignoreLogs = ['warning-b']
+ignoreLogs = ['warning-b', 'WarniNg-C']
 -- layouts/index.html --
 {{ warnidf "warning-a" "%s" "a"}}
 {{ warnidf "warning-b" "%s" "b"}}
+{{ warnidf "warNing-C" "%s" "c"}}
   `
 
        b := hugolib.Test(t, files, hugolib.TestOptWarn())
        b.AssertLogContains("WARN  a", "You can suppress this warning", "ignoreLogs", "['warning-a']")
-       b.AssertLogNotContains("['warning-b']")
+       b.AssertLogContains("! ['warning-b']")
+       b.AssertLogContains("! ['warning-c']")
 }