Skip to content

Commit

Permalink
net/netip: add test that Compare and reflect.DeepEqual match
Browse files Browse the repository at this point in the history
Updates #68113

Change-Id: I1107686ef364f77f48f55534ea8ec68d1785e1e6
Reviewed-on: https://go-review.googlesource.com/c/go/+/594375
Auto-Submit: Brad Fitzpatrick <[email protected]>
LUCI-TryBot-Result: Go LUCI <[email protected]>
Reviewed-by: Ian Lance Taylor <[email protected]>
Reviewed-by: Michael Knyszek <[email protected]>
  • Loading branch information
bradfitz authored and gopherbot committed Jun 24, 2024
1 parent 740043f commit 085cf0f
Showing 1 changed file with 15 additions and 0 deletions.
15 changes: 15 additions & 0 deletions src/net/netip/netip_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -893,6 +893,15 @@ func TestAddrLessCompare(t *testing.T) {
{mustIP("::1%a"), mustIP("::1%b"), true},
{mustIP("::1%a"), mustIP("::1%a"), false},
{mustIP("::1%b"), mustIP("::1%a"), false},

// For Issue 68113, verify that an IPv4 address and a
// v4-mapped-IPv6 address differing only in their zone
// pointer are unequal via all three of
// ==/Compare/reflect.DeepEqual. In Go 1.22 and
// earlier, these were accidentally equal via
// DeepEqual due to their zone pointers (z) differing
// but pointing to identical structures.
{mustIP("::ffff:11.1.1.12"), mustIP("11.1.1.12"), false},
}
for _, tt := range tests {
got := tt.a.Less(tt.b)
Expand Down Expand Up @@ -920,6 +929,12 @@ func TestAddrLessCompare(t *testing.T) {
t.Errorf("Less(%q, %q) was correctly %v, but so was Less(%q, %q)", tt.a, tt.b, got, tt.b, tt.a)
}
}

// Also check reflect.DeepEqual. See issue 68113.
deepEq := reflect.DeepEqual(tt.a, tt.b)
if (cmp == 0) != deepEq {
t.Errorf("%q and %q differ in == (%v) vs reflect.DeepEqual (%v)", tt.a, tt.b, cmp == 0, deepEq)
}
}

// And just sort.
Expand Down

0 comments on commit 085cf0f

Please sign in to comment.