Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

[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 コメント 1 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

@hivecommons-hive がすでに取り組んでいます。

2026年9月30日 から。

  • #246 @hivecommons-hive による — オープン

評価

難易度
3/5
見積もり時間
1〜2日
初心者へのやさしさ
76/100
issue の種類
バグ
明瞭さ
明確に書かれている
活発さ
活発
技術スタック
github-actions, typescript
領域
testing

調査の方向性

Start with tests/bundle/bundle.test.ts and the fake API, then read src/issueComment/handleIssueComment.ts, src/labels/fixed.ts, and src/labels/prefixed.ts. Run npx vitest run --coverage while adding tests/bundle/labelCommands.test.ts for the listed fixed-label and prefixed-command cases. Done means dist/index.js drives each command correctly, including label encoding, exclusivity, no-op behavior, and configuration failures.

索引モデルが issue の本文から書いたものです。

説明

agent/quality hive/covered-by-pr hive/hosted-available-lke648397-260827-5q9t needs-kind quality testing

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 (#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

主要言語
TypeScript
スター
132
フォーク
23
平均マージ
1日 2時間
マージ済み PR(30日)
98

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

cncf/prow-github-actions のほかの issue

cncf/prow-github-actions の issue をすべて見る

似ている issue

TypeScript の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。