From b6155a118db2f28aef7d64dc4f499748d57c377a Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Mon, 16 Jun 2025 21:11:24 +0000 Subject: [PATCH] Address code review feedback: enhance error messages and tests MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Include model name in error messages for better context - Update all test cases to verify enhanced error messages - Add new test for error message format validation - Addresses suggestions from PR review by joaomdmoura Co-Authored-By: João --- src/crewai/utilities/converter.py | 2 +- tests/utilities/test_converter.py | 19 ++++++++++++++++--- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/crewai/utilities/converter.py b/src/crewai/utilities/converter.py index e36241808..71ff4318f 100644 --- a/src/crewai/utilities/converter.py +++ b/src/crewai/utilities/converter.py @@ -192,7 +192,7 @@ def convert_with_instructions( ) -> Union[dict, BaseModel, str]: if agent is None: Printer().print( - content="Failed to convert text into a Pydantic model: No agent available for conversion. Using raw output instead.", + content=f"Failed to convert text into a Pydantic model: No agent available for conversion. Using raw output instead. Model: {model.__name__}", color="red", ) return result diff --git a/tests/utilities/test_converter.py b/tests/utilities/test_converter.py index 84093c1a2..b05fbda30 100644 --- a/tests/utilities/test_converter.py +++ b/tests/utilities/test_converter.py @@ -610,7 +610,7 @@ def test_convert_with_instructions_none_agent(): assert output == result mock_printer.return_value.print.assert_called_once_with( - content="Failed to convert text into a Pydantic model: No agent available for conversion. Using raw output instead.", + content="Failed to convert text into a Pydantic model: No agent available for conversion. Using raw output instead. Model: SimpleModel", color="red", ) @@ -625,7 +625,7 @@ def test_handle_partial_json_with_none_agent(): assert output == result mock_printer.return_value.print.assert_called_once_with( - content="Failed to convert text into a Pydantic model: No agent available for conversion. Using raw output instead.", + content="Failed to convert text into a Pydantic model: No agent available for conversion. Using raw output instead. Model: SimpleModel", color="red", ) @@ -640,7 +640,7 @@ def test_convert_to_model_with_none_agent_and_invalid_json(): assert output == result mock_printer.return_value.print.assert_called_once_with( - content="Failed to convert text into a Pydantic model: No agent available for conversion. Using raw output instead.", + content="Failed to convert text into a Pydantic model: No agent available for conversion. Using raw output instead. Model: SimpleModel", color="red", ) @@ -657,4 +657,17 @@ def test_reproduce_issue_3017_scenario(): mock_printer.return_value.print.assert_called_once() call_args = mock_printer.return_value.print.call_args assert "Failed to convert text into a Pydantic model" in call_args[1]["content"] + assert "Model: SimpleModel" in call_args[1]["content"] assert call_args[1]["color"] == "red" + + +def test_error_message_format(): + """Test that error messages contain expected format and content.""" + with patch("crewai.utilities.converter.Printer") as mock_printer: + convert_with_instructions("test", SimpleModel, False, None) + + error_message = mock_printer.return_value.print.call_args[1]["content"] + assert "Failed to convert" in error_message + assert "No agent available" in error_message + assert "Model: SimpleModel" in error_message + assert mock_printer.return_value.print.call_args[1]["color"] == "red"