[quality] 14 commenter-auth catch arms (10 commands + auth.ts:181/210/217/224) are unreachable — only module mocks in unit tests keep them covered
I maintainer di solito rispondono entro 2 giorni
Una pull request collegata è già stata integrata.
- #449 di @mrbobbytables — integrata
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- Mezza giornata
- Idoneità per principianti
- 35/100
- Tipo di issue
- Refactoring
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Attiva
- Stack tecnologico
- github-actions, typescript
- Ambito
- authorization, testing
Direzione di ricerca
Start with the three probes in src/utils/auth.ts (checkOrgMember, checkCollaborator, checkIssueComments) and the wrapper catches at auth.ts:179-182 and 205-225, then the command files listed in the issue (close.ts, reopen.ts, lock.ts, assign.ts and others). Remove the unreachable wrappers and the mockRejectedValueOnce cases in tests/issueCommentTest/errorPaths.test.ts, tests/label/errorPaths.test.ts and tests/utils/auth.test.ts. Done when npx vitest run passes and the dist/ drift gate passes after npm run build and npm run pack. The issue says the behaviour-change alternative needs a maintainer decision, so confirm the approach first.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Finding
Fourteen catch arms that wrap the commenter-authorization probes are unreachable from the shipped bundle. The three probes they guard — checkOrgMember (src/utils/auth.ts:37-67), checkCollaborator (:77-104) and checkIssueComments (:116-142) — each wrap their whole body in try { … } catch { core.warning(…); return false }, so they never reject. The wrappers around them can only fire if the probe module itself is replaced, which is exactly how the unit suite reaches them:
| wrapper | file:line | unit test that reaches it | how |
|---|---|---|---|
could not check commentor auth |
src/issueComment/close.ts:40, reopen.ts:37 |
__tests__/issueCommentTest/errorPaths.test.ts |
vi.mock('../../src/utils/auth', { spy: true }) + checkCollaborator.mockRejectedValueOnce |
could not check commenter auth |
lock.ts:47, milestone.ts:40, src/labels/remove.ts:37 |
same / __tests__/label/errorPaths.test.ts |
same |
could not check Commentor auth |
retitle.ts:45 |
same | same |
couldn ot check commentor Auth |
unassign.ts:58 |
same | same |
could not get authorized users |
assign.ts:61, cc.ts:58, uncc.ts:57 |
same | getOrgCollabCommentUsers.mockRejectedValueOnce |
could not get authorized user |
src/utils/auth.ts:181 (getOrgCollabCommentUsers) |
__tests__/utils/auth.test.ts |
makes core.warning throw (logger down) |
error in checking org member / could not check collaborator / could not check issue comments |
src/utils/auth.ts:210, :217, :224 (checkCommenterAuth) |
__tests__/utils/auth.test.ts:263-278 |
same core.warning throw |
errorPaths.test.ts:19 says so itself: "could not check auth" branches are only reachable when the helper rejects.
Evidence (main @ aa6a0f8, Node v26.10.0, vitest 5.0.3):
- Unit:
npx vitest run --coverage→ 100 % lines (132 files / 2057 tests). All fourteen arms are green only because of the module mocks above. - End-to-end:
npm run test:coverage:e2eon a scratch branch =origin/main+ the heads of all 33 open hold-gated bundle PRs (#283 … #385; 53 files / 420 tests pass) → 97.64 % lines ofsrc/. All fourteen arms have 0 hits; together withauth.ts:44-45(payload.repository === undefineddebug) they are the whole e2e residual of the auth path. - Reachability:
grep -n "throw\|return false" src/utils/auth.ts— everythrowin the three probes is inside their owntry; the only way out isreturn.context.repois evaluated inside those sametryblocks.
Why it matters for the test suite rather than tidiness: the unit report cannot distinguish "exercised by the bundle" from "exercised by a mock of the callee", so these arms keep a green line over error messages — including the misspelt couldn ot check commentor Auth — that no user can ever see, and the tests that cover them pin wording the action cannot emit.
Recommendation
One PR, one deliverable (the same mechanical edit at every site):
- drop the
try { … } catch (e) { throw new Error('could not check … auth: ' + e) }wrappers inclose.ts,reopen.ts,lock.ts,milestone.ts,retitle.ts,unassign.ts,labels/remove.tsand thecould not get authorized userswrappers inassign.ts,cc.ts,uncc.ts, calling the probe directly - drop the four wrappers inside
src/utils/auth.ts(getOrgCollabCommentUsers:179-182,checkCommenterAuth:205-225) - delete the corresponding
mockRejectedValueOncecases in__tests__/issueCommentTest/errorPaths.test.ts,__tests__/label/errorPaths.test.tsand thelogger downcases in__tests__/utils/auth.test.ts -
npm run build && npm run packso the dist/ drift gate passes
Alternative, if the wrappers are wanted as belt-and-braces: keep them but make the probes actually able to reject (rethrow non-404/302 statuses instead of return false), so the arms become reachable and the bundle suite can drive them. That is a behaviour change — today an API outage silently denies the command — and so also a maintainer call.
This touches production source, so it is not a PR this lane opens; it is filed for a maintainer. Companion to #366 (dead exports kept green by their own unit tests); kept separate because the fix sites do not overlap.
Priority
- Impact: low
- Effort: low
🐝 Hive Agent: quality | Instance: hosted-available-lke648397-260827-5q9t | SHA: 4948f6d
— hive: agent=quality backend=copilot model=claude-fable-5.1
- Lingua principale
- TypeScript
- Stelle
- 132
- Fork
- 23
- Merge medio
- 1g 19h
- PR unite (30g)
- 166
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di cncf/prow-github-actions
-
agent/quality hive/covered-by-pr hive/hosted-available-lke648397-260827-5q9t needs-kind quality testing
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
cncf/prow-github-actions#466 · 14 commenti ·
I maintainer di solito rispondono entro 2 giorni
-
agent/quality blocked hive/covered-by-pr hive/hosted-available-lke648397-260827-5q9t needs-human needs-kind quality testing
Difficoltà 2/5 1-3 ore Idoneità per principianti 35/100
cncf/prow-github-actions#459 · 5 commenti ·
I maintainer di solito rispondono entro 2 giorni
-
agent/quality hive/hosted-available-lke648397-260827-5q9t needs-decision needs-kind quality testing
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 25/100
cncf/prow-github-actions#452 · 2 commenti ·
I maintainer di solito rispondono entro 2 giorni
-
🐝 Hive Advisory ReportApertakind/cleanup
Difficoltà 5/5 Più di una settimana Idoneità per principianti 15/100
cncf/prow-github-actions#170 · 2 commenti ·
I maintainer di solito rispondono entro 2 giorni
Tutte le issue di cncf/prow-github-actions
Issue simili
-
Create/import wallet form shows raw "password must be at least 1 characters" instead of the translated messageForse già presa @CapThunder19 l’ha presa oggi. Apertabug
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
joinmarket-webui/jam#1538 ·
I maintainer di solito rispondono entro 1 giorno
-
t0ggles
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
nolimits4web/swiper#8240 · 1 commento ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
modelcontextprotocol/inspector#2723 ·
I maintainer di solito rispondono entro 1 giorno
-
status:approved type:bug
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 70/100
egdev6/quorb#109 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno