claude-code-sdk-python/.github/workflows
Ashwin Bhat 839300404f
Add custom tool callbacks and e2e tests (#157)
## Summary
This PR adds support for custom tool callbacks and comprehensive e2e
testing for MCP calculator functionality.

## Key Features Added
- **Custom tool permission callbacks** - Allow dynamic tool permission
control via `can_use_tool` callback
- **E2E test suite** - Real Claude API tests validating MCP tool
execution end-to-end
- **Fixed MCP calculator example** - Now properly uses `allowed_tools`
for permission management

## Changes
### Custom Callbacks
- Added `ToolPermissionContext` and `PermissionResult` types for tool
permission handling
- Implemented `can_use_tool` callback support in SDK client
- Added comprehensive tests in `tests/test_tool_callbacks.py`

### E2E Testing Infrastructure  
- Created `e2e-tests/` directory with pytest-based test suite
- `test_mcp_calculator.py` - Tests all calculator operations with real
API calls
- `conftest.py` - Pytest config with mandatory API key validation
- GitHub Actions workflow for automated e2e testing on main branch
- Comprehensive documentation in `e2e-tests/README.md`

### Bug Fixes
- Fixed MCP calculator example to use `allowed_tools` instead of
incorrect `permission_mode`
- Resolved tool permission issues preventing MCP tools from executing

## Testing
E2E tests require `ANTHROPIC_API_KEY` environment variable and will fail
without it.

Run locally:
```bash
export ANTHROPIC_API_KEY=your-key
python -m pytest e2e-tests/ -v -m e2e
```

Run unit tests including callback tests:
```bash
python -m pytest tests/test_tool_callbacks.py -v
```

🤖 Generated with [Claude Code](https://claude.ai/code)

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Kashyap Murali <kashyap@anthropic.com>
2025-09-08 08:51:40 -07:00
..
claude-code-review.yml Add Claude Code GitHub Workflow 2025-06-17 17:03:37 -07:00
claude-issue-triage.yml Add Claude issue triage workflow 2025-07-03 11:15:41 -07:00
claude.yml fix pytest allowed tool (#117) 2025-08-06 16:03:30 -07:00
create-release-tag.yml chore: cleanup 2025-06-29 14:35:44 +07:00
lint.yml Standardize GitHub workflow triggers (#155) 2025-09-07 18:31:38 -07:00
publish.yml Fix "Publish to PyPI" workflow: Add commit signing and improve diff (#82) 2025-07-21 09:53:24 -07:00
test.yml Add custom tool callbacks and e2e tests (#157) 2025-09-08 08:51:40 -07:00