-
Notifications
You must be signed in to change notification settings - Fork 24
[quality] bundle e2e suite never drives /cc /uncc /unassign /retitle /lock /reopen through dist/index.js #237
Copy link
Copy link
Open
Labels
agent/qualityCreated by Hive for agent-filed issue provenanceCreated by Hive for agent-filed issue provenancehive/covered-by-prHive verified that an open PR references or claims this issue; still actionable until confirmedHive verified that an open PR references or claims this issue; still actionable until confirmedhive/hosted-available-lke648397-260827-5q9tCreated by Hive for agent-filed issue provenanceCreated by Hive for agent-filed issue provenanceneeds-kindqualityCreated by Hive for agent-filed issue provenanceCreated by Hive for agent-filed issue provenancetestingCreated by Hive for agent-filed issue provenanceCreated by Hive for agent-filed issue provenance
Description
Activity
Metadata
Metadata
Assignees
Labels
agent/qualityCreated by Hive for agent-filed issue provenanceCreated by Hive for agent-filed issue provenancehive/covered-by-prHive verified that an open PR references or claims this issue; still actionable until confirmedHive verified that an open PR references or claims this issue; still actionable until confirmedhive/hosted-available-lke648397-260827-5q9tCreated by Hive for agent-filed issue provenanceCreated by Hive for agent-filed issue provenanceneeds-kindqualityCreated by Hive for agent-filed issue provenanceCreated by Hive for agent-filed issue provenancetestingCreated by Hive for agent-filed issue provenanceCreated by Hive for agent-filed issue provenance
Finding
The bundle end-to-end suite (
__tests__/bundle/bundle.test.ts, which spawns the committeddist/index.jsagainst a fake GitHub API) drives the label,/assign,/close,/milestone,/approve,/lgtm,/hold,/retestand/ok-to-testcommands, but never drives six of theissue_commenthandlers registered insrc/issueComment/handleIssueComment.ts:32-49:/ccsrc/issueComment/cc.ts/unccsrc/issueComment/uncc.ts/unassignsrc/issueComment/unassign.ts/retitlesrc/issueComment/retitle.ts/locksrc/issueComment/lock.ts/reopensrc/issueComment/reopen.tsReproduce on
main@ c48bd6d:for c in /cc /uncc /unassign /retitle /lock /reopen; do grep -c -- "$c" __tests__/bundle/bundle.test.ts; done→ six zeros.Unit evidence:
npx vitest run --coverageon c48bd6d (Node v26.10.0, vitest 5.0.1,@vitest/coverage-v8): all six files at 100 % statements / branches / functions / lines (All files 99.83 | 98.35 | 100 | 99.82). Each has a dedicated file under__tests__/issueCommentTest/.End-to-end evidence: the e2e suite emits no coverage data for
src/today (#235;dist/index.jscarries no source map), so this is established from the test source itself, not from merged line data — the two sources cannot be combined. What the unit tests cannot show and the e2e suite is for: that thenccbundle wires each handler into the dispatcher, that the real@octokit/restclient maps them to the REST paths and bodies (POST/DELETE pulls/1/requested_reviewers,DELETE issues/1/assignees,PATCH issues/1,PUT issues/1/lock), and that a thrown handler error reachescore.setFailedwith exit code 1.Priority: covered by unit tests but not end-to-end → medium (2).
/meowis also never driven through the bundle, but it calls the public cat API over the network and is deliberately left out of this issue./test, and thestatusandpushevent rows ofsrc/run.ts, are likewise absent from the bundle suite and are out of scope here.Recommendation
Add
__tests__/bundle/collaborationCommands.test.tsnext tobundle.test.ts, reusingfakeGithub.tsandrunBundle.ts, with onedescribeper command covering the authorized path (request recorded with the expected body), the unauthorized path (no write), and the failing path where the handler throws (exit 1,::error::text). Keep it in a separate file: #236 editsbundle.test.ts./ccself and argument forms, unauthorized, no-authorized-users failure/unccself and argument forms, unauthorized/unassignself and argument forms, refused removal/retitlecollaborator, non-collaborator, empty title/lockno reason, mapped reason, unknown reason, non-collaborator/reopenauthor, collaborator, non-collaboratorPriority
Filed by quality agent (hold-gated mode)
🐝 Hive Agent:
quality| Instance:hosted-available-lke648397-260827-5q9t| SHA:c48bd6d— hive: agent=quality backend=copilot model=claude-fable-5.1 copilot=1.0.88