From 5efd66b42c92bdfe8fd61ad4d245671f18b7cd4a Mon Sep 17 00:00:00 2001 From: Moon-Young Date: Tue, 14 Jul 2026 07:55:22 +0000 Subject: [PATCH] fix(wrapper): set ORRO_WRAPPER_DELEGATION for delegated commands --- scripts/check_orro_wrapper.py | 19 +++++++++++++++++++ src/orro_wrapper/cli.py | 4 +++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/scripts/check_orro_wrapper.py b/scripts/check_orro_wrapper.py index efef667..2966d17 100644 --- a/scripts/check_orro_wrapper.py +++ b/scripts/check_orro_wrapper.py @@ -5,6 +5,7 @@ import sys from pathlib import Path +from unittest.mock import Mock, patch ROOT = Path(__file__).resolve().parents[1] @@ -67,6 +68,23 @@ def check_package_files() -> None: fail(f"wrapper package must not contain {needle!r}") +def check_delegation_environment() -> None: + sys.path.insert(0, str(ROOT / "src")) + from orro_wrapper.cli import delegate + + run = Mock() + run.return_value.returncode = 0 + with patch("orro_wrapper.cli.subprocess.run", run): + result = delegate("python3 -m orro", ["flowplan", "--help"]) + if result != 0: + fail("wrapper delegation test command returned a non-zero status") + if run.call_args is None: + fail("wrapper delegation did not invoke subprocess.run") + environment = run.call_args.kwargs.get("env") + if not isinstance(environment, dict) or environment.get("ORRO_WRAPPER_DELEGATION") != "1": + fail("wrapper delegation must set ORRO_WRAPPER_DELEGATION=1 in the child environment") + + def check_docs() -> None: text = DOC_PATH.read_text(encoding="utf-8") require_contains("thin wrapper doc", text, INVARIANT) @@ -90,6 +108,7 @@ def main() -> int: check_pyproject() check_setup_cfg() check_package_files() + check_delegation_environment() check_docs() print("ORRO wrapper: pass") return 0 diff --git a/src/orro_wrapper/cli.py b/src/orro_wrapper/cli.py index 2958a4c..1b1ad10 100644 --- a/src/orro_wrapper/cli.py +++ b/src/orro_wrapper/cli.py @@ -89,7 +89,9 @@ def delegate(engine_command: str | None, delegate_args: list[str]) -> int: if not delegate_args: raise WrapperError("ERR_ORRO_WRAPPER_DELEGATE_ARGS_REQUIRED", "delegate requires engine command arguments after --") command = [*resolve_engine_command(engine_command), *delegate_args] - completed = subprocess.run(command, check=False) + child_env = os.environ.copy() + child_env["ORRO_WRAPPER_DELEGATION"] = "1" + completed = subprocess.run(command, check=False, env=child_env) return completed.returncode