mirror of
https://github.com/aljazceru/Auto-GPT.git
synced 2025-12-18 14:34:23 +01:00
61 lines
2.1 KiB
Python
61 lines
2.1 KiB
Python
import os
|
|
import subprocess
|
|
import sys
|
|
import unittest
|
|
|
|
from autogpt.file_operations import delete_file, read_file
|
|
|
|
env_vars = {
|
|
'MEMORY_BACKEND': 'no_memory',
|
|
'TEMPERATURE': "0"
|
|
}
|
|
|
|
|
|
class TestCommands(unittest.TestCase):
|
|
|
|
def test_write_file(self):
|
|
# 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.
|
|
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'.
|
|
self.assertEqual(content, 'Hello World', f"Expected 'Hello World', got {content}")
|
|
|
|
|
|
# Run the test case.
|
|
if __name__ == '__main__':
|
|
unittest.main()
|