Skip to content

Commit cfda589

Browse files
olaservoclaude
andcommitted
Update the tests README for Ruby server coverage
The README still said the Ruby weather server was uncovered and described the resultType gap as unfixable from an example. Both stopped being true when the server test landed. Also move the no-API-key comment below the Ruby server test. It describes the client tests, and sat where it read as describing the server one. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
1 parent d9005eb commit cfda589

2 files changed

Lines changed: 5 additions & 7 deletions

File tree

tests/README.md

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,11 @@ This directory contains smoke tests for the MCP quickstart examples. These tests
66

77
The smoke tests verify:
88

9-
- **Servers**: Each weather server (Python, TypeScript, Rust, Go) can start, respond to MCP protocol requests, and honour the output schemas it advertises
9+
- **Servers**: Each weather server (Python, TypeScript, Rust, Go, Ruby) can start, respond to MCP protocol requests, and honour the output schemas it advertises
1010
- **Clients**: The Python, TypeScript and Ruby MCP clients can connect to a mock server and list tools
1111

1212
The Go and Rust clients are not covered here: on `main` both abort when no `.env` file is present, so they cannot be driven without credentials. Making them start credential-free is a change in their own directories, so their coverage lands with those changes rather than here.
1313

14-
The Ruby **weather server** is not covered, for an upstream reason rather than a local one. The `mcp` gem negotiates `2026-07-28`, but its server never emits the `resultType` field that revision makes mandatory, so the test client rejects its responses — including `tools/list`. That is a fix for the gem, not something an example can work around. The Ruby **client** is covered: there it is the gem's client code that runs, and the server it is pointed at is the mock.
15-
1614
## Structured content
1715

1816
Listing tools is not enough to catch a broken structured result, so each server test also **calls** every tool that declares an `outputSchema` and checks the answer:

tests/smoke-test.sh

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -84,10 +84,6 @@ test_weather_server_go() {
8484
node "${TEST_CLIENT}" "${server_bin}"
8585
}
8686

87-
# The client tests drive the no-API-key path, where each client prints a notice
88-
# and exits. Empty rather than unset: dotenv skips a name already present in
89-
# ENV, so a key in the environment or a local .env would start the chat loop.
90-
9187
# Test: Ruby weather server
9288
test_weather_server_ruby() {
9389
check_dependency ruby || return 1
@@ -97,6 +93,10 @@ test_weather_server_ruby() {
9793
(cd "${server_dir}" && node "${TEST_CLIENT}" bundle exec ruby weather.rb)
9894
}
9995

96+
# The client tests drive the no-API-key path, where each client prints a notice
97+
# and exits. Empty rather than unset: dotenv skips a name already present in
98+
# ENV, so a key in the environment or a local .env would start the chat loop.
99+
100100
# Test: Python MCP client
101101
test_mcp_client_python() {
102102
check_dependency uv || return 1

0 commit comments

Comments
 (0)