]> git.maquefel.me Git - brevno-suite/hugo/commitdiff
resources/page: Treat null dates as zero dates
authorJoe Mooring <joe.mooring@veriphor.com>
Sun, 6 Oct 2024 18:02:19 +0000 (11:02 -0700)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Sun, 6 Oct 2024 18:35:25 +0000 (20:35 +0200)
Closes #12906

resources/page/pagemeta/page_frontmatter.go
resources/page/pagemeta/pagemeta_integration_test.go

index 686f0d44d7163b1f54d756eb1b800caa460e5b07..d5d612609812cb2a406c5f580da030df857ca192 100644 (file)
@@ -728,7 +728,7 @@ func (f *frontmatterFieldHandlers) newDateFieldHandler(key string, setter func(d
        return func(d *FrontMatterDescriptor) (bool, error) {
                v, found := d.PageConfig.Params[key]
 
-               if !found || v == "" {
+               if !found || v == "" || v == nil {
                        return false, nil
                }
 
index 9d8f1b92f28d368a945ede72ca24908a9159ccac..d0c550b2e1ba170c2d5c0e30418f134a9ae5beb4 100644 (file)
@@ -52,47 +52,91 @@ func TestDateValidation(t *testing.T) {
 -- hugo.toml --
 disableKinds = ['page','rss','section','sitemap','taxonomy','term']
 -- content/_index.md --
-+++
-date = DATE
-+++
+FRONT_MATTER
 -- layouts/index.html --
 {{ .Date.UTC.Format "2006-01-02" }}
 --
 `
        errorMsg := `ERROR the "date" front matter field is not a parsable date`
 
-       // Valid (TOML)
-       f := strings.ReplaceAll(files, "DATE", "2024-10-01")
+       // TOML: unquoted date/time (valid)
+       f := strings.ReplaceAll(files, "FRONT_MATTER", `
++++
+date = 2024-10-01
++++
+       `)
        b := hugolib.Test(t, f)
        b.AssertFileContent("public/index.html", "2024-10-01")
 
-       // Valid (string)
-       f = strings.ReplaceAll(files, "DATE", `"2024-10-01"`)
+       // TOML: string (valid)
+       f = strings.ReplaceAll(files, "FRONT_MATTER", `
++++
+date = "2024-10-01"
++++
+       `)
        b = hugolib.Test(t, f)
        b.AssertFileContent("public/index.html", "2024-10-01")
 
-       // Valid (empty string)
-       f = strings.ReplaceAll(files, "DATE", `""`)
+       // TOML: empty string (valid)
+       f = strings.ReplaceAll(files, "FRONT_MATTER", `
++++
+date = ""
++++
+       `)
        b = hugolib.Test(t, f)
        b.AssertFileContent("public/index.html", "0001-01-01")
 
-       // Valid (int)
-       f = strings.ReplaceAll(files, "DATE", "0")
+       // TOML: int (valid)
+       f = strings.ReplaceAll(files, "FRONT_MATTER", `
++++
+date = 0
++++
+       `)
        b = hugolib.Test(t, f)
        b.AssertFileContent("public/index.html", "1970-01-01")
 
-       // Invalid (string)
-       f = strings.ReplaceAll(files, "DATE", `"2024-42-42"`)
+       // TOML: string (invalid)
+       f = strings.ReplaceAll(files, "FRONT_MATTER", `
++++
+date = "2024-42-42"
++++
+       `)
        b, _ = hugolib.TestE(t, f)
        b.AssertLogContains(errorMsg)
 
-       // Invalid (bool)
-       f = strings.ReplaceAll(files, "DATE", "true")
+       // TOML: bool (invalid)
+       f = strings.ReplaceAll(files, "FRONT_MATTER", `
++++
+date = true
++++
+       `)
        b, _ = hugolib.TestE(t, f)
        b.AssertLogContains(errorMsg)
 
-       // Invalid (float)
-       f = strings.ReplaceAll(files, "DATE", "6.7")
+       // TOML: float (invalid)
+       f = strings.ReplaceAll(files, "FRONT_MATTER", `
++++
+date = 6.7
++++
+       `)
        b, _ = hugolib.TestE(t, f)
        b.AssertLogContains(errorMsg)
+
+       // JSON: null (valid)
+       f = strings.ReplaceAll(files, "FRONT_MATTER", `
+{
+  "date": null
+}
+       `)
+       b = hugolib.Test(t, f)
+       b.AssertFileContent("public/index.html", "0001-01-01")
+
+       // YAML: null (valid)
+       f = strings.ReplaceAll(files, "FRONT_MATTER", `
+---
+date:
+---
+       `)
+       b = hugolib.Test(t, f)
+       b.AssertFileContent("public/index.html", "0001-01-01")
 }