mirror of
https://github.com/anthropics/claude-code-sdk-python.git
synced 2025-07-07 14:45:00 +00:00
Explicit error if the cwd does not exist
Previously was raised as a CLINotFoundError
This commit is contained in:
parent
adf115fe6b
commit
d336a22ab4
2 changed files with 23 additions and 0 deletions
|
@ -136,6 +136,11 @@ class SubprocessCLITransport(Transport):
|
|||
self._stderr_stream = TextReceiveStream(self._process.stderr)
|
||||
|
||||
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
|
||||
except Exception as e:
|
||||
raise CLIConnectionError(f"Failed to start Claude Code: {e}") from e
|
||||
|
|
|
@ -132,3 +132,21 @@ class TestSubprocessCLITransport:
|
|||
# So we just verify the transport can be created and basic structure is correct
|
||||
assert transport._prompt == "test"
|
||||
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)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue