Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

Two rmcp tests fail on Windows: connection-refused text check and `npm` spawn in test_with_js

未关闭
#1,364 1 条评论 0 个 reaction 已指派 1 人 在 GitHub 查看

维护者通常 3 天内回复

@bolinfest 已经在做这个了。

开始于 2026年10月15日。

评估

这个 Issue 还没有评估数据。

描述

bug P2 ready for work T-test

Describe the bug
I ran rmcp's tests on Windows (CI only runs Linux). Two tests fail there. Both problems are in the tests; the SDK code behaves correctly.

  1. transport::auth::tests::default_http_client_preserves_connection_failure_cause (lib, --all-features) checks for the English text connection refused. Windows describes a refused connection differently, so the assertion fails although the error chain is correct:

    unexpected discovery error: Metadata error: OAuth metadata discovery failed for http://127.0.0.1:34350/mcp
      Caused by: error sending request for url (http://127.0.0.1:34350/mcp)
      Caused by: client error (Connect)
      Caused by: tcp connect error
      Caused by: No connection could be made because the target machine actively refused it. (os error 10061)
    
  2. All three test_with_js tests (no-local feature set) fail with Error: program not found. install_js_dependencies runs Command::new("npm"), but on Windows npm is the shim npm.cmd, and Command doesn't resolve a bare name to a .cmd file. (node is node.exe, so the other spawns work.)

To Reproduce
On Windows 11 with rustc 1.96 (the version rust-toolchain.toml pins), Node 24 and uv:

  1. cargo test -p rmcp --all-features --lib default_http_client_preserves_connection_failure_cause
  2. cargo test -p rmcp --features "<all rmcp features except local, as in CI>" --test test_with_js

Expected behavior
Both pass, as they do on Linux.

Proposed fix (test-only, 8 lines added, 3 removed)

  • auth test: before the request, connect to the same dropped address with std::net::TcpStream::connect(addr), and assert that the reason contains that error's to_string(). That way the test expects whatever text the OS uses, instead of a hard-coded English phrase.
  • test_with_js: let npm = if cfg!(windows) { "npm.cmd" } else { "npm" };. Another option is to dogfood rmcp::transport::which_command("npm"), but then which-command has to be added to the test's required-features.

Patch: https://github.com/modelcontextprotocol/rust-sdk/compare/main...RafalOfficial:rust-sdk:fix/windows-test-portability. With it, both tests pass on Windows. These all pass unchanged on Windows: the other 606 lib tests, test_with_python, test_stdio_response_concurrency, test_close_connection and test_async_rw_max_line_length. The patch is formatted with cargo +nightly fmt. If you're happy with this, I can open the PR. If you don't want Windows-only test fixes while CI is Linux-only, just close this.

Additional context
Main at 8d226f4. This report and the proposed patch were written with Claude Code (AI-assisted). I ran the commands above on a real Windows machine.

主要语言
Rust
星标
4k
派生
662
平均合并
3 天 23 小时
30 天内合并 PR
34

环境准备

在 Codespaces 中打开

在浏览器里用你自己的 GitHub 账号启动这个项目的开发容器。

  • 没有 Dockerfile 或 Docker Compose 文件
  • 没有 Pull Request 模板
  • 阅读贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

modelcontextprotocol/rust-sdk 的其他 Issue

查看 modelcontextprotocol/rust-sdk 的全部 Issue

相似的 Issue

更多 Rust Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。