From aa0073a87d854323c2fe8954b4bad324609a5d78 Mon Sep 17 00:00:00 2001 From: Deepak kudi Date: Sat, 23 May 2026 12:48:32 +0530 Subject: [PATCH 1/2] Fix InDeltaSlice length mismatch handling --- assert/assertions.go | 4 ++++ assert/assertions_test.go | 10 ++++++++++ 2 files changed, 14 insertions(+) diff --git a/assert/assertions.go b/assert/assertions.go index 1419e4776..5aa3c338e 100644 --- a/assert/assertions.go +++ b/assert/assertions.go @@ -1497,6 +1497,10 @@ func InDeltaSlice(t TestingT, expected, actual interface{}, delta float64, msgAn actualSlice := reflect.ValueOf(actual) expectedSlice := reflect.ValueOf(expected) + if actualSlice.Len() != expectedSlice.Len() { + return Fail(t, "Arguments must have the same number of elements", msgAndArgs...) + } + for i := 0; i < actualSlice.Len(); i++ { result := InDelta(t, actualSlice.Index(i).Interface(), expectedSlice.Index(i).Interface(), delta, msgAndArgs...) if !result { diff --git a/assert/assertions_test.go b/assert/assertions_test.go index 11642e096..58b82f789 100644 --- a/assert/assertions_test.go +++ b/assert/assertions_test.go @@ -2359,6 +2359,16 @@ func TestInDeltaSlice(t *testing.T) { []float64{0, math.NaN(), 3}, 0.1), "{1, NaN, 2} is not element-wise close to {0, NaN, 3} in delta=0.1") + False(t, InDeltaSlice(mockT, + []float64{1, 2}, + []float64{1}, + 0.1), "Expected slices with extra expected values to fail") + + False(t, InDeltaSlice(mockT, + []float64{1}, + []float64{1, 2}, + 0.1), "Expected slices with extra actual values to fail") + False(t, InDeltaSlice(mockT, "", nil, 1), "Expected non numeral slices to fail") } From f402eee28abe02e8f2d3b084e860fe2da53c1ff5 Mon Sep 17 00:00:00 2001 From: Deepak kudi Date: Sun, 24 May 2026 18:22:54 +0530 Subject: [PATCH 2/2] Fix InDeltaSlice type validation --- assert/assertions.go | 22 ++++++++++++---------- assert/assertions_test.go | 5 +++++ 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/assert/assertions.go b/assert/assertions.go index 5aa3c338e..2206305ad 100644 --- a/assert/assertions.go +++ b/assert/assertions.go @@ -1488,23 +1488,25 @@ func InDeltaSlice(t TestingT, expected, actual interface{}, delta float64, msgAn if h, ok := t.(tHelper); ok { h.Helper() } - if expected == nil || actual == nil || - reflect.TypeOf(actual).Kind() != reflect.Slice || - reflect.TypeOf(expected).Kind() != reflect.Slice { + if expected == nil || actual == nil { return Fail(t, "Parameters must be slice", msgAndArgs...) } - actualSlice := reflect.ValueOf(actual) expectedSlice := reflect.ValueOf(expected) + actualSlice := reflect.ValueOf(actual) - if actualSlice.Len() != expectedSlice.Len() { - return Fail(t, "Arguments must have the same number of elements", msgAndArgs...) + if expectedSlice.Type().Kind() != reflect.Slice { + return Fail(t, "Expected value must be slice", msgAndArgs...) } - for i := 0; i < actualSlice.Len(); i++ { - result := InDelta(t, actualSlice.Index(i).Interface(), expectedSlice.Index(i).Interface(), delta, msgAndArgs...) - if !result { - return result + expectedLen := expectedSlice.Len() + if !IsType(t, expected, actual) || !Len(t, actual, expectedLen) { + return false + } + + for i := 0; i < expectedLen; i++ { + if !InDelta(t, expectedSlice.Index(i).Interface(), actualSlice.Index(i).Interface(), delta, "at index %d", i) { + return false } } diff --git a/assert/assertions_test.go b/assert/assertions_test.go index 58b82f789..653912a31 100644 --- a/assert/assertions_test.go +++ b/assert/assertions_test.go @@ -2369,6 +2369,11 @@ func TestInDeltaSlice(t *testing.T) { []float64{1, 2}, 0.1), "Expected slices with extra actual values to fail") + False(t, InDeltaSlice(mockT, + []float64{1}, + []int{1}, + 0.1), "Expected slices with different types to fail") + False(t, InDeltaSlice(mockT, "", nil, 1), "Expected non numeral slices to fail") }