mirror of
https://github.com/mikefarah/yq.git
synced 2024-12-19 20:19:04 +00:00
Added properties encoder test
This commit is contained in:
parent
8c1a96d121
commit
669f6cf127
@ -3,6 +3,7 @@ package yqlib
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
|
"strings"
|
||||||
|
|
||||||
"github.com/magiconair/properties"
|
"github.com/magiconair/properties"
|
||||||
yaml "gopkg.in/yaml.v3"
|
yaml "gopkg.in/yaml.v3"
|
||||||
@ -29,7 +30,9 @@ func (pe *propertiesEncoder) Encode(node *yaml.Node) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (pe *propertiesEncoder) doEncode(p *properties.Properties, node *yaml.Node, path string) error {
|
func (pe *propertiesEncoder) doEncode(p *properties.Properties, node *yaml.Node, path string) error {
|
||||||
p.SetComment(path, node.HeadComment+node.LineComment)
|
p.SetComment(path,
|
||||||
|
strings.Replace(node.HeadComment, "#", "", 1)+
|
||||||
|
strings.Replace(node.LineComment, "#", "", 1))
|
||||||
switch node.Kind {
|
switch node.Kind {
|
||||||
case yaml.ScalarNode:
|
case yaml.ScalarNode:
|
||||||
_, _, err := p.Set(path, node.Value)
|
_, _, err := p.Set(path, node.Value)
|
||||||
|
78
pkg/yqlib/encoder_properties_test.go
Normal file
78
pkg/yqlib/encoder_properties_test.go
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
package yqlib
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bufio"
|
||||||
|
"bytes"
|
||||||
|
"strings"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/mikefarah/yq/v4/test"
|
||||||
|
)
|
||||||
|
|
||||||
|
func yamlToProps(sampleYaml string) string {
|
||||||
|
var output bytes.Buffer
|
||||||
|
writer := bufio.NewWriter(&output)
|
||||||
|
|
||||||
|
var propsEncoder = NewPropertiesEncoder(writer)
|
||||||
|
inputs, err := readDocuments(strings.NewReader(sampleYaml), "sample.yml", 0)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
node := inputs.Front().Value.(*CandidateNode).Node
|
||||||
|
err = propsEncoder.Encode(node)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
writer.Flush()
|
||||||
|
|
||||||
|
return strings.TrimSuffix(output.String(), "\n")
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestPropertiesEncoderSimple(t *testing.T) {
|
||||||
|
var sampleYaml = `a: 'bob cool'`
|
||||||
|
|
||||||
|
var expectedJson = `a = bob cool`
|
||||||
|
var actualProps = yamlToProps(sampleYaml)
|
||||||
|
test.AssertResult(t, expectedJson, actualProps)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestPropertiesEncoderSimpleWithComments(t *testing.T) {
|
||||||
|
var sampleYaml = `a: 'bob cool' # line`
|
||||||
|
|
||||||
|
var expectedJson = `# line
|
||||||
|
a = bob cool`
|
||||||
|
var actualProps = yamlToProps(sampleYaml)
|
||||||
|
test.AssertResult(t, expectedJson, actualProps)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestPropertiesEncoderDeep(t *testing.T) {
|
||||||
|
var sampleYaml = `a:
|
||||||
|
b: "bob cool"
|
||||||
|
`
|
||||||
|
|
||||||
|
var expectedJson = `a.b = bob cool`
|
||||||
|
var actualProps = yamlToProps(sampleYaml)
|
||||||
|
test.AssertResult(t, expectedJson, actualProps)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestPropertiesEncoderDeepWithComments(t *testing.T) {
|
||||||
|
var sampleYaml = `a: # a thing
|
||||||
|
b: "bob cool" # b thing
|
||||||
|
`
|
||||||
|
|
||||||
|
var expectedJson = `# b thing
|
||||||
|
a.b = bob cool`
|
||||||
|
var actualProps = yamlToProps(sampleYaml)
|
||||||
|
test.AssertResult(t, expectedJson, actualProps)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestPropertiesEncoderArray(t *testing.T) {
|
||||||
|
var sampleYaml = `a:
|
||||||
|
b: [{c: dog}, {c: cat}]
|
||||||
|
`
|
||||||
|
|
||||||
|
var expectedJson = `a.b.0.c = dog
|
||||||
|
a.b.1.c = cat`
|
||||||
|
var actualProps = yamlToProps(sampleYaml)
|
||||||
|
test.AssertResult(t, expectedJson, actualProps)
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user