Skip to content

Commit 2e914a3

Browse files
authored
fix(equalto): go-cmp opts were not passed to failure diff (#17)
This change passes any given go-cmp Opt instances to the `cmp.Diff` call and not only to the cmp.Equal function. This fixes a potential panic that can happen when structs with unexported fields are given as actual & expected values.
1 parent 7412017 commit 2e914a3

File tree

2 files changed

+24
-1
lines changed

2 files changed

+24
-1
lines changed

matchers_equal_to.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ func EqualTo(expected ...any) EqualToMatcher {
5353
comparator: func(t T, expected, actual any) {
5454
GetHelper(t).Helper()
5555
if !cmp.Equal(expected, actual, opts...) {
56-
t.Fatalf("Unexpected difference (\"-\" lines are expected values; \"+\" lines are actual values):\n%s", strings.TrimSpace(cmp.Diff(expected, actual)))
56+
t.Fatalf("Unexpected difference (\"-\" lines are expected values; \"+\" lines are actual values):\n%s", strings.TrimSpace(cmp.Diff(expected, actual, opts...)))
5757
}
5858
},
5959
}

matchers_equal_to_test.go

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ import (
44
"regexp"
55
"testing"
66

7+
"github.com/google/go-cmp/cmp/cmpopts"
8+
79
. "github.com/arikkfir/justest"
810
)
911

@@ -40,6 +42,27 @@ func TestEqualTo(t *testing.T) {
4042
expected: []any{1, 2},
4143
verifier: FailureVerifier(`^Unexpected difference: received 1 actual values and 2 expected values.*`),
4244
},
45+
"Failure diff uses opts": {
46+
actuals: []any{
47+
struct {
48+
Public string
49+
private string
50+
}{
51+
Public: "public-value",
52+
private: "private-value",
53+
},
54+
},
55+
expected: []any{
56+
struct {
57+
Public string
58+
private string
59+
}{Public: "incorrect-value", private: "private-value"},
60+
cmpopts.IgnoreUnexported(struct {
61+
Public string
62+
private string
63+
}{})},
64+
verifier: FailureVerifier(regexp.QuoteMeta(`Unexpected difference ("-" lines are expected values; "+" lines are actual values):`) + "\n.*"),
65+
},
4366
}
4467
for name, tc := range testCases {
4568
tc := tc

0 commit comments

Comments
 (0)