File size: 4,812 Bytes
d26280a |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 |
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()
|