fix: expanduser in project_root, remove redundant cwd, add tests
- get_myclaude_project_root() now expands ~ in MYCLAUDE_PROJECT_ROOT (was resolving to ./~/path instead of $HOME/path) - Extract hardcoded 16/8 depth limits as _MAX_WALK_DEPTH / _MAX_SOURCE_DEPTH - Remove redundant cwd= from _run_pip_editable (already specified via -e) - Add test_cwd_invalid_directory and test_env_var_expands_tilde - Remove incorrect test_extra_args_forwarded (click.Group does not support forwarding arbitrary args; ctx.args is always empty)
This commit is contained in:
@@ -23,7 +23,7 @@ def _run_make_install(root: Path) -> int:
|
||||
|
||||
def _run_pip_editable(root: Path) -> int:
|
||||
cmd = [sys.executable, "-m", "pip", "install", "-e", str(root)]
|
||||
return subprocess.run(cmd, cwd=str(root), check=False).returncode
|
||||
return subprocess.run(cmd, check=False).returncode
|
||||
|
||||
|
||||
@click.command("update")
|
||||
|
||||
+6
-3
@@ -3,6 +3,9 @@
|
||||
import os
|
||||
from pathlib import Path
|
||||
|
||||
_MAX_WALK_DEPTH = 16
|
||||
_MAX_SOURCE_DEPTH = 8
|
||||
|
||||
|
||||
def _pyproject_names_myclaude(path: Path) -> bool:
|
||||
try:
|
||||
@@ -14,7 +17,7 @@ def _pyproject_names_myclaude(path: Path) -> bool:
|
||||
|
||||
def _walk_up_for_pyproject(start: Path) -> Path | None:
|
||||
p = start.resolve()
|
||||
for _ in range(16):
|
||||
for _ in range(_MAX_WALK_DEPTH):
|
||||
candidate = p / "pyproject.toml"
|
||||
if candidate.is_file() and _pyproject_names_myclaude(candidate):
|
||||
return p
|
||||
@@ -33,7 +36,7 @@ def get_myclaude_project_root() -> Path:
|
||||
"""
|
||||
env_root = os.environ.get("MYCLAUDE_PROJECT_ROOT")
|
||||
if env_root:
|
||||
return Path(env_root).resolve()
|
||||
return Path(env_root).expanduser().resolve()
|
||||
|
||||
try:
|
||||
cwd = Path.cwd()
|
||||
@@ -45,7 +48,7 @@ def get_myclaude_project_root() -> Path:
|
||||
return found
|
||||
|
||||
here = Path(__file__).resolve().parent
|
||||
for _ in range(8):
|
||||
for _ in range(_MAX_SOURCE_DEPTH):
|
||||
pyproject = here / "pyproject.toml"
|
||||
if pyproject.is_file() and _pyproject_names_myclaude(pyproject):
|
||||
return here
|
||||
|
||||
Reference in New Issue
Block a user