From 154621cde0cd207381004fdf2abb46f880286cac Mon Sep 17 00:00:00 2001 From: tscales Date: Wed, 30 Aug 2023 18:43:07 -0700 Subject: [PATCH] assert: ObjectsAreEqual: use time.Equal for time.Time type --- assert/assertions.go | 29 +++++++++++++++++------------ assert/assertions_test.go | 6 ++++++ 2 files changed, 23 insertions(+), 12 deletions(-) diff --git a/assert/assertions.go b/assert/assertions.go index 719164e7e..782c8e5ce 100644 --- a/assert/assertions.go +++ b/assert/assertions.go @@ -59,20 +59,25 @@ func ObjectsAreEqual(expected, actual interface{}) bool { if expected == nil || actual == nil { return expected == actual } - - exp, ok := expected.([]byte) - if !ok { + switch exp := expected.(type) { + case []byte: + act, ok := actual.([]byte) + if !ok { + return false + } + if exp == nil || act == nil { + return exp == nil && act == nil + } + return bytes.Equal(exp, act) + case time.Time: + act, ok := actual.(time.Time) + if !ok { + return false + } + return exp.Equal(act) + default: return reflect.DeepEqual(expected, actual) } - - act, ok := actual.([]byte) - if !ok { - return false - } - if exp == nil || act == nil { - return exp == nil && act == nil - } - return bytes.Equal(exp, act) } // copyExportedFields iterates downward through nested data structures and creates a copy diff --git a/assert/assertions_test.go b/assert/assertions_test.go index 40e372015..0595f212f 100644 --- a/assert/assertions_test.go +++ b/assert/assertions_test.go @@ -148,6 +148,12 @@ func TestObjectsAreEqual(t *testing.T) { t.Fail() } + tm := time.Now() + tz := tm.In(time.Local) + if !ObjectsAreEqualValues(tm, tz) { + t.Error("ObjectsAreEqualValues should return true for time.Time objects with different time zones") + } + } type Nested struct {