mirror of
https://github.com/caddyserver/caddy.git
synced 2024-12-27 22:23:48 +03:00
* add test case for SplitFrontMatter showing issue with windows newline * fix issue with windows newline when using SplitFrontMatter * Update modules/caddyhttp/templates/frontmatter.go Co-authored-by: Francis Lavoie <lavofr@gmail.com> * make it mere explicit what is trimmed from firstLine * Update modules/caddyhttp/templates/frontmatter.go Co-authored-by: Francis Lavoie <lavofr@gmail.com> Co-authored-by: Matt Holt <mholt@users.noreply.github.com>
This commit is contained in:
parent
41a682ddde
commit
483e31b978
2 changed files with 48 additions and 0 deletions
|
@ -30,6 +30,9 @@ func extractFrontMatter(input string) (map[string]interface{}, string, error) {
|
|||
}
|
||||
firstLine := input[firstLineStart:firstLineEnd]
|
||||
|
||||
// ensure residue windows carriage return byte is removed
|
||||
firstLine = strings.TrimSpace(firstLine)
|
||||
|
||||
// see what kind of front matter there is, if any
|
||||
var closingFence string
|
||||
var fmParser func([]byte) (map[string]interface{}, error)
|
||||
|
|
|
@ -284,6 +284,51 @@ func TestFileListing(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
func TestSplitFrontMatter(t *testing.T) {
|
||||
context := getContextOrFail(t)
|
||||
|
||||
for i, test := range []struct {
|
||||
input string
|
||||
expect string
|
||||
}{
|
||||
{
|
||||
// yaml with windows newline
|
||||
input: "---\r\ntitle: Welcome\r\n---\r\n# Test\\r\\n",
|
||||
expect: `Welcome`,
|
||||
},
|
||||
{
|
||||
// yaml
|
||||
input: `---
|
||||
title: Welcome
|
||||
---
|
||||
### Test`,
|
||||
expect: `Welcome`,
|
||||
},
|
||||
{
|
||||
// toml
|
||||
input: `+++
|
||||
title = "Welcome"
|
||||
+++
|
||||
### Test`,
|
||||
expect: `Welcome`,
|
||||
},
|
||||
{
|
||||
// json
|
||||
input: `{
|
||||
"title": "Welcome"
|
||||
}
|
||||
### Test`,
|
||||
expect: `Welcome`,
|
||||
},
|
||||
} {
|
||||
result, _ := context.funcSplitFrontMatter(test.input)
|
||||
if result.Meta["title"] != test.expect {
|
||||
t.Errorf("Test %d: Expected %s, found %s. Input was SplitFrontMatter(%s)", i, test.expect, result.Meta["title"], test.input)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func getContextOrFail(t *testing.T) templateContext {
|
||||
context, err := initTestContext()
|
||||
if err != nil {
|
||||
|
|
Loading…
Reference in a new issue