Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

[quality] getArgumentLabels and anyLabelMatches have no production caller — only their unit tests keep them covered

Closed
#366 1 comment 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 2 days

A pull request for this has already been merged.

  • #421 by @mrbobbytables — merged

Assessment

Difficulty
2/5
Estimated time
1-3 hours
Newbie friendliness
55/100
Issue type
Refactor
Clarity
Clearly specified
Activity status
Active
Tech stack
github-actions, node.js, typescript
Domain
testing, tooling

Research direction

Read src/utils/labeling.ts and src/utils/labelMatch.ts, then check their corresponding tests in __tests__/utils/labeling.test.ts and __tests__/utils/labelMatch.test.ts. The issue recommends removing the unused exports and their test blocks; run npm run build && npm run pack and verify the dist drift gate passes. The issue says this production-source change is for a maintainer, so it is not a first-timer task.

Written by the indexing model from the issue text.

Description

agent/quality hive/hosted-available-lke648397-260827-5q9t kind/cleanup quality testing

Finding

Two exported helpers in src/utils/ have no production caller. The only code that invokes them is their own unit test, so they count toward the 100 % unit line coverage on main @ 3fc21f2 while nothing the action ships ever runs them:

export defined last production caller only remaining caller
getArgumentLabels(octokit, context, arg) src/utils/labeling.ts:47-60 src/labels/prefixed.ts, removed in #137 (78b07b0) when the prefixed commands switched to getLabelConfig __tests__/utils/labeling.test.ts
anyLabelMatches(patterns, labels) src/utils/labelMatch.ts:46-48 none — added already exported-but-uncalled in #154 (f5d7bc3) __tests__/utils/labelMatch.test.ts

Evidence:

  • grep -rn "getArgumentLabels\|anyLabelMatches" src/ → only the two definitions.
  • git log -S"getArgumentLabels(" -- src → 78b07b0 deletes the import and call in prefixed.ts and keeps the export; git log -S"anyLabelMatches" -- src __tests__ → a single commit, f5d7bc3, introducing export and test together.
  • npm run test:coverage:e2e on a scratch branch = origin/main (3fc21f2) + the heads of all 44 open hold-gated bundle PRs (#230…#365, 48 files / 430 tests pass): 96.4 % statements; both functions have 0 hits (labeling.ts 52–59, labelMatch.ts 47 remain uncovered). Every other residual line in that run is a defensive throw on a malformed payload, a test-only reset*Cache() export, or already claimed by one of those PRs.
  • Both still ship: grep -n "getArgumentLabels\|anyLabelMatches" dist/index.js → dist/index.js:41388, dist/index.js:43239 (ncc does not tree-shake them).

Why it matters for the test suite rather than just tidiness: the unit report cannot distinguish "covered because it runs in the bundle" from "covered because a test calls it", so these two keep a green line over code that would silently rot — getArgumentLabels still throws the pre-#137 yaml malformed, expected '<arg>' top level key message that no user can reach.

Recommendation

One PR, one deliverable (deleting both exports and their test blocks is a single mechanical change; npm run pack to drop them from dist/):

  • remove getArgumentLabels from src/utils/labeling.ts and its describe block in __tests__/utils/labeling.test.ts
  • remove anyLabelMatches from src/utils/labelMatch.ts and its tests in __tests__/utils/labelMatch.test.ts (or wire it into matchesAnyLabel-style call sites if a consumer was intended in #154)
  • npm run build && npm run pack so the dist/ drift gate passes

This touches production source, so it is not a PR this lane opens; it is filed for a maintainer. Related, but deliberately not in this issue because it is a design choice rather than dead code: repoHasOwners/defaultBranch (src/utils/owners.ts:282-284, 348-359) are reachable only when a pull_request payload lacks base.ref (approve.ts:504, tide.ts:543), so they too have 0 e2e hits.

Priority

  • Impact: low
  • Effort: low

🐝 Hive Agent: quality | Instance: hosted-available-lke648397-260827-5q9t | SHA: 3fc21f2

— hive: agent=quality backend=copilot model=claude-fable-5.1 copilot=1.0.88

Dominant language
TypeScript
Stars
132
Forks
23
Avg merge
1d 19h
Merged PRs (30d)
166

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from cncf/prow-github-actions

All issues in cncf/prow-github-actions

Similar issues

More TypeScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.