diff --git a/scripts/release.py b/scripts/release.py index 214c0702f9..eecee8a93e 100755 --- a/scripts/release.py +++ b/scripts/release.py @@ -312,6 +312,7 @@ AUTHOR_MAP = { "261797239+lumenradley@users.noreply.github.com": "lumenradley", "166376523+sjz-ks@users.noreply.github.com": "sjz-ks", "haileymarshall005@gmail.com": "haileymarshall", + "aniruddhaadak80@users.noreply.github.com": "aniruddhaadak80", } diff --git a/tests/tools/test_resolve_path.py b/tests/tools/test_resolve_path.py new file mode 100644 index 0000000000..beea3cc40f --- /dev/null +++ b/tests/tools/test_resolve_path.py @@ -0,0 +1,52 @@ +"""Tests for _resolve_path() — TERMINAL_CWD-aware path resolution in file_tools.""" + +import os +from pathlib import Path + +import pytest + + +class TestResolvePath: + """Verify _resolve_path respects TERMINAL_CWD for worktree isolation.""" + + def test_relative_path_uses_terminal_cwd(self, monkeypatch, tmp_path): + """Relative paths resolve against TERMINAL_CWD, not process CWD.""" + monkeypatch.setenv("TERMINAL_CWD", str(tmp_path)) + from tools.file_tools import _resolve_path + + result = _resolve_path("foo/bar.py") + assert result == (tmp_path / "foo" / "bar.py") + + def test_absolute_path_ignores_terminal_cwd(self, monkeypatch, tmp_path): + """Absolute paths are unaffected by TERMINAL_CWD.""" + monkeypatch.setenv("TERMINAL_CWD", str(tmp_path)) + from tools.file_tools import _resolve_path + + result = _resolve_path("/etc/hosts") + assert result == Path("/etc/hosts") + + def test_falls_back_to_cwd_without_terminal_cwd(self, monkeypatch): + """Without TERMINAL_CWD, falls back to os.getcwd().""" + monkeypatch.delenv("TERMINAL_CWD", raising=False) + from tools.file_tools import _resolve_path + + result = _resolve_path("some_file.txt") + assert result == Path(os.getcwd()) / "some_file.txt" + + def test_tilde_expansion(self, monkeypatch, tmp_path): + """~ is expanded before TERMINAL_CWD join (already absolute).""" + monkeypatch.setenv("TERMINAL_CWD", str(tmp_path)) + from tools.file_tools import _resolve_path + + result = _resolve_path("~/notes.txt") + # After expanduser, ~/notes.txt becomes absolute → TERMINAL_CWD ignored + assert result == Path.home() / "notes.txt" + + def test_result_is_resolved(self, monkeypatch, tmp_path): + """Output path has no '..' components.""" + monkeypatch.setenv("TERMINAL_CWD", str(tmp_path)) + from tools.file_tools import _resolve_path + + result = _resolve_path("a/../b/file.txt") + assert ".." not in str(result) + assert result == (tmp_path / "b" / "file.txt")