mirror of
https://github.com/mikefarah/yq.git
synced 2026-07-05 12:10:37 +00:00
Merge 64525c3d82 into e2f1d5ccf7
This commit is contained in:
commit
5702cdb6d5
@ -5,6 +5,8 @@ import (
|
|||||||
"errors"
|
"errors"
|
||||||
"io"
|
"io"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
|
"github.com/dimchansky/utfbom"
|
||||||
)
|
)
|
||||||
|
|
||||||
type frontMatterHandler interface {
|
type frontMatterHandler interface {
|
||||||
@ -43,13 +45,15 @@ func (f *frontMatterHandlerImpl) Split() error {
|
|||||||
var reader *bufio.Reader
|
var reader *bufio.Reader
|
||||||
var err error
|
var err error
|
||||||
if f.originalFilename == "-" {
|
if f.originalFilename == "-" {
|
||||||
reader = bufio.NewReader(os.Stdin)
|
cleanReader, _ := utfbom.Skip(os.Stdin)
|
||||||
|
reader = bufio.NewReader(cleanReader)
|
||||||
} else {
|
} else {
|
||||||
file, err := os.Open(f.originalFilename) // #nosec
|
file, err := os.Open(f.originalFilename) // #nosec
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
reader = bufio.NewReader(file)
|
cleanReader, _ := utfbom.Skip(file)
|
||||||
|
reader = bufio.NewReader(cleanReader)
|
||||||
}
|
}
|
||||||
f.contentReader = reader
|
f.contentReader = reader
|
||||||
|
|
||||||
|
|||||||
@ -157,6 +157,42 @@ Some content
|
|||||||
fmHandler.CleanUp()
|
fmHandler.CleanUp()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestFrontMatterSplitWithBOM(t *testing.T) {
|
||||||
|
// Regression test for https://github.com/mikefarah/yq/issues/2496
|
||||||
|
// A UTF-8 BOM before the opening --- must be skipped, otherwise the
|
||||||
|
// separator isn't recognised and the opening --- is lost.
|
||||||
|
file := createTestFile("\ufeff---\na: apple\nb: banana\n---\nnot a\nyaml: doc\n")
|
||||||
|
|
||||||
|
expectedYamlFm := `---
|
||||||
|
a: apple
|
||||||
|
b: banana
|
||||||
|
`
|
||||||
|
|
||||||
|
expectedContent := `---
|
||||||
|
not a
|
||||||
|
yaml: doc
|
||||||
|
`
|
||||||
|
|
||||||
|
fmHandler := NewFrontMatterHandler(file)
|
||||||
|
err := fmHandler.Split()
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
yamlFm := readFile(fmHandler.GetYamlFrontMatterFilename())
|
||||||
|
|
||||||
|
test.AssertResult(t, expectedYamlFm, yamlFm)
|
||||||
|
|
||||||
|
contentBytes, err := io.ReadAll(fmHandler.GetContentReader())
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
test.AssertResult(t, expectedContent, string(contentBytes))
|
||||||
|
|
||||||
|
tryRemoveTempFile(file)
|
||||||
|
fmHandler.CleanUp()
|
||||||
|
}
|
||||||
|
|
||||||
func TestFrontMatterSplitWithArray(t *testing.T) {
|
func TestFrontMatterSplitWithArray(t *testing.T) {
|
||||||
file := createTestFile(`[1,2,3]
|
file := createTestFile(`[1,2,3]
|
||||||
---
|
---
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user