Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion builders/server/runtime/runner.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
RETRY_INITIAL_DELAY = 2.0 # seconds
RETRY_BACKOFF_FACTOR = 2.0

WORKER_PATH = Path(__file__).parent / "isolated_worker.py"
WORKER_PATH = Path(__file__).parent.parent / "workers" / "subprocess_worker.py"


def run_builder(
Expand Down
Empty file.
Original file line number Diff line number Diff line change
Expand Up @@ -10,23 +10,23 @@
import pytest

WORKER_PATH = (
Path(__file__).resolve().parent.parent.parent / "runtime" / "isolated_worker.py"
Path(__file__).resolve().parent.parent.parent / "workers" / "subprocess_worker.py"
)
SERVER_DIR = Path(__file__).resolve().parent.parent.parent


@pytest.fixture(scope="module")
def worker():
"""Import isolated_worker as a module for direct function testing."""
spec = importlib.util.spec_from_file_location("isolated_worker", WORKER_PATH)
"""Import subprocess_worker as a module for direct function testing."""
spec = importlib.util.spec_from_file_location("subprocess_worker", WORKER_PATH)
assert spec is not None and spec.loader is not None
mod = importlib.util.module_from_spec(spec)
spec.loader.exec_module(mod) # type: ignore[union-attr]
return mod


def test_isolated_worker_only_imports_stdlib():
"""All imports in isolated_worker.py must be stdlib modules."""
def test_subprocess_worker_only_imports_stdlib():
"""All imports in subprocess_worker.py must be stdlib modules."""
source = WORKER_PATH.read_text()
tree = ast.parse(source)
non_stdlib = []
Expand All @@ -43,23 +43,23 @@ def test_isolated_worker_only_imports_stdlib():
assert non_stdlib == [], f"non-stdlib imports found: {non_stdlib}"


def test_no_codebase_imports_isolated_worker():
"""No server code imports from isolated_worker."""
def test_no_codebase_imports_subprocess_worker():
"""No server code imports from subprocess_worker."""
for py_file in SERVER_DIR.rglob("*.py"):
# skip tests and the worker itself
if "tests" in py_file.parts or py_file.name == "isolated_worker.py":
if "tests" in py_file.parts or py_file.name == "subprocess_worker.py":
continue
source = py_file.read_text()
tree = ast.parse(source)
for node in ast.walk(tree):
if isinstance(node, ast.ImportFrom) and node.module is not None:
assert "isolated_worker" not in node.module, (
f"{py_file} imports from isolated_worker"
assert "subprocess_worker" not in node.module, (
f"{py_file} imports from subprocess_worker"
)
if isinstance(node, ast.Import):
for alias in node.names:
assert "isolated_worker" not in alias.name, (
f"{py_file} imports isolated_worker"
assert "subprocess_worker" not in alias.name, (
f"{py_file} imports subprocess_worker"
)


Expand Down
Empty file.
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
"""
###########################################################################
# ISOLATED WORKER -- runs inside builder subprocesses #
# SUBPROCESS WORKER -- runs inside builder subprocesses #
# #
# This file is executed by a DIFFERENT Python interpreter that may be #
# inside a per-builder virtual environment. It MUST NOT import anything #
Expand Down
Loading