-
Notifications
You must be signed in to change notification settings - Fork 1.3k
fix: correct assignee trigger test to handle different assignee properly #178
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
…assignee-with-context.payload Fix assignee trigger check
The test was failing because the mockIssueAssignedContext was missing the top-level assignee field that the trigger validation logic checks. Added the missing assignee field to the mock context and updated the test to properly override both the top-level assignee and issue.assignee fields when testing assignment to a different user. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
|
@claude review please |
ashwin-ant
previously approved these changes
Jun 17, 2025
Collaborator
ashwin-ant
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you!
Collaborator
|
@km-tr mind fixing the type errors here? |
Contributor
Author
|
@ashwin-ant Thank you, I’ve corrected the points you mentioned. |
ashwin-ant
approved these changes
Jun 17, 2025
msluther
added a commit
to classdojo/claude-code-action
that referenced
this pull request
Jun 23, 2025
* chore: update claude-code-base-action to v0.0.11 * chore: update claude-code-base-action to v0.0.12 * chore: update claude-code-base-action to v0.0.13 * Update allowed tools align with what is available in github-mcp-server (anthropics#145) * feat: add max_turns parameter support (anthropics#149) * feat: add max_turns parameter support - Add max_turns input to action.yml with proper description - Pass max_turns parameter through to claude-code-base-action - Update README with documentation and examples for max_turns usage - Add comprehensive tests to verify max_turns configuration - Add yaml dependency for test parsing Closes anthropics#148 Co-authored-by: ashwin-ant <ashwin-ant@users.noreply.github.com> * chore: remove max-turns test and yaml dependency Co-authored-by: ashwin-ant <ashwin-ant@users.noreply.github.com> * chore: revert package.json and bun.lock changes Co-authored-by: ashwin-ant <ashwin-ant@users.noreply.github.com> * Update action.yml * prettier --------- Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com> Co-authored-by: ashwin-ant <ashwin-ant@users.noreply.github.com> * feat: add roadmap for Claude Code GitHub Action v1.0 (anthropics#150) Add ROADMAP.md documenting planned features and improvements for reaching v1.0: - GitHub Action CI results visibility - Cross-repo support - Workflow file modification capabilities - Additional event trigger support - Configurable commit signing - Enhanced code review features - Bot user trigger support - Customizable base prompts The roadmap provides transparency on development priorities and invites community feedback and contributions. * fix: set disallowed_tools as env when runing prepare.ts (anthropics#151) * chore: update claude-code-base-action to v0.0.14 * feat: add MultiEdit to base_allowed_tools (anthropics#155) Add MultiEdit tool to the BASE_ALLOWED_TOOLS array to enable Claude Code to use the MultiEdit tool for making multiple edits to a single file in one operation. Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com> Co-authored-by: ashwin-ant <ashwin-ant@users.noreply.github.com> * fix: add baseUrl to Octokit initialization in update_claude_comment (anthropics#157) * fix: add baseUrl to Octokit initialization in update_claude_comment Fixes Bad credentials error on GitHub Enterprise Server by passing GITHUB_API_URL as baseUrl when initializing Octokit, consistent with other Octokit instances in the codebase. Fixes anthropics#156 Related to anthropics#107 Co-authored-by: ashwin-ant <ashwin-ant@users.noreply.github.com> * fix: pass GITHUB_API_URL as env var to MCP server Update the MCP server initialization to pass GITHUB_API_URL as an environment variable, allowing it to work correctly with GitHub Enterprise Server instances. Co-authored-by: ashwin-ant <ashwin-ant@users.noreply.github.com> * fix: import GITHUB_API_URL from config in install-mcp-server Use the centralized GITHUB_API_URL constant from src/github/api/config.ts instead of reading directly from process.env when passing environment variables to the MCP server. This ensures consistency with how the API URL is handled throughout the codebase. Co-authored-by: ashwin-ant <ashwin-ant@users.noreply.github.com> * fix --------- Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com> Co-authored-by: ashwin-ant <ashwin-ant@users.noreply.github.com> * chore: update claude-code-base-action to v0.0.17 * chore: update claude-code-base-action to v0.0.18 * chore: update claude-code-base-action to v0.0.19 * feat: use GitHub display name in Co-authored-by trailers (anthropics#163) * feat: use GitHub display name in Co-authored-by trailers - Add name field to GitHubAuthor type - Update GraphQL queries to fetch user display names - Add triggerDisplayName to CommonFields type - Extract display name from fetched GitHub data in prepareContext - Update Co-authored-by trailer generation to use display name when available This ensures consistency with GitHub's web interface behavior where Co-authored-by trailers use the user's display name rather than username. Co-authored-by: ashwin-ant <ashwin-ant@users.noreply.github.com> * fix: update GraphQL queries to handle Actor type correctly The name field is only available on the User subtype of Actor in GitHub's GraphQL API. This commit updates the queries to use inline fragments (... on User) to conditionally access the name field when the actor is a User type. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> * refactor: clarify Co-authored-by instructions in prompt Replace interpolated values with clear references to XML tags and add explicit formatting instructions. This makes it clearer how to use the GitHub display name when available while maintaining the username for the email portion. Changes: - Use explicit references to <trigger_display_name> and <trigger_username> tags - Add clear formatting instructions and example - Explain fallback behavior when display name is not available 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> * feat: fetch trigger user display name via dedicated GraphQL query Instead of trying to extract the display name from existing data (which was incomplete due to Actor type limitations), we now: - Add a dedicated USER_QUERY to fetch user display names - Pass the trigger username to fetchGitHubData - Fetch the display name during data collection phase - Simplify prepareContext to use the pre-fetched display name This ensures we always get the correct display name for Co-authored-by trailers, regardless of where the trigger came from. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> --------- Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com> Co-authored-by: ashwin-ant <ashwin-ant@users.noreply.github.com> Co-authored-by: Claude <noreply@anthropic.com> * feat: use dynamic fetch depth based on PR commit count (anthropics#169) - Replace fixed depth of 20 with dynamic calculation - Use Math.max(commitCount, 20) to ensure minimum context * Accept multiline input for allowed_tools and disallowed_tools (anthropics#168) * docs: add uv example for Python MCP servers in mcp_config section (anthropics#170) Added documentation showing how to configure Python-based MCP servers using uv with the --directory argument, as requested in issue anthropics#130. Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com> Co-authored-by: Ashwin Bhat <ashwin-ant@users.noreply.github.com> * feat: add release workflow with beta tag management (anthropics#171) - Auto-increment patch version for new releases - Update beta tag to point to latest release - Update major version tag (v0) for simplified action usage - Support dry run mode for testing - Keep beta as the "latest" release channel 🤖 Generated with [Claude Code](https://claude.ai/code) Co-authored-by: Claude <noreply@anthropic.com> * chore: update claude-code-base-action to v0.0.20 * update MCP server image to version 0.5.0 (anthropics#175) * feat: enhance error reporting with specific error types from Claude execution (anthropics#164) * feat: enhance error reporting with specific error types from Claude execution - Extract error subtypes (error_during_execution, error_max_turns) from result object - Display specific error messages in comment header based on error type - Use total_cost_usd field from SDKResultMessage type - Prevent showing redundant error details when already displayed in header 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> * chore: update claude-code-base-action to v0.0.19 * feat: use GitHub display name in Co-authored-by trailers (anthropics#163) * feat: use GitHub display name in Co-authored-by trailers - Add name field to GitHubAuthor type - Update GraphQL queries to fetch user display names - Add triggerDisplayName to CommonFields type - Extract display name from fetched GitHub data in prepareContext - Update Co-authored-by trailer generation to use display name when available This ensures consistency with GitHub's web interface behavior where Co-authored-by trailers use the user's display name rather than username. Co-authored-by: ashwin-ant <ashwin-ant@users.noreply.github.com> * fix: update GraphQL queries to handle Actor type correctly The name field is only available on the User subtype of Actor in GitHub's GraphQL API. This commit updates the queries to use inline fragments (... on User) to conditionally access the name field when the actor is a User type. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> * refactor: clarify Co-authored-by instructions in prompt Replace interpolated values with clear references to XML tags and add explicit formatting instructions. This makes it clearer how to use the GitHub display name when available while maintaining the username for the email portion. Changes: - Use explicit references to <trigger_display_name> and <trigger_username> tags - Add clear formatting instructions and example - Explain fallback behavior when display name is not available 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> * feat: fetch trigger user display name via dedicated GraphQL query Instead of trying to extract the display name from existing data (which was incomplete due to Actor type limitations), we now: - Add a dedicated USER_QUERY to fetch user display names - Pass the trigger username to fetchGitHubData - Fetch the display name during data collection phase - Simplify prepareContext to use the pre-fetched display name This ensures we always get the correct display name for Co-authored-by trailers, regardless of where the trigger came from. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> --------- Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com> Co-authored-by: ashwin-ant <ashwin-ant@users.noreply.github.com> Co-authored-by: Claude <noreply@anthropic.com> * feat: use dynamic fetch depth based on PR commit count (anthropics#169) - Replace fixed depth of 20 with dynamic calculation - Use Math.max(commitCount, 20) to ensure minimum context * Accept multiline input for allowed_tools and disallowed_tools (anthropics#168) * docs: add uv example for Python MCP servers in mcp_config section (anthropics#170) Added documentation showing how to configure Python-based MCP servers using uv with the --directory argument, as requested in issue anthropics#130. Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com> Co-authored-by: Ashwin Bhat <ashwin-ant@users.noreply.github.com> * feat: add release workflow with beta tag management (anthropics#171) - Auto-increment patch version for new releases - Update beta tag to point to latest release - Update major version tag (v0) for simplified action usage - Support dry run mode for testing - Keep beta as the "latest" release channel 🤖 Generated with [Claude Code](https://claude.ai/code) Co-authored-by: Claude <noreply@anthropic.com> * chore: update claude-code-base-action to v0.0.20 * update MCP server image to version 0.5.0 (anthropics#175) * refactor: convert error subtype check to switch case Replace if-else chain with switch statement for better readability and maintainability when handling error subtypes. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> --------- Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: GitHub Actions <actions@github.com> Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com> Co-authored-by: ashwin-ant <ashwin-ant@users.noreply.github.com> Co-authored-by: Bastian Gutschke <bge@medicuja.com> Co-authored-by: Hidetake Iwata <int128@gmail.com> Co-authored-by: Tomohiro Ishibashi <103555868+tomoish@users.noreply.github.com> * Revert "feat: enhance error reporting with specific error types from Claude e…" (anthropics#179) This reverts commit 1b94b9e. * chore: update claude-code-base-action to v0.0.21 * fix: correct assignee trigger test to handle different assignee properly (anthropics#178) * fix: use direct assignee field * fix: correct assignee trigger test to handle different assignee properly The test was failing because the mockIssueAssignedContext was missing the top-level assignee field that the trigger validation logic checks. Added the missing assignee field to the mock context and updated the test to properly override both the top-level assignee and issue.assignee fields when testing assignment to a different user. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> * Adjust IssuesAssignedEvent import position (#2) --------- Co-authored-by: Claude <noreply@anthropic.com> * chore: update claude-code-base-action to v0.0.22 * docs: remove references to non-existent test-local.sh script (anthropics#187) All tests for this repo can be run with `bun test` - the test-local.sh script was a holdover from the base action repo. Fixes anthropics#172 Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com> Co-authored-by: Ashwin Bhat <ashwin-ant@users.noreply.github.com> * chore: update claude-code-base-action to v0.0.23 * chore: update claude-code-base-action to v0.0.24 --------- Co-authored-by: GitHub Actions <actions@github.com> Co-authored-by: Sepehr Sobhani <sepehr411@gmail.com> Co-authored-by: Ashwin Bhat <ashwin@anthropic.com> Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com> Co-authored-by: ashwin-ant <ashwin-ant@users.noreply.github.com> Co-authored-by: atsushi-ishibashi <a.ishibashi0501@gmail.com> Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: Bastian Gutschke <bge@medicuja.com> Co-authored-by: Hidetake Iwata <int128@gmail.com> Co-authored-by: Tomohiro Ishibashi <103555868+tomoish@users.noreply.github.com> Co-authored-by: Kuma Taro <kumagai@bear.tokyo>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Problem
The assignee trigger functionality was not working correctly due to a mismatch between the test mock context and the actual GitHub webhook payload structure. This bug was preventing proper testing of the assignee trigger feature and could have led to runtime failures in production.
Root Cause Analysis
The issue was in the test setup for assignee trigger validation:
GitHub Webhook Structure: When an issue is assigned, GitHub sends both:
payload.assignee(top-level assignee who was assigned)payload.issue.assignee(same user, nested under issue object)Trigger Logic: The validation code in
src/github/validation/trigger.ts:28specifically checks:Test Bug: The
mockIssueAssignedContextwas only settingissue.assigneebut missing the top-levelassigneefield that the validation logic actually uses.Failure: This caused the trigger validation to always get an empty string for
assigneeUsername, making the assignee trigger functionality fail silently in tests.Solution
Changes Made
Fixed Mock Context (
test/mockContext.ts):assigneefield tomockIssueAssignedContextEnhanced Test Coverage (
test/trigger-validation.test.ts):assigneeandissue.assigneefieldsTechnical Details
Before Fix:
After Fix:
Impact
Testing
All tests pass (206/206):
Specifically verified:
Type Safety
This fix maintains full TypeScript type safety by using the existing
IssuesAssignedEventtype from@octokit/webhooks-typesfor both the top-levelassigneeandissue.assigneefields.This fix ensures the assignee trigger functionality works reliably in production GitHub environments.