From 8c789af003595eba63f691757593c6a2015935f6 Mon Sep 17 00:00:00 2001 From: aoright <102943475+aoright@users.noreply.github.com> Date: Thu, 10 Sep 2026 10:26:44 +0800 Subject: [PATCH] fix(assert): check slice lengths in InDeltaSlice and fix argument ordering Signed-off-by: aoright <102943475+aoright@users.noreply.github.com> --- assert/assertions.go | 8 ++++++-- assert/assertions_test.go | 2 ++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/assert/assertions.go b/assert/assertions.go index 166f63726..1ea3cdba0 100644 --- a/assert/assertions.go +++ b/assert/assertions.go @@ -1497,8 +1497,12 @@ func InDeltaSlice(t TestingT, expected, actual interface{}, delta float64, msgAn actualSlice := reflect.ValueOf(actual) expectedSlice := reflect.ValueOf(expected) - for i := 0; i < actualSlice.Len(); i++ { - result := InDelta(t, actualSlice.Index(i).Interface(), expectedSlice.Index(i).Interface(), delta, msgAndArgs...) + if actualSlice.Len() != expectedSlice.Len() { + return Fail(t, fmt.Sprintf("Lengths of slices must be equal: expected %d, got %d", expectedSlice.Len(), actualSlice.Len()), msgAndArgs...) + } + + for i := 0; i < expectedSlice.Len(); i++ { + result := InDelta(t, expectedSlice.Index(i).Interface(), actualSlice.Index(i).Interface(), delta, msgAndArgs...) if !result { return result } diff --git a/assert/assertions_test.go b/assert/assertions_test.go index 11642e096..38f37d4f0 100644 --- a/assert/assertions_test.go +++ b/assert/assertions_test.go @@ -2360,6 +2360,8 @@ func TestInDeltaSlice(t *testing.T) { 0.1), "{1, NaN, 2} is not element-wise close to {0, NaN, 3} in delta=0.1") False(t, InDeltaSlice(mockT, "", nil, 1), "Expected non numeral slices to fail") + False(t, InDeltaSlice(mockT, []float64{1.0, 2.0, 3.0}, []float64{1.0, 2.0}, 0.1), "Expected different length slices to fail") + False(t, InDeltaSlice(mockT, []float64{1.0, 2.0}, []float64{1.0, 2.0, 3.0}, 0.1), "Expected different length slices to fail") } func TestInDeltaMapValues(t *testing.T) {