Skip to content

[quality] bundle e2e suite never drives the fixed-label (/good-first-issue, /remove-help) or built-in prefixed (/lifecycle, /stage, /status, /priority) commands through dist/index.js #245

Description

@hivecommons-hive

Finding

__tests__/bundle/ is the only suite that runs the committed dist/index.js (against fakeGithub.ts). Its issue_comment inventory on main @ c48bd6d drives /help, /kind, /remove-kind, /label, /remove-label and the dynamic /level, but never the other two label-command families that src/issueComment/handleIssueComment.ts dispatches:

  • Fixed-label commands (src/labels/fixed.ts, Prow's help plugin): /good-first-issue, /remove-help, /remove-good-first-issue. The remove set differs per command (/remove-help drops both help wanted and good first issue; /remove-good-first-issue drops only good first issue, docs/commands.md:66-68) and the labels contain spaces, so the DELETE .../labels/{name} encoding is a distinct path from every <prefix>/<value> label the suite already exercises.
  • Built-in prefixed commands (src/labels/prefixed.ts:27-31): /lifecycle, /stage, /status (Prow default values, exclusive: true, docs/labeling.md:100-125) and /priority (yaml allowlist, exclusive: true). The suite's only exclusive-command test is /level, whose values come from the yaml mapping form; the built-in-defaults fallback in sectionFor and the documented "a configuration file must still exist in some tier" failure are not driven end to end. Neither is a comment carrying two exclusive commands at once (/stage + /status), which is where a prefix-scoped "remove stale labels" bug would show.

Evidence:

  • Unit: npx vitest run --coverage on main @ c48bd6d, Node v26.10.0 — 69 files / 1447 tests, All files 99.83 | 98.35 | 100 | 99.82; src/labels/fixed.ts and src/labels/prefixed.ts at 100% lines. Unit coverage of these files is not the gap.
  • End to end: grep -nE "good-first-issue|remove-help|/lifecycle|/stage|/status|/priority" __tests__/bundle/bundle.test.ts matches only the /label good-first-issue allowlist test (a labels: entry, not the fixed command). The bundle child's V8 coverage is not captured in the report ([quality] the bundle e2e suite's coverage of src/ is never captured — runBundle.ts drops NODE_V8_COVERAGE and dist/ has no source map #235), so the e2e evidence here is the driven-command inventory, not a line profile; unit and e2e evidence cannot be combined at line granularity.

Recommendation

Add __tests__/bundle/labelCommands.test.ts driving dist/index.js against the fake API for:

  • /good-first-issue adds good first issue + help wanted in one write; fails without writing when the repository lacks one of them
  • /remove-help deletes both labels (case-insensitively, space-encoded) and /remove-good-first-issue deletes only good first issue; a no-op read when neither is present
  • /lifecycle stale with a configuration that has no lifecycle key: removes lifecycle/frozen, adds lifecycle/stale; an unknown value fails without touching the issue; /remove-lifecycle; the documented no-configuration failure
  • /stage beta + /status in-review in one comment each replace only their own prefix
  • /priority high from the .prowlabels.yaml allowlist removes priority/low first; an unlisted value fails; /remove-priority

Disjoint from every open hold-gated PR: #236 edits bundle.test.ts, #238 adds collaborationCommands.test.ts (/cc /uncc /unassign /retitle /lock /reopen), #240 adds triggerTestAndLgtmCancel.test.ts, #242 adds cronJobsInput.test.ts, #244 adds meow.test.ts; none touch a labelCommands file, src/labels/fixed.ts or the built-in prefixed commands.

Priority

  • Impact: medium — unit-covered, not e2e-covered (coverage-gap priority 2); these are the commands Prow users type most after /kind and /lgtm
  • Effort: low

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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    agent/qualityCreated by Hive for agent-filed issue provenancehive/covered-by-prHive 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 provenanceneeds-kindqualityCreated by Hive for agent-filed issue provenancetestingCreated by Hive for agent-filed issue provenance

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions