mirror of
https://github.com/mikefarah/yq.git
synced 2024-12-19 20:19:04 +00:00
247 lines
4.7 KiB
Go
247 lines
4.7 KiB
Go
package cmd
|
|
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
"testing"
|
|
|
|
"github.com/mikefarah/yq/v3/test"
|
|
)
|
|
|
|
func TestDeleteYamlCmd(t *testing.T) {
|
|
content := `a: 2
|
|
b:
|
|
c: things
|
|
d: something else
|
|
`
|
|
filename := test.WriteTempYamlFile(content)
|
|
defer test.RemoveTempYamlFile(filename)
|
|
|
|
cmd := getRootCommand()
|
|
result := test.RunCmd(cmd, fmt.Sprintf("delete %s b.c", filename))
|
|
if result.Error != nil {
|
|
t.Error(result.Error)
|
|
}
|
|
|
|
expectedOutput := `a: 2
|
|
b:
|
|
d: something else
|
|
`
|
|
test.AssertResult(t, expectedOutput, result.Output)
|
|
}
|
|
|
|
func TestDeleteDeepDoesNotExistCmd(t *testing.T) {
|
|
content := `a: 2`
|
|
filename := test.WriteTempYamlFile(content)
|
|
defer test.RemoveTempYamlFile(filename)
|
|
|
|
cmd := getRootCommand()
|
|
result := test.RunCmd(cmd, fmt.Sprintf("delete %s b.c", filename))
|
|
if result.Error != nil {
|
|
t.Error(result.Error)
|
|
}
|
|
|
|
expectedOutput := `a: 2
|
|
`
|
|
test.AssertResult(t, expectedOutput, result.Output)
|
|
}
|
|
|
|
func TestDeleteSplatYaml(t *testing.T) {
|
|
content := `a: other
|
|
b: [3, 4]
|
|
c:
|
|
toast: leave
|
|
test: 1
|
|
tell: 1
|
|
tasty.taco: cool
|
|
`
|
|
filename := test.WriteTempYamlFile(content)
|
|
defer test.RemoveTempYamlFile(filename)
|
|
|
|
cmd := getRootCommand()
|
|
result := test.RunCmd(cmd, fmt.Sprintf("delete %s c.te*", filename))
|
|
if result.Error != nil {
|
|
t.Error(result.Error)
|
|
}
|
|
|
|
expectedOutput := `a: other
|
|
b: [3, 4]
|
|
c:
|
|
toast: leave
|
|
tasty.taco: cool
|
|
`
|
|
test.AssertResult(t, expectedOutput, result.Output)
|
|
}
|
|
|
|
func TestDeleteSplatArrayYaml(t *testing.T) {
|
|
content := `a: 2
|
|
b:
|
|
hi:
|
|
- thing: item1
|
|
name: fred
|
|
- thing: item2
|
|
name: sam
|
|
`
|
|
filename := test.WriteTempYamlFile(content)
|
|
defer test.RemoveTempYamlFile(filename)
|
|
|
|
cmd := getRootCommand()
|
|
result := test.RunCmd(cmd, fmt.Sprintf("delete %s b.hi[*].thing", filename))
|
|
if result.Error != nil {
|
|
t.Error(result.Error)
|
|
}
|
|
|
|
expectedOutput := `a: 2
|
|
b:
|
|
hi:
|
|
- name: fred
|
|
- name: sam
|
|
`
|
|
test.AssertResult(t, expectedOutput, result.Output)
|
|
}
|
|
|
|
func TestDeleteDeepSplatArrayYaml(t *testing.T) {
|
|
content := `thing: 123
|
|
b:
|
|
hi:
|
|
- thing: item1
|
|
name: fred
|
|
`
|
|
filename := test.WriteTempYamlFile(content)
|
|
defer test.RemoveTempYamlFile(filename)
|
|
|
|
cmd := getRootCommand()
|
|
result := test.RunCmd(cmd, fmt.Sprintf("delete %s **.thing", filename))
|
|
if result.Error != nil {
|
|
t.Error(result.Error)
|
|
}
|
|
|
|
expectedOutput := `b:
|
|
hi:
|
|
- name: fred
|
|
`
|
|
test.AssertResult(t, expectedOutput, result.Output)
|
|
}
|
|
|
|
func TestDeleteSplatPrefixYaml(t *testing.T) {
|
|
content := `a: 2
|
|
b:
|
|
hi:
|
|
c: things
|
|
d: something else
|
|
there:
|
|
c: more things
|
|
d: more something else
|
|
there2:
|
|
c: more things also
|
|
d: more something else also
|
|
`
|
|
filename := test.WriteTempYamlFile(content)
|
|
defer test.RemoveTempYamlFile(filename)
|
|
|
|
cmd := getRootCommand()
|
|
result := test.RunCmd(cmd, fmt.Sprintf("delete %s b.there*.c", filename))
|
|
if result.Error != nil {
|
|
t.Error(result.Error)
|
|
}
|
|
|
|
expectedOutput := `a: 2
|
|
b:
|
|
hi:
|
|
c: things
|
|
d: something else
|
|
there:
|
|
d: more something else
|
|
there2:
|
|
d: more something else also
|
|
`
|
|
test.AssertResult(t, expectedOutput, result.Output)
|
|
}
|
|
|
|
func TestDeleteYamlArrayCmd(t *testing.T) {
|
|
content := `- 1
|
|
- 2
|
|
- 3
|
|
`
|
|
filename := test.WriteTempYamlFile(content)
|
|
defer test.RemoveTempYamlFile(filename)
|
|
|
|
cmd := getRootCommand()
|
|
result := test.RunCmd(cmd, fmt.Sprintf("delete %s [1]", filename))
|
|
if result.Error != nil {
|
|
t.Error(result.Error)
|
|
}
|
|
|
|
expectedOutput := `- 1
|
|
- 3
|
|
`
|
|
test.AssertResult(t, expectedOutput, result.Output)
|
|
}
|
|
|
|
func TestDeleteYamlArrayExpressionCmd(t *testing.T) {
|
|
content := `- name: fred
|
|
- name: cat
|
|
- name: thing
|
|
`
|
|
filename := test.WriteTempYamlFile(content)
|
|
defer test.RemoveTempYamlFile(filename)
|
|
|
|
cmd := getRootCommand()
|
|
result := test.RunCmd(cmd, fmt.Sprintf("delete %s (name==cat)", filename))
|
|
if result.Error != nil {
|
|
t.Error(result.Error)
|
|
}
|
|
|
|
expectedOutput := `- name: fred
|
|
- name: thing
|
|
`
|
|
test.AssertResult(t, expectedOutput, result.Output)
|
|
}
|
|
|
|
func TestDeleteYamlMulti(t *testing.T) {
|
|
content := `apples: great
|
|
---
|
|
- 1
|
|
- 2
|
|
- 3
|
|
`
|
|
filename := test.WriteTempYamlFile(content)
|
|
defer test.RemoveTempYamlFile(filename)
|
|
|
|
cmd := getRootCommand()
|
|
result := test.RunCmd(cmd, fmt.Sprintf("delete -d 1 %s [1]", filename))
|
|
if result.Error != nil {
|
|
t.Error(result.Error)
|
|
}
|
|
|
|
expectedOutput := `apples: great
|
|
---
|
|
- 1
|
|
- 3
|
|
`
|
|
test.AssertResult(t, expectedOutput, result.Output)
|
|
}
|
|
|
|
func TestDeleteYamlMultiAllCmd(t *testing.T) {
|
|
content := `b:
|
|
c: 3
|
|
apples: great
|
|
---
|
|
apples: great
|
|
something: else
|
|
`
|
|
filename := test.WriteTempYamlFile(content)
|
|
defer test.RemoveTempYamlFile(filename)
|
|
|
|
cmd := getRootCommand()
|
|
result := test.RunCmd(cmd, fmt.Sprintf("delete %s -d * apples", filename))
|
|
if result.Error != nil {
|
|
t.Error(result.Error)
|
|
}
|
|
expectedOutput := `b:
|
|
c: 3
|
|
---
|
|
something: else`
|
|
test.AssertResult(t, expectedOutput, strings.Trim(result.Output, "\n "))
|
|
}
|