stretchr / testify

A toolkit with common assertions and mocks that plays nicely with the standard library
MIT License
22.5k stars 1.56k forks source link

Support Custom Equality and Diff in Assert and Require #1616

Open nathanjsweet opened 1 week ago

nathanjsweet commented 1 week ago

Description

Update assert to compare data structures that are isomorphically equal (such as a Tree, Trie, etc) to one another, but not equal by value or reference.

Proposed solution

Define an Equal and Diff interface that structures can implement that the require/assert package will check on equality assertion (e.g. require.Equal(t, expected, actual)) rather than using DeepEqual.

Use case

Currently, the Cilium codebase uses a require.Truef as a workaround, calling into a custom Equals method and a custom Diff method.