Skip to content

Commit

Permalink
fix: Nonetype error from command_name.startswith() (#5079)
Browse files Browse the repository at this point in the history
Co-authored-by: lc0rp <2609411+lc0rp@users.noreply.github.com>
Co-authored-by: James Collins <collijk@uw.edu>
  • Loading branch information
3 people authored Aug 1, 2023
1 parent 3651d22 commit ad18f77
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 16 deletions.
34 changes: 18 additions & 16 deletions autogpt/app/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -343,23 +343,25 @@ def update_user(
print_assistant_thoughts(ai_config.ai_name, assistant_reply_dict, config)

if command_name is not None:
if config.speak_mode:
say_text(f"I want to execute {command_name}", config)
if command_name.lower().startswith("error"):
logger.typewriter_log(
"ERROR: ",
Fore.RED,
f"The Agent failed to select an action. "
f"Error message: {command_name}",
)
else:
if config.speak_mode:
say_text(f"I want to execute {command_name}", config)

# First log new-line so user can differentiate sections better in console
logger.typewriter_log("\n")
logger.typewriter_log(
"NEXT ACTION: ",
Fore.CYAN,
f"COMMAND = {Fore.CYAN}{remove_ansi_escape(command_name)}{Style.RESET_ALL} "
f"ARGUMENTS = {Fore.CYAN}{command_args}{Style.RESET_ALL}",
)
elif command_name.lower().startswith("error"):
logger.typewriter_log(
"ERROR: ",
Fore.RED,
f"The Agent failed to select an action. " f"Error message: {command_name}",
)
# First log new-line so user can differentiate sections better in console
logger.typewriter_log("\n")
logger.typewriter_log(
"NEXT ACTION: ",
Fore.CYAN,
f"COMMAND = {Fore.CYAN}{remove_ansi_escape(command_name)}{Style.RESET_ALL} "
f"ARGUMENTS = {Fore.CYAN}{command_args}{Style.RESET_ALL}",
)
else:
logger.typewriter_log(
"NO ACTION SELECTED: ",
Expand Down
33 changes: 33 additions & 0 deletions tests/integration/test_update_user.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
from unittest.mock import MagicMock, patch

from colorama import Fore

from autogpt.app.main import update_user


def test_update_user_command_name_is_none() -> None:
# Mock necessary objects
config = MagicMock()
ai_config = MagicMock()
assistant_reply_dict = MagicMock()

# Mock print_assistant_thoughts and logger.typewriter_log
with patch(
"autogpt.app.main.print_assistant_thoughts"
) as mock_print_assistant_thoughts, patch(
"autogpt.app.main.logger.typewriter_log"
) as mock_logger_typewriter_log:
# Test the update_user function with None command_name
update_user(config, ai_config, None, None, assistant_reply_dict)

# Check that print_assistant_thoughts was called once
mock_print_assistant_thoughts.assert_called_once_with(
ai_config.ai_name, assistant_reply_dict, config
)

# Check that logger.typewriter_log was called once with expected arguments
mock_logger_typewriter_log.assert_called_once_with(
"NO ACTION SELECTED: ",
Fore.RED,
f"The Agent failed to select an action.",
)

0 comments on commit ad18f77

Please sign in to comment.