Files
e2b-dev--e2b/packages/python-sdk/tests/async/template_async/test_build.py
T
2026-07-13 12:47:58 +08:00

103 lines
3.0 KiB
Python

import os
import shutil
import tempfile
import pytest
from e2b import AsyncTemplate, default_build_logger, wait_for_timeout
@pytest.fixture(scope="module")
def setup_test_folder():
test_dir = tempfile.mkdtemp(prefix="python_async_test_")
folder_path = os.path.join(test_dir, "folder")
os.makedirs(folder_path, exist_ok=True)
with open(os.path.join(folder_path, "test.txt"), "w") as f:
f.write("This is a test file.")
# Create relative symlink
symlink_path = os.path.join(folder_path, "symlink.txt")
if os.path.exists(symlink_path):
os.remove(symlink_path)
os.symlink("test.txt", symlink_path)
# Create absolute symlink
symlink2_path = os.path.join(folder_path, "symlink2.txt")
if os.path.exists(symlink2_path):
os.remove(symlink2_path)
os.symlink(os.path.join(folder_path, "test.txt"), symlink2_path)
# Create a symlink to a file that does not exist
symlink3_path = os.path.join(folder_path, "symlink3.txt")
if os.path.exists(symlink3_path):
os.remove(symlink3_path)
os.symlink("12345test.txt", symlink3_path)
yield test_dir
# Cleanup
shutil.rmtree(test_dir, ignore_errors=True)
@pytest.mark.skip_debug()
async def test_build_template(async_build, setup_test_folder):
template = (
AsyncTemplate(file_context_path=setup_test_folder)
.from_base_image()
.copy("folder/*", "folder", force_upload=True)
.run_cmd("cat folder/test.txt")
.set_workdir("/app")
.set_start_cmd("echo 'Hello, world!'", wait_for_timeout(10_000))
)
await async_build(template, skip_cache=True, on_build_logs=default_build_logger())
@pytest.mark.skip_debug()
async def test_build_template_from_base_template(async_build):
template = AsyncTemplate().from_template("base")
await async_build(template, skip_cache=True, on_build_logs=default_build_logger())
@pytest.mark.skip_debug()
async def test_build_template_with_symlinks(async_build, setup_test_folder):
template = (
AsyncTemplate(file_context_path=setup_test_folder)
.from_image("ubuntu:22.04")
.skip_cache()
.copy("folder/*", "folder", force_upload=True)
.run_cmd("cat folder/symlink.txt")
)
await async_build(template)
@pytest.mark.skip_debug()
async def test_build_template_with_resolve_symlinks(async_build, setup_test_folder):
template = (
AsyncTemplate(file_context_path=setup_test_folder)
.from_image("ubuntu:22.04")
.skip_cache()
.copy(
"folder/symlink.txt",
"folder/symlink.txt",
force_upload=True,
resolve_symlinks=True,
)
.run_cmd("cat folder/symlink.txt")
)
await async_build(template)
@pytest.mark.skip_debug()
async def test_build_template_with_skip_cache(async_build, setup_test_folder):
template = (
AsyncTemplate(file_context_path=setup_test_folder)
.skip_cache()
.from_image("ubuntu:22.04")
)
await async_build(template)