NahFam13's picture
z1
d26280a verified
import os
import tempfile
import pytest
from gpt_engineer.applications.cli.cli_agent import CliAgent
from gpt_engineer.core.default.disk_execution_env import DiskExecutionEnv
from gpt_engineer.core.default.disk_memory import DiskMemory
# from gpt_engineer.core.default.git_version_manager import GitVersionManager
from gpt_engineer.core.default.paths import ENTRYPOINT_FILE, memory_path
from gpt_engineer.core.files_dict import FilesDict
from gpt_engineer.tools.custom_steps import clarified_gen, lite_gen
from tests.caching_ai import CachingAI
def test_init_standard_config(monkeypatch):
monkeypatch.setattr("builtins.input", lambda _: "y")
temp_dir = tempfile.mkdtemp()
memory = DiskMemory(memory_path(temp_dir))
execution_env = DiskExecutionEnv()
cli_agent = CliAgent.with_default_config(memory, execution_env, ai=CachingAI())
outfile = "output.txt"
os.path.join(temp_dir, outfile)
code = cli_agent.init(
f"Make a program that prints 'Hello World!' to a file called '{outfile}'"
)
env = DiskExecutionEnv()
env.upload(code).run(f"bash {ENTRYPOINT_FILE}")
code = env.download()
assert outfile in code
assert code[outfile] == "Hello World!"
def test_init_lite_config(monkeypatch):
monkeypatch.setattr("builtins.input", lambda _: "y")
temp_dir = tempfile.mkdtemp()
memory = DiskMemory(memory_path(temp_dir))
# version_manager = GitVersionManager(temp_dir)
execution_env = DiskExecutionEnv()
cli_agent = CliAgent.with_default_config(
memory, execution_env, ai=CachingAI(), code_gen_fn=lite_gen
)
outfile = "output.txt"
os.path.join(temp_dir, outfile)
code = cli_agent.init(
f"Make a program that prints 'Hello World!' to a file called '{outfile}'"
)
env = DiskExecutionEnv()
env.upload(code).run(f"bash {ENTRYPOINT_FILE}")
code = env.download()
assert outfile in code
assert code[outfile].strip() == "Hello World!"
def test_init_clarified_gen_config(monkeypatch):
monkeypatch.setattr("builtins.input", lambda _: "y")
temp_dir = tempfile.mkdtemp()
memory = DiskMemory(memory_path(temp_dir))
execution_env = DiskExecutionEnv()
cli_agent = CliAgent.with_default_config(
memory, execution_env, ai=CachingAI(), code_gen_fn=clarified_gen
)
outfile = "output.txt"
code = cli_agent.init(
f"Make a program that prints 'Hello World!' to a file called '{outfile} either using python or javascript'"
)
env = DiskExecutionEnv()
env.upload(code).run(f"bash {ENTRYPOINT_FILE}")
code = env.download()
assert outfile in code
assert code[outfile].strip() == "Hello World!"
# def test_init_self_heal_config(monkeypatch):
# monkeypatch.setattr("builtins.input", lambda _: "y")
# temp_dir = tempfile.mkdtemp()
# memory = DiskMemory(memory_path(temp_dir))
# execution_env = DiskExecutionEnv()
# cli_agent = CliAgent.with_default_config(
# memory, execution_env, ai=CachingAI(), process_code_fn=self_heal
# )
# outfile = "output.txt"
# file_path = os.path.join(temp_dir, outfile)
# code = cli_agent.init(
# f"Make a program that prints 'Hello World!' to a file called '{outfile}'. Make an intentional mistake in the code causing a runtime error"
# )
# env = DiskExecutionEnv()
# env.upload(code).run(f"bash {ENTRYPOINT_FILE}")
# code = env.download()
#
# assert outfile in code
# assert code[outfile].strip() == "Hello World!"
def test_improve_standard_config(monkeypatch):
monkeypatch.setattr("builtins.input", lambda _: "y")
temp_dir = tempfile.mkdtemp()
code = FilesDict(
{
"main.py": "def write_hello_world_to_file(filename):\n \"\"\"\n Writes 'Hello World!' to the specified file.\n \n :param filename: The name of the file to write to.\n \"\"\"\n with open(filename, 'w') as file:\n file.write('Hello World!')\n\nif __name__ == \"__main__\":\n output_filename = 'output.txt'\n write_hello_world_to_file(output_filename)",
"requirements.txt": "# No dependencies required",
"run.sh": "python3 main.py\n",
}
)
memory = DiskMemory(memory_path(temp_dir))
# version_manager = GitVersionManager(temp_dir)
execution_env = DiskExecutionEnv()
cli_agent = CliAgent.with_default_config(memory, execution_env, ai=CachingAI())
code = cli_agent.improve(
code,
"Change the program so that it prints '!dlroW olleH' instead of 'Hello World!'",
)
env = DiskExecutionEnv()
env.upload(code).run(f"bash {ENTRYPOINT_FILE}")
code = env.download()
outfile = "output.txt"
assert outfile in code
assert code[outfile] == "!dlroW olleH"
if __name__ == "__main__":
pytest.main()