diff --git a/pkg/dyff/compare_test.go b/pkg/dyff/compare_test.go index 7c20d6df..a3176129 100644 --- a/pkg/dyff/compare_test.go +++ b/pkg/dyff/compare_test.go @@ -1124,6 +1124,20 @@ b: bar Expect(results).ToNot(BeNil()) Expect(results.Diffs).To(HaveLen(0)) }) + + It("should produce deterministic results when lists with non-standard identifiers are compared", func() { + from, to, err := ytbx.LoadFiles(assets("issues", "issue-525", "from.yaml"), assets("issues", "issue-525", "to.yaml")) + Expect(err).To(BeNil()) + Expect(from).ToNot(BeNil()) + Expect(to).ToNot(BeNil()) + + for range 100 { + results, err := dyff.CompareInputFiles(from, to) + Expect(err).NotTo(HaveOccurred()) + Expect(results).ToNot(BeNil()) + Expect(results.Diffs).To(HaveLen(4)) + } + }) }) }) }) diff --git a/pkg/dyff/core.go b/pkg/dyff/core.go index 08cf7b80..18c60987 100644 --- a/pkg/dyff/core.go +++ b/pkg/dyff/core.go @@ -29,6 +29,7 @@ import ( "github.com/gonvenience/idem" "github.com/gonvenience/text" "github.com/gonvenience/ytbx" + "github.com/mitchellh/hashstructure" yamlv3 "gopkg.in/yaml.v3" )