Add tests

This commit is contained in:
Tat Dat Duong
2025-04-17 22:21:23 +02:00
parent 5a200cd89e
commit d5f73fe37b
2 changed files with 42 additions and 6 deletions
+7 -6
View File
@@ -1048,6 +1048,8 @@ def python_config_to_docker(
else ""
)
docker_tag = config.get("_INTERNAL_docker_tag") or config["python_version"]
# collect dependencies
pypi_deps = [dep for dep in config["dependencies"] if not dep.startswith(".")]
local_deps = _assemble_local_deps(config_path, config)
@@ -1168,7 +1170,7 @@ ADD {relpath} /deps/{name}
)
docker_file_contents = [
f"FROM {base_image}:{base_docker_tag or config['python_version']}",
f"FROM {base_image}:{docker_tag}",
"",
os.linesep.join(config["dockerfile_lines"]),
"",
@@ -1203,10 +1205,10 @@ def node_config_to_docker(
config_path: pathlib.Path,
config: Config,
base_image: str,
base_docker_tag: Optional[str] = None,
) -> tuple[str, dict[str, str]]:
faux_path = f"/deps/{config_path.parent.name}"
install_cmd = _get_node_pm_install_cmd(config_path, config)
docker_tag = config.get("_INTERNAL_docker_tag") or config["node_version"]
env_vars: list[str] = []
@@ -1233,7 +1235,7 @@ def node_config_to_docker(
env_vars.append(f"ENV LANGSERVE_GRAPHS='{json.dumps(config['graphs'])}'")
docker_file_contents = [
f"FROM {base_image}:{base_docker_tag or config['node_version']}",
f"FROM {base_image}:{docker_tag}",
"",
os.linesep.join(config["dockerfile_lines"]),
"",
@@ -1275,14 +1277,13 @@ def config_to_docker(
config_path: pathlib.Path,
config: Config,
base_image: Optional[str] = None,
base_docker_tag: Optional[str] = None,
) -> tuple[str, dict[str, str]]:
base_image = base_image or default_base_image(config)
if config.get("node_version") and not config.get("python_version"):
return node_config_to_docker(config_path, config, base_image, base_docker_tag)
return node_config_to_docker(config_path, config, base_image)
return python_config_to_docker(config_path, config, base_image, base_docker_tag)
return python_config_to_docker(config_path, config, base_image)
def config_to_compose(
+35
View File
@@ -29,6 +29,7 @@ def test_validate_config():
}
actual_config = validate_config(expected_config)
expected_config = {
"_INTERNAL_docker_tag": None,
"python_version": "3.11",
"node_version": None,
"pip_config_file": None,
@@ -47,6 +48,7 @@ def test_validate_config():
# full config
env = ".env"
expected_config = {
"_INTERNAL_docker_tag": None,
"python_version": "3.12",
"node_version": None,
"pip_config_file": "pipconfig.txt",
@@ -567,6 +569,39 @@ RUN (test ! -f /api/langgraph_api/js/build.mts && echo "Prebuild script not foun
assert additional_contexts == {}
def test_config_to_docker_nodejs_internal_docker_tag():
graphs = {"agent": "./graphs/agent.js:graph"}
actual_docker_stdin, additional_contexts = config_to_docker(
PATH_TO_CONFIG,
validate_config(
{
"node_version": "20",
"graphs": graphs,
"dockerfile_lines": ["ARG meow", "ARG foo"],
"auth": {"path": "./graphs/auth.mts:auth"},
"ui": {"agent": "./graphs/agent.ui.jsx"},
"ui_config": {"shared": ["nuqs"]},
"_INTERNAL_docker_tag": "my-tag",
}
),
"langchain/langgraphjs-api",
)
expected_docker_stdin = """FROM langchain/langgraphjs-api:my-tag
ARG meow
ARG foo
ADD . /deps/unit_tests
RUN cd /deps/unit_tests && npm i
ENV LANGGRAPH_AUTH='{"path": "./graphs/auth.mts:auth"}'
ENV LANGGRAPH_UI='{"agent": "./graphs/agent.ui.jsx"}'
ENV LANGGRAPH_UI_CONFIG='{"shared": ["nuqs"]}'
ENV LANGSERVE_GRAPHS='{"agent": "./graphs/agent.js:graph"}'
WORKDIR /deps/unit_tests
RUN (test ! -f /api/langgraph_api/js/build.mts && echo "Prebuild script not found, skipping") || tsx /api/langgraph_api/js/build.mts"""
assert clean_empty_lines(actual_docker_stdin) == expected_docker_stdin
assert additional_contexts == {}
def test_config_to_docker_gen_ui_python():
graphs = {"agent": "./agent.py:graph"}
actual_docker_stdin, additional_contexts = config_to_docker(