diff --git a/tests/smoke-test.sh b/tests/smoke-test.sh index 7aee057..494c5d2 100755 --- a/tests/smoke-test.sh +++ b/tests/smoke-test.sh @@ -88,6 +88,15 @@ test_weather_server_go() { # and exits. Empty rather than unset: dotenv skips a name already present in # ENV, so a key in the environment or a local .env would start the chat loop. +# Test: Ruby weather server +test_weather_server_ruby() { + check_dependency ruby || return 1 + check_dependency bundle || return 1 + local server_dir="${PROJECT_ROOT}/weather-server-ruby" + ensure_bundled "${server_dir}" || return 1 + (cd "${server_dir}" && node "${TEST_CLIENT}" bundle exec ruby weather.rb) +} + # Test: Python MCP client test_mcp_client_python() { check_dependency uv || return 1 @@ -119,14 +128,13 @@ test_mcp_client_ruby() { # 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. -# -# Nor is the Ruby weather server: the mcp gem does not stamp the resultType -# field that 2026-07-28 requires, so the test client rejects its responses. + print_header "Running smoke tests" run_test "weather-server-python" test_weather_server_python run_test "weather-server-typescript" test_weather_server_typescript run_test "weather-server-rust" test_weather_server_rust run_test "weather-server-go" test_weather_server_go +run_test "weather-server-ruby" test_weather_server_ruby run_test "mcp-client-python" test_mcp_client_python run_test "mcp-client-typescript" test_mcp_client_typescript run_test "mcp-client-ruby" test_mcp_client_ruby