From fbe288a2824cfcaf589c059ff180c2f145bb3db8 Mon Sep 17 00:00:00 2001 From: carole-lavillonniere Date: Mon, 31 Aug 2026 11:43:22 +0200 Subject: [PATCH] fix(test): match xrayErrorCause by reflected type, not type name Go 1.27 makes encoding/json's RawMessage an alias for jsontext.Value, so the runtime type name is now "jsontext.Value". testify's AnythingOfType matches on that name string, so the three SendInvokeFinishedEvent expectations stopped matching and the mock panicked on an unexpected call: Diff: 1: FAIL: type json.RawMessage != type Value - (jsontext.Value=null) Switch to mock.IsType, which resolves the type through reflection and so matches whether or not the alias is in play. This has broken TestRuntimeErrorFailure_ErrorWhileError and left the localstack branch red since the go directive bump to 1.27.0 in #122. --- .../lambda-managed-instances/invoke/running_invoke_test.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/internal/lambda-managed-instances/invoke/running_invoke_test.go b/internal/lambda-managed-instances/invoke/running_invoke_test.go index 951f650e..e077b0c2 100644 --- a/internal/lambda-managed-instances/invoke/running_invoke_test.go +++ b/internal/lambda-managed-instances/invoke/running_invoke_test.go @@ -99,7 +99,7 @@ func mockMetricsBeforeResponse(mocks *runningInvokeMocks) { mocks.metrics.On("TriggerStartRequest") mocks.metrics.On("SendInvokeStartEvent", mock.AnythingOfType("*interop.TracingCtx")).Return(nil) mocks.metrics.On("TriggerSentRequest", mock.AnythingOfType("int64"), mock.AnythingOfType("time.Duration"), mock.AnythingOfType("time.Duration")).Return() - mocks.metrics.On("SendInvokeFinishedEvent", mock.AnythingOfType("*interop.TracingCtx"), mock.AnythingOfType("json.RawMessage")).Return(nil) + mocks.metrics.On("SendInvokeFinishedEvent", mock.AnythingOfType("*interop.TracingCtx"), mock.IsType(json.RawMessage(nil))).Return(nil) } func checkRunningInvokeMockExpectations(t *testing.T, mocks *runningInvokeMocks) { @@ -248,7 +248,7 @@ func TestRuntimeErrorFailure_SendInvokeToRuntime_Error(t *testing.T) { mocks.metrics.On("TriggerStartRequest") mocks.metrics.On("SendInvokeStartEvent", mock.AnythingOfType("*interop.TracingCtx")).Return(nil) mocks.metrics.On("TriggerSentResponse", false, err, mock.Anything, 0).Return() - mocks.metrics.On("SendInvokeFinishedEvent", mock.AnythingOfType("*interop.TracingCtx"), mock.AnythingOfType("json.RawMessage")).Return(nil) + mocks.metrics.On("SendInvokeFinishedEvent", mock.AnythingOfType("*interop.TracingCtx"), mock.IsType(json.RawMessage(nil))).Return(nil) invokeErr := runInvoke.RunInvokeAndSendResult(mocks.ctx, &mocks.staticData, &mocks.eaInvokeRequest, &mocks.metrics) assert.Error(t, invokeErr) @@ -280,7 +280,7 @@ func TestRuntimeErrorFailure_SendInvokeToRuntime_Timeout(t *testing.T) { mocks.metrics.On("TriggerStartRequest") mocks.metrics.On("SendInvokeStartEvent", mock.AnythingOfType("*interop.TracingCtx")).Return(nil) mocks.metrics.On("TriggerSentResponse", false, err, mock.Anything, 0).Return() - mocks.metrics.On("SendInvokeFinishedEvent", mock.AnythingOfType("*interop.TracingCtx"), mock.AnythingOfType("json.RawMessage")).Return(nil) + mocks.metrics.On("SendInvokeFinishedEvent", mock.AnythingOfType("*interop.TracingCtx"), mock.IsType(json.RawMessage(nil))).Return(nil) invokeErr := runInvoke.RunInvokeAndSendResult(mocks.ctx, &mocks.staticData, &mocks.eaInvokeRequest, &mocks.metrics) assert.Error(t, invokeErr)