mirror of
https://github.com/Significant-Gravitas/AutoGPT.git
synced 2026-04-30 03:00:41 -04:00
Use JSON format for commands signature (#4714)
* Use JSON for command signature Signed-off-by: Merwane Hamadi <merwanehamadi@gmail.com> * Improve plugin backward compatibility (#4716) * Fixed plugin test Signed-off-by: Merwane Hamadi <merwanehamadi@gmail.com> * Fix Docker-CI Signed-off-by: Merwane Hamadi <merwanehamadi@gmail.com> * Put back commands, clean typing and signatures Signed-off-by: Merwane Hamadi <merwanehamadi@gmail.com> --------- Signed-off-by: Merwane Hamadi <merwanehamadi@gmail.com> Co-authored-by: Erik Peterson <e@eriklp.com> Co-authored-by: Luke K (pr-0f3t) <2609441+lc0rp@users.noreply.github.com>
This commit is contained in:
Submodule tests/Auto-GPT-test-cassettes updated: 427de6721c...e6033baadc
@@ -2,7 +2,12 @@ from autogpt.command_decorator import command
|
||||
|
||||
|
||||
@command(
|
||||
"function_based", "Function-based test command", "(arg1: int, arg2: str) -> str"
|
||||
"function_based",
|
||||
"Function-based test command",
|
||||
{
|
||||
"arg1": {"type": "int", "description": "arg 1", "required": True},
|
||||
"arg2": {"type": "str", "description": "arg 2", "required": True},
|
||||
},
|
||||
)
|
||||
def function_based(arg1: int, arg2: str) -> str:
|
||||
"""A function-based test command that returns a string with the two arguments separated by a dash."""
|
||||
|
||||
@@ -41,6 +41,13 @@ class TestCommand:
|
||||
name="example",
|
||||
description="Example command",
|
||||
method=self.example_command_method,
|
||||
signature={
|
||||
"prompt": {
|
||||
"type": "string",
|
||||
"description": "The prompt used to generate the image",
|
||||
"required": True,
|
||||
},
|
||||
},
|
||||
)
|
||||
result = cmd(arg1=1, arg2="test")
|
||||
assert result == "1 - test"
|
||||
|
||||
@@ -15,7 +15,6 @@ import autogpt.commands.file_operations as file_ops
|
||||
from autogpt.agent.agent import Agent
|
||||
from autogpt.memory.vector.memory_item import MemoryItem
|
||||
from autogpt.memory.vector.utils import Embedding
|
||||
from autogpt.utils import readable_file_size
|
||||
from autogpt.workspace import Workspace
|
||||
|
||||
|
||||
@@ -243,53 +242,6 @@ def test_write_file_succeeds_if_content_different(
|
||||
assert result == "File written to successfully."
|
||||
|
||||
|
||||
# Update file testing
|
||||
def test_replace_in_file_all_occurrences(test_file, test_file_path, agent: Agent):
|
||||
old_content = "This is a test file.\n we test file here\na test is needed"
|
||||
expected_content = (
|
||||
"This is a update file.\n we update file here\na update is needed"
|
||||
)
|
||||
test_file.write(old_content)
|
||||
test_file.close()
|
||||
file_ops.replace_in_file(test_file_path, "test", "update", agent=agent)
|
||||
with open(test_file_path) as f:
|
||||
new_content = f.read()
|
||||
print(new_content)
|
||||
print(expected_content)
|
||||
assert new_content == expected_content
|
||||
|
||||
|
||||
def test_replace_in_file_one_occurrence(test_file, test_file_path, agent: Agent):
|
||||
old_content = "This is a test file.\n we test file here\na test is needed"
|
||||
expected_content = "This is a test file.\n we update file here\na test is needed"
|
||||
test_file.write(old_content)
|
||||
test_file.close()
|
||||
file_ops.replace_in_file(
|
||||
test_file_path, "test", "update", agent=agent, occurrence_index=1
|
||||
)
|
||||
with open(test_file_path) as f:
|
||||
new_content = f.read()
|
||||
|
||||
assert new_content == expected_content
|
||||
|
||||
|
||||
def test_replace_in_file_multiline_old_text(test_file, test_file_path, agent: Agent):
|
||||
old_content = "This is a multi_line\ntest for testing\nhow well this function\nworks when the input\nis multi-lined"
|
||||
expected_content = "This is a multi_line\nfile. succeeded test\nis multi-lined"
|
||||
test_file.write(old_content)
|
||||
test_file.close()
|
||||
file_ops.replace_in_file(
|
||||
test_file_path,
|
||||
"\ntest for testing\nhow well this function\nworks when the input\n",
|
||||
"\nfile. succeeded test\n",
|
||||
agent=agent,
|
||||
)
|
||||
with open(test_file_path) as f:
|
||||
new_content = f.read()
|
||||
|
||||
assert new_content == expected_content
|
||||
|
||||
|
||||
def test_append_to_file(test_nested_file: Path, agent: Agent):
|
||||
append_text = "This is appended text.\n"
|
||||
file_ops.write_to_file(test_nested_file, append_text, agent=agent)
|
||||
@@ -373,26 +325,3 @@ def test_list_files(workspace: Workspace, test_directory: Path, agent: Agent):
|
||||
non_existent_file = "non_existent_file.txt"
|
||||
files = file_ops.list_files("", agent=agent)
|
||||
assert non_existent_file not in files
|
||||
|
||||
|
||||
def test_download_file(workspace: Workspace, agent: Agent):
|
||||
url = "https://github.com/Significant-Gravitas/Auto-GPT/archive/refs/tags/v0.2.2.tar.gz"
|
||||
local_name = workspace.get_path("auto-gpt.tar.gz")
|
||||
size = 365023
|
||||
readable_size = readable_file_size(size)
|
||||
assert (
|
||||
file_ops.download_file(url, local_name, agent=agent)
|
||||
== f'Successfully downloaded and locally stored file: "{local_name}"! (Size: {readable_size})'
|
||||
)
|
||||
assert os.path.isfile(local_name) is True
|
||||
assert os.path.getsize(local_name) == size
|
||||
|
||||
url = "https://github.com/Significant-Gravitas/Auto-GPT/archive/refs/tags/v0.0.0.tar.gz"
|
||||
assert "Got an HTTP Error whilst trying to download file" in file_ops.download_file(
|
||||
url, local_name, agent=agent
|
||||
)
|
||||
|
||||
url = "https://thiswebsiteiswrong.hmm/v0.0.0.tar.gz"
|
||||
assert "Failed to establish a new connection:" in file_ops.download_file(
|
||||
url, local_name, agent=agent
|
||||
)
|
||||
|
||||
@@ -30,8 +30,8 @@ def test_scan_plugins_generic(config: Config):
|
||||
plugins_config.plugins["auto_gpt_guanaco"] = PluginConfig(
|
||||
name="auto_gpt_guanaco", enabled=True
|
||||
)
|
||||
plugins_config.plugins["auto_gpt_vicuna"] = PluginConfig(
|
||||
name="auto_gptp_vicuna", enabled=True
|
||||
plugins_config.plugins["AutoGPTPVicuna"] = PluginConfig(
|
||||
name="AutoGPTPVicuna", enabled=True
|
||||
)
|
||||
result = scan_plugins(config, debug=True)
|
||||
plugin_class_names = [plugin.__class__.__name__ for plugin in result]
|
||||
|
||||
@@ -4,11 +4,7 @@ import pytest
|
||||
from googleapiclient.errors import HttpError
|
||||
|
||||
from autogpt.agent.agent import Agent
|
||||
from autogpt.commands.google_search import (
|
||||
google_official_search,
|
||||
google_search,
|
||||
safe_google_results,
|
||||
)
|
||||
from autogpt.commands.web_search import google, safe_google_results, web_search
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
@@ -45,8 +41,8 @@ def test_google_search(
|
||||
mock_ddg = mocker.Mock()
|
||||
mock_ddg.return_value = return_value
|
||||
|
||||
mocker.patch("autogpt.commands.google_search.DDGS.text", mock_ddg)
|
||||
actual_output = google_search(query, agent=agent, num_results=num_results)
|
||||
mocker.patch("autogpt.commands.web_search.DDGS.text", mock_ddg)
|
||||
actual_output = web_search(query, agent=agent, num_results=num_results)
|
||||
expected_output = safe_google_results(expected_output)
|
||||
assert actual_output == expected_output
|
||||
|
||||
@@ -88,7 +84,7 @@ def test_google_official_search(
|
||||
agent: Agent,
|
||||
):
|
||||
mock_googleapiclient.return_value = search_results
|
||||
actual_output = google_official_search(query, agent=agent, num_results=num_results)
|
||||
actual_output = google(query, agent=agent, num_results=num_results)
|
||||
assert actual_output == safe_google_results(expected_output)
|
||||
|
||||
|
||||
@@ -136,5 +132,5 @@ def test_google_official_search_errors(
|
||||
)
|
||||
|
||||
mock_googleapiclient.side_effect = error
|
||||
actual_output = google_official_search(query, agent=agent, num_results=num_results)
|
||||
actual_output = google(query, agent=agent, num_results=num_results)
|
||||
assert actual_output == safe_google_results(expected_output)
|
||||
Reference in New Issue
Block a user