fix(test): StdioMcpTransport process tests — race against fast child …#46
Merged
Skobeltsyn merged 1 commit intomainfrom May 5, 2026
Merged
fix(test): StdioMcpTransport process tests — race against fast child …#46Skobeltsyn merged 1 commit intomainfrom
Skobeltsyn merged 1 commit intomainfrom
Conversation
…exit on Linux CI Three tests in StdioMcpTransportForProcessTest spawned `sh -c "printf ...; exit"` without first reading from stdin. rpc() then writes the request to the child's stdin AFTER the child has already exited and closed the pipe → BrokenPipe IOException. macOS process startup is slow enough that the write usually wins the race; Linux CI (especially under Gradle 9.5's faster scheduling) loses it. Fix: prefix each child's shell command with `read req;` so the child blocks on stdin until rpc()'s write arrives. Same response behaviour after; the read content is discarded. Affected tests: - forProcess applies env map to the child process - forProcess applies workingDir to the child process (the one that surfaced) - forProcess pipes child stderr lines into stderrSink Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
…exit on Linux CI
Three tests in StdioMcpTransportForProcessTest spawned
sh -c "printf ...; exit"without first reading from stdin. rpc() then writes the request to the child's stdin AFTER the child has already exited and closed the pipe → BrokenPipe IOException. macOS process startup is slow enough that the write usually wins the race; Linux CI (especially under Gradle 9.5's faster scheduling) loses it.Fix: prefix each child's shell command with
read req;so the child blocks on stdin until rpc()'s write arrives. Same response behaviour after; the read content is discarded.Affected tests: