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

[quality] bundle e2e never drives plain /close or the /milestone refusals through dist/index.js

クローズ 初心者向け
#295 コメント 1 件 リアクション 0 件 担当者 0 名 GitHub で見る

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

関連するプルリクエストがすでにマージされています。

  • #296 @hivecommons-hive による — マージ済み

評価

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

調査の方向性

tests/bundle/collaborationCommands.test.ts と tests/bundle/helpers のヘルパーから始め、その後 npm run test:coverage:e2e を実行します。記載されている close および milestone のシナリオを使って tests/bundle/closeMilestone.test.ts を追加し、リクエストとエラーが完全に一致することを検証します。コマンド実装を変更せずに bundle suite がチェックリストの各ケースをカバーすれば完了です。

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

説明

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

Finding

Cluster: src/issueComment/close.ts and src/issueComment/milestone.ts, end-to-end arms only. Disjoint from every open hold-gated bundle PR (#242 cron jobs input, #244 /meow, #246 fixed/prefixed labels, #283 OWNERS, #286 approve review, #289 tide, #291 blunderbuss, #293 hold/sweep): none of their diffs touch /close, /milestone or these two files.

Unit evidence: npx vitest run --coverage on main @ 3fc21f2 (Node v26.10.0, vitest 5.0.1, @vitest/coverage-v8 5.0.1): 100 % lines (2382/2382), 99.81 % branches, 100 % functions. Both files are fully unit-covered (__tests__/issueCommentTest/close.test.ts, milestone.test.ts).

End-to-end evidence: npm run test:coverage:e2e (the source-mapped bundle run added by #274) on the same revision, __tests__/bundle only (5 files / 142 tests): src/ at 77.9 % lines / 70.82 % branches. Per file, from coverage-final.json:

file e2e lines e2e branches lines never reached from dist/
src/issueComment/close.ts 80 % 66.66 % 24, 39, 56-60, 64
src/issueComment/milestone.ts 73.07 % 53.84 % 28, 40, 44, 52, 71-73

What that means in behaviour:

  • plain /close (lines 56-60, the else of not-planned) — the command's primary form — is never run through the bundle. bundle.test.ts drives only the non-collaborator no-op and /close not-planned. The author shortcut (isAuthor → no collaborator read, line 33) is likewise never exercised e2e.
  • /close whose PATCH /issues/1 fails never surfaces could not close issue (line 64).
  • /milestone <title> that matches no milestone never produces the milestone "…" not found. Available milestones: … failure and never proves no PATCH is sent (lines 71-73).
  • /milestone with no argument (line 52, please provide a milestone to add) and by a non-collaborator (line 44, commenter is not authorized to set a milestone) are never refused through the bundle.

Lines 24/28 (payload without an issue number) and 39/40 (checkCollaborator rejecting) are not reachable from an issue_comment payload over HTTP — checkCollaborator swallows non-404 errors and returns false — so they are not part of this gap.

Recommendation

Add __tests__/bundle/closeMilestone.test.ts (new file, same shape as collaborationCommands.test.ts: start() a fake GitHub, comment()/helpersFor() from ./helpers, assert the exact request list) covering:

  • plain /close by the issue author: no collaborator read, one PATCH /issues/1 with { state: 'closed' } and no state_reason
  • /close whose PATCH returns 500: run fails and errors names could not close issue
  • /milestone v9 with milestones v1.0, Sprint 2: run fails naming milestone "v9" not found and the available titles; no PATCH
  • /milestone with no argument: run fails with please provide a milestone to add after only the collaborator read
  • /milestone v1.0 by a non-collaborator: run fails with commenter is not authorized to set a milestone; no milestones read, no PATCH

Priority

  • Impact: medium — covered by unit tests, not by the bundle suite (coverage-gap priority 2 under the unit-but-not-e2e rule)
  • Effort: low

Filed by quality agent (hold-gated mode)


🐝 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

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

環境構築

はじめの一歩

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

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

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

似ている issue

TypeScript の issue をもっと見る

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

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