From d25bea781dd1c39786e6ce4dbb55567cda615055 Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Mon, 10 Nov 2025 15:22:50 +0000 Subject: [PATCH] fix: Resolve test failures in HTTP MCP support tests MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. Fragment filtering test: Added proper assertion for MCPToolWrapper call and verified the mock tool is returned in the result list. 2. Logger patching tests: Changed from patching instance method to patching class method to avoid Pydantic's __delattr__ restriction. This prevents AttributeError when the patch context manager tries to restore the original attribute. Co-Authored-By: João --- lib/crewai/tests/mcp/test_http_mcp_support.py | 26 ++++++++++++------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/lib/crewai/tests/mcp/test_http_mcp_support.py b/lib/crewai/tests/mcp/test_http_mcp_support.py index 81b61b9fb..f0d0bd71b 100644 --- a/lib/crewai/tests/mcp/test_http_mcp_support.py +++ b/lib/crewai/tests/mcp/test_http_mcp_support.py @@ -149,13 +149,17 @@ class TestHTTPMCPFragmentFiltering: with patch.object(agent, '_get_mcp_tool_schemas', return_value=mock_schemas): with patch('crewai.tools.mcp_tool_wrapper.MCPToolWrapper') as mock_wrapper_class: - mock_wrapper_class.return_value = MagicMock() + mock_tool = MagicMock() + mock_wrapper_class.return_value = mock_tool result = agent._get_external_mcp_tools("http://localhost:7365/mcp#specific_tool") - assert len(result) == 1 + mock_wrapper_class.assert_called_once() call_args = mock_wrapper_class.call_args assert call_args.kwargs['tool_name'] == 'specific_tool' + + assert len(result) == 1 + assert result[0] == mock_tool class TestHTTPMCPWarningLog: @@ -171,13 +175,14 @@ class TestHTTPMCPWarningLog: ) log_calls = [] - original_log = agent._logger.log + logger_class = type(agent._logger) + original_log = logger_class.log - def mock_log(level, message): + def mock_log(self, level, message): log_calls.append((level, message)) - return original_log(level, message) + return original_log(self, level, message) - with patch.object(agent._logger, 'log', side_effect=mock_log): + with patch.object(logger_class, 'log', new=mock_log): with patch.object(agent, '_get_mcp_tool_schemas', return_value={}): agent._get_external_mcp_tools("http://localhost:7365/mcp") @@ -196,13 +201,14 @@ class TestHTTPMCPWarningLog: ) log_calls = [] - original_log = agent._logger.log + logger_class = type(agent._logger) + original_log = logger_class.log - def mock_log(level, message): + def mock_log(self, level, message): log_calls.append((level, message)) - return original_log(level, message) + return original_log(self, level, message) - with patch.object(agent._logger, 'log', side_effect=mock_log): + with patch.object(logger_class, 'log', new=mock_log): with patch.object(agent, '_get_mcp_tool_schemas', return_value={}): agent._get_external_mcp_tools("https://api.example.com/mcp")