77 lines
1.3 KiB
Go
77 lines
1.3 KiB
Go
package main
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/goccy/go-yaml"
|
|
"github.com/stretchr/testify/require"
|
|
"github.com/stretchr/testify/suite"
|
|
)
|
|
|
|
type DiffSuite struct {
|
|
suite.Suite
|
|
}
|
|
|
|
func TestDiffSuite(t *testing.T) {
|
|
suite.Run(t, new(DiffSuite))
|
|
}
|
|
|
|
func (s *DiffSuite) TestCompareIgnoresTopLevelMapKeyOrder() {
|
|
diff1, diff2 := s.compareDocuments(`
|
|
first: 1
|
|
second: 2
|
|
`, `
|
|
second: 2
|
|
first: 1
|
|
`)
|
|
|
|
require.Empty(s.T(), diff1)
|
|
require.Empty(s.T(), diff2)
|
|
}
|
|
|
|
func (s *DiffSuite) TestCompareIgnoresMapKeyOrderInArray() {
|
|
diff1, diff2 := s.compareDocuments(`
|
|
items:
|
|
- name: alpha
|
|
value: 1
|
|
- name: beta
|
|
value: 2
|
|
`, `
|
|
items:
|
|
- value: 1
|
|
name: alpha
|
|
- value: 2
|
|
name: beta
|
|
`)
|
|
|
|
require.Empty(s.T(), diff1)
|
|
require.Empty(s.T(), diff2)
|
|
}
|
|
|
|
func (s *DiffSuite) TestCompareStillDetectsChangedMapValue() {
|
|
diff1, diff2 := s.compareDocuments(`
|
|
items:
|
|
- name: alpha
|
|
value: 1
|
|
`, `
|
|
items:
|
|
- value: 2
|
|
name: alpha
|
|
`)
|
|
|
|
require.NotEmpty(s.T(), diff1)
|
|
require.NotEmpty(s.T(), diff2)
|
|
}
|
|
|
|
func (s *DiffSuite) compareDocuments(yaml1Data, yaml2Data string) (yaml.MapSlice, yaml.MapSlice) {
|
|
s.T().Helper()
|
|
|
|
yaml1, err := parse([]byte(yaml1Data))
|
|
require.NoError(s.T(), err)
|
|
yaml2, err := parse([]byte(yaml2Data))
|
|
require.NoError(s.T(), err)
|
|
|
|
diff1, diff2 := compare(yaml1, yaml2)
|
|
return diff1, diff2
|
|
}
|