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