2023-10-18 01:11:53 +00:00
|
|
|
package yqlib
|
|
|
|
|
|
|
|
import (
|
|
|
|
"testing"
|
|
|
|
|
|
|
|
"github.com/mikefarah/yq/v4/test"
|
|
|
|
)
|
|
|
|
|
|
|
|
var yamlFormatScenarios = []formatScenario{
|
2023-12-12 00:29:00 +00:00
|
|
|
{
|
|
|
|
description: "scalar with doc separator",
|
|
|
|
skipDoc: true,
|
|
|
|
input: "--- cat",
|
|
|
|
expected: "---\ncat\n",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
description: "scalar with doc separator",
|
|
|
|
skipDoc: true,
|
|
|
|
input: "---cat",
|
|
|
|
expected: "---cat\n",
|
|
|
|
},
|
2023-10-18 01:11:53 +00:00
|
|
|
{
|
|
|
|
description: "basic - null",
|
|
|
|
skipDoc: true,
|
|
|
|
input: "null",
|
|
|
|
expected: "null\n",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
description: "basic - ~",
|
|
|
|
skipDoc: true,
|
|
|
|
input: "~",
|
|
|
|
expected: "~\n",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
description: "octal",
|
|
|
|
skipDoc: true,
|
|
|
|
input: "0o30",
|
|
|
|
expression: "tag",
|
|
|
|
expected: "!!int\n",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
description: "basic - [null]",
|
|
|
|
skipDoc: true,
|
|
|
|
input: "[null]",
|
|
|
|
expected: "[null]\n",
|
|
|
|
},
|
2023-11-14 02:00:30 +00:00
|
|
|
{
|
|
|
|
description: "multi document anchor map",
|
|
|
|
skipDoc: true,
|
|
|
|
input: "a: &remember mike\n---\nb: *remember",
|
|
|
|
expression: "explode(.)",
|
|
|
|
expected: "a: mike\n---\nb: mike\n",
|
|
|
|
},
|
2023-10-18 01:11:53 +00:00
|
|
|
{
|
|
|
|
description: "basic - [~]",
|
|
|
|
skipDoc: true,
|
|
|
|
input: "[~]",
|
|
|
|
expected: "[~]\n",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
description: "basic - null map value",
|
|
|
|
skipDoc: true,
|
|
|
|
input: "a: null",
|
|
|
|
expected: "a: null\n",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
description: "basic - number",
|
|
|
|
skipDoc: true,
|
|
|
|
input: "3",
|
|
|
|
expected: "3\n",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
description: "basic - float",
|
|
|
|
skipDoc: true,
|
|
|
|
input: "3.1",
|
|
|
|
expected: "3.1\n",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
description: "basic - float",
|
|
|
|
skipDoc: true,
|
|
|
|
input: "[1, 2]",
|
|
|
|
expected: "[1, 2]\n",
|
|
|
|
},
|
|
|
|
}
|
|
|
|
|
|
|
|
var yamlParseScenarios = []expressionScenario{
|
|
|
|
{
|
|
|
|
document: `a: hello # things`,
|
|
|
|
expected: []string{
|
|
|
|
"D0, P[], (!!map)::a: hello # things\n",
|
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
|
|
|
document: "a: &a apple\nb: *a",
|
|
|
|
expression: ".b | explode(.)",
|
|
|
|
expected: []string{
|
|
|
|
"D0, P[b], (!!str)::apple\n",
|
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
|
|
|
document: `a: [1,2]`,
|
|
|
|
expected: []string{
|
|
|
|
"D0, P[], (!!map)::a: [1, 2]\n",
|
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
|
|
|
document: `a: !horse [a]`,
|
|
|
|
expected: []string{
|
|
|
|
"D0, P[], (!!map)::a: !horse [a]\n",
|
|
|
|
},
|
|
|
|
},
|
|
|
|
}
|
|
|
|
|
|
|
|
func testYamlScenario(t *testing.T, s formatScenario) {
|
2024-02-24 04:36:16 +00:00
|
|
|
test.AssertResultWithContext(t, s.expected, mustProcessFormatScenario(s, NewYamlDecoder(ConfiguredYamlPreferences), NewYamlEncoder(ConfiguredYamlPreferences)), s.description)
|
2023-10-18 01:11:53 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
func TestYamlParseScenarios(t *testing.T) {
|
|
|
|
for _, tt := range yamlParseScenarios {
|
|
|
|
testScenario(t, &tt)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestYamlFormatScenarios(t *testing.T) {
|
|
|
|
for _, tt := range yamlFormatScenarios {
|
|
|
|
testYamlScenario(t, tt)
|
|
|
|
}
|
|
|
|
}
|