mcpdo: run the daemon test suites on Windows by porting the harness to named pipes

オープン
#2,922 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

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

まだ誰も着手していません。

評価

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

調査の方向性

Start with clients/mcpdo/src/daemon/paths.ts, clients/mcpdo/__tests__/helpers/platform.ts, and the daemon test suites gated by unixDaemonOnly; trace how they construct endpoints and wait during teardown. Run the tests on the Windows CI job and identify cases that depend on POSIX behavior. Done means the daemon suites run on Windows, only explicitly justified POSIX cases remain skipped, and the Windows coverage carve-out is removed from clients/mcpdo/vitest.config.ts.

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

説明

chore v2
Problem

mcpdo's Windows daemon path has never been run by a test. Production code already uses a named pipe on win32 (getDaemonSocketPath in clients/mcpdo/src/daemon/paths.ts returns \\.\pipe\mcp-conn-<hash>, and clients/mcpdo/src/daemon/client.ts handles the pipe path when locating the token file). But the daemon test harness was written for a Unix domain socket:

  • suites bind or poll <dir>/mcpdod.sock directly. Windows refuses that with EACCES, and the tests then time out waiting on the daemon.
  • teardown waits for the socket file to vanish. A pipe never appears there, so a live daemon keeps the temp dir open and rmSync fails with EBUSY.
  • some assertions assume POSIX premises (0700 directories, the sun_path limit).

#2748 (PR #2906) therefore skips 127 mcpdo tests on win32 (unixDaemonOnly in clients/mcpdo/__tests__/helpers/platform.ts). It also turns off mcpdo's per-file 90% coverage threshold on Windows only (clients/mcpdo/vitest.config.ts), because the daemon modules fall below it there. The new windows CI job is green, but it doesn't show that the daemon works on Windows.

Expected
  • The daemon test helpers derive the endpoint from getDaemonSocketPath instead of a hard-coded .sock file, and tear down a named-pipe daemon cleanly on Windows.
  • The suites gated by unixDaemonOnly run on the windows CI job. Only cases that assert genuinely POSIX-only behaviour stay skipped, each with its reason at the site.
  • mcpdo's per-file 90% threshold is enforced on Windows again, and the win32 carve-out in clients/mcpdo/vitest.config.ts is removed.

Verification has to come from the windows CI job; maintainers develop on macOS.

主要言語
TypeScript
スター
11.2k
フォーク
1.6k
平均マージ
3時間 36分
マージ済み PR(30日)
154

環境構築

はじめの一歩

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

modelcontextprotocol/inspector のほかの issue

modelcontextprotocol/inspector の issue をすべて見る

似ている issue

TypeScript の issue をもっと見る

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

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