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()