60 lines
2.0 KiB
Python
60 lines
2.0 KiB
Python
"""Smoke test for the autogpt package."""
|
|
import os
|
|
import subprocess
|
|
import sys
|
|
|
|
import pytest
|
|
|
|
from autogpt.commands.file_operations import delete_file, read_file
|
|
|
|
|
|
@pytest.mark.integration_test
|
|
def test_write_file() -> None:
|
|
"""
|
|
Test case to check if the write_file command can successfully write 'Hello World' to a file
|
|
named 'hello_world.txt'.
|
|
|
|
Read the current ai_settings.yaml file and store its content.
|
|
"""
|
|
env_vars = {"MEMORY_BACKEND": "no_memory", "TEMPERATURE": "0"}
|
|
ai_settings = None
|
|
if os.path.exists("ai_settings.yaml"):
|
|
with open("ai_settings.yaml", "r") as f:
|
|
ai_settings = f.read()
|
|
os.remove("ai_settings.yaml")
|
|
|
|
try:
|
|
if os.path.exists("hello_world.txt"):
|
|
# Clean up any existing 'hello_world.txt' file before testing.
|
|
delete_file("hello_world.txt")
|
|
# Prepare input data for the test.
|
|
input_data = """write_file-GPT
|
|
an AI designed to use the write_file command to write 'Hello World' into a file named "hello_world.txt" and then use the task_complete command to complete the task.
|
|
Use the write_file command to write 'Hello World' into a file named "hello_world.txt".
|
|
Use the task_complete command to complete the task.
|
|
Do not use any other commands.
|
|
|
|
y -5
|
|
EOF"""
|
|
command = f"{sys.executable} -m autogpt"
|
|
|
|
# Execute the script with the input data.
|
|
process = subprocess.Popen(
|
|
command,
|
|
stdin=subprocess.PIPE,
|
|
shell=True,
|
|
env={**os.environ, **env_vars},
|
|
)
|
|
process.communicate(input_data.encode())
|
|
|
|
# Read the content of the 'hello_world.txt' file created during the test.
|
|
content = read_file("hello_world.txt")
|
|
finally:
|
|
if ai_settings:
|
|
# Restore the original ai_settings.yaml file.
|
|
with open("ai_settings.yaml", "w") as f:
|
|
f.write(ai_settings)
|
|
|
|
# Check if the content of the 'hello_world.txt' file is equal to 'Hello World'.
|
|
assert content == "Hello World", f"Expected 'Hello World', got {content}"
|