Merge pull request #463 from koic/work_conformance_client_merged
[Conformance] Report expected client terminal failures quietly
This commit is contained in:
commit
72400ca12b
1 changed files with 61 additions and 49 deletions
|
|
@ -163,6 +163,14 @@ oauth = scenario.start_with?("auth/") ? build_provider_for(scenario, conformance
|
||||||
transport = MCP::Client::HTTP.new(url: server_url, oauth: oauth)
|
transport = MCP::Client::HTTP.new(url: server_url, oauth: oauth)
|
||||||
client = MCP::Client.new(transport: transport)
|
client = MCP::Client.new(transport: transport)
|
||||||
capabilities = scenario == "elicitation-sep1034-client-defaults" ? { elicitation: {} } : {}
|
capabilities = scenario == "elicitation-sep1034-client-defaults" ? { elicitation: {} } : {}
|
||||||
|
# The conformance harness asserts on the observed protocol exchange, not on the client's exit status,
|
||||||
|
# and echoes the client's output only when the exit status is non-zero. Several negative auth scenarios
|
||||||
|
# (e.g. `auth/resource-mismatch`, `auth/scope-retry-limit`) are expected to drive the client into
|
||||||
|
# a terminal failure: the SDK correctly refuses a mismatched resource or stops after the scope step-up
|
||||||
|
# retry limit. Report such an expected failure as a one-line reason and exit cleanly so the run stays
|
||||||
|
# free of noise, while letting any unexpected error (a real SDK bug) still raise with a full backtrace
|
||||||
|
# and a failing exit status.
|
||||||
|
begin
|
||||||
client.connect(
|
client.connect(
|
||||||
client_info: { name: "ruby-sdk-conformance-client", version: MCP::VERSION },
|
client_info: { name: "ruby-sdk-conformance-client", version: MCP::VERSION },
|
||||||
capabilities: capabilities,
|
capabilities: capabilities,
|
||||||
|
|
@ -215,3 +223,7 @@ when %r|\Aauth/|
|
||||||
else
|
else
|
||||||
abort("Unknown or unsupported scenario: #{scenario}")
|
abort("Unknown or unsupported scenario: #{scenario}")
|
||||||
end
|
end
|
||||||
|
rescue MCP::Client::OAuth::Flow::AuthorizationError, MCP::Client::RequestHandlerError, Faraday::Error => e
|
||||||
|
warn("#{scenario}: client ended in the expected terminal failure (#{e.class}: #{e.message})")
|
||||||
|
exit
|
||||||
|
end
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue