Explicit error if the cwd does not exist

Previously was raised as a CLINotFoundError
This commit is contained in:
Romain Gehrig 2025-06-26 12:09:25 +02:00
parent adf115fe6b
commit d336a22ab4
No known key found for this signature in database
2 changed files with 23 additions and 0 deletions

View file

@ -136,6 +136,11 @@ class SubprocessCLITransport(Transport):
self._stderr_stream = TextReceiveStream(self._process.stderr) self._stderr_stream = TextReceiveStream(self._process.stderr)
except FileNotFoundError as e: except FileNotFoundError as e:
# Check if the error comes from the working directory or the CLI
if self._cwd and not Path(self._cwd).exists():
raise CLIConnectionError(
f"Working directory does not exist: {self._cwd}"
) from e
raise CLINotFoundError(f"Claude Code not found at: {self._cli_path}") from e raise CLINotFoundError(f"Claude Code not found at: {self._cli_path}") from e
except Exception as e: except Exception as e:
raise CLIConnectionError(f"Failed to start Claude Code: {e}") from e raise CLIConnectionError(f"Failed to start Claude Code: {e}") from e

View file

@ -132,3 +132,21 @@ class TestSubprocessCLITransport:
# So we just verify the transport can be created and basic structure is correct # So we just verify the transport can be created and basic structure is correct
assert transport._prompt == "test" assert transport._prompt == "test"
assert transport._cli_path == "/usr/bin/claude" assert transport._cli_path == "/usr/bin/claude"
def test_connect_with_nonexistent_cwd(self):
"""Test that connect raises CLIConnectionError when cwd doesn't exist."""
from claude_code_sdk._errors import CLIConnectionError
async def _test():
transport = SubprocessCLITransport(
prompt="test",
options=ClaudeCodeOptions(cwd="/this/directory/does/not/exist"),
cli_path="/usr/bin/claude",
)
with pytest.raises(CLIConnectionError) as exc_info:
await transport.connect()
assert "/this/directory/does/not/exist" in str(exc_info.value)
anyio.run(_test)