Skip to content

Commit bf8f228

Browse files
authored
only top level dockerfile (#364)
* only top level dockerfile * move to bottom
1 parent a710578 commit bf8f228

File tree

2 files changed

+34
-6
lines changed

2 files changed

+34
-6
lines changed

eval_protocol/cli_commands/local_test.py

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,11 @@
99

1010

1111
def _find_dockerfiles(root: str) -> List[str]:
12-
skip_dirs = {".venv", "venv", "node_modules", "dist", "build", "__pycache__", ".git", "vendor"}
12+
"""Return Dockerfiles in the project root only (no recursive search)."""
1313
dockerfiles: List[str] = []
14-
for dirpath, dirnames, filenames in os.walk(root):
15-
dirnames[:] = [d for d in dirnames if d not in skip_dirs and not d.startswith(".")]
16-
for name in filenames:
17-
if name == "Dockerfile":
18-
dockerfiles.append(os.path.join(dirpath, name))
14+
root_dockerfile = os.path.join(root, "Dockerfile")
15+
if os.path.isfile(root_dockerfile):
16+
dockerfiles.append(root_dockerfile)
1917
return dockerfiles
2018

2119

tests/test_cli_local_test.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -253,3 +253,33 @@ def _fake_host(target: str) -> int:
253253
# Expect project-relative path plus selector
254254
rel = os.path.relpath(str(test_file), str(project))
255255
assert captured["target"] == f"{rel}::test_dummy"
256+
257+
258+
def test_find_dockerfiles_top_level_only(tmp_path, monkeypatch):
259+
# Project root with both top-level and nested Dockerfiles – only top-level should be returned.
260+
project = tmp_path / "proj"
261+
project.mkdir()
262+
top_level = project / "Dockerfile"
263+
top_level.write_text("FROM python:3.11-slim\n", encoding="utf-8")
264+
nested_dir = project / "nested"
265+
nested_dir.mkdir()
266+
(nested_dir / "Dockerfile").write_text("FROM python:3.11-slim\n", encoding="utf-8")
267+
268+
from eval_protocol.cli_commands import local_test as lt
269+
270+
dockerfiles = lt._find_dockerfiles(str(project))
271+
assert dockerfiles == [str(top_level)]
272+
273+
274+
def test_find_dockerfiles_ignores_nested_only(tmp_path, monkeypatch):
275+
# Project root without top-level Dockerfile but with nested ones – should return empty.
276+
project = tmp_path / "proj"
277+
project.mkdir()
278+
nested_dir = project / "nested"
279+
nested_dir.mkdir()
280+
(nested_dir / "Dockerfile").write_text("FROM python:3.11-slim\n", encoding="utf-8")
281+
282+
from eval_protocol.cli_commands import local_test as lt
283+
284+
dockerfiles = lt._find_dockerfiles(str(project))
285+
assert dockerfiles == []

0 commit comments

Comments
 (0)