mirror of
https://github.com/caddyserver/caddy.git
synced 2024-12-28 14:43: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]
|
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
|
// see what kind of front matter there is, if any
|
||||||
var closingFence string
|
var closingFence string
|
||||||
var fmParser func([]byte) (map[string]interface{}, error)
|
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 {
|
func getContextOrFail(t *testing.T) templateContext {
|
||||||
context, err := initTestContext()
|
context, err := initTestContext()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
Loading…
Reference in a new issue