Conversation
Co-authored-by: edburns <75821+edburns@users.noreply.github.com>
Copilot stopped work on behalf of
edburns due to an error
August 5, 2026 20:34
edburns
marked this pull request as ready for review
August 5, 2026 21:26
Contributor
There was a problem hiding this comment.
Pull request overview
Extends Java test coverage across both subprocess and InProcess transports.
Changes:
- Runs all Surefire and Failsafe tests under the InProcess profile.
- Routes E2E environment configuration through
InProcessEnvGuard. - Skips tests requiring subprocess-specific behavior.
Show a summary per file
| File | Description |
|---|---|
java/sdk/pom.xml |
Configures InProcess test execution. |
E2ETestContext.java |
Adds InProcess environment handling. |
SkipInProcess.java |
Exposes the execution condition. |
RequireInProcess.java |
Exposes the execution condition. |
SlashCommandsIT.java |
Skips subprocess-only integration tests. |
RpcServerMiscE2ETest.java |
Skips incompatible account-flow test. |
PerSessionAuthTest.java |
Skips incompatible auth-isolation test. |
CopilotClientTest.java |
Skips selected transport-specific tests. |
ClientOptionsE2ETest.java |
Skips subprocess argument-forwarding tests. |
Review details
Suppressed comments (2)
java/sdk/pom.xml:631
- Failsafe also needs a fork for its configured environment variables to take effect. With
forkCount=0, neitherCOPILOT_SDK_DEFAULT_CONNECTIONnorCOPILOT_CLI_PATHis injected, so removing the<includes>filter merely runs all ITs on the default transport rather than providing InProcess parity.
<forkCount>0</forkCount>
java/sdk/src/test/java/com/github/copilot/E2ETestContext.java:373
- An explicit non-InProcess connection must win over the ambient default, matching
CopilotClient's transport-selection contract. CurrentlyRuntimeConnection.forStdio()/forTcp()falls through to the environment check, socreateClient(options)treats it as InProcess, omits the context's stdio settings, and mutates the native environment even though the client will use the explicit connection.
RuntimeConnection connection = options.getConnection();
if (connection instanceof InProcessRuntimeConnection) {
return true;
}
String defaultConnection = System.getenv("COPILOT_SDK_DEFAULT_CONNECTION");
- Files reviewed: 9/9 changed files
- Comments generated: 3
- Review effort level: Balanced
This comment has been minimized.
This comment has been minimized.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This comment has been minimized.
This comment has been minimized.
Bundle both runtime.node and the copilot CLI executable in the classifier JAR. The Rust embedded_host.rs spawns the CLI as a child process via host_start argv[0], so runtime.node alone is insufficient. Changes: - fetch-native.mjs: also extract package/copilot from npm tarball - NativeRuntimeLoader: add resolveEntrypoint() that finds copilot CLI alongside the resolved runtime.node; extractToCache also extracts CLI - CopilotClient: simplify resolveInProcessEntrypoint() to use only the bundled artifact (no COPILOT_CLI_PATH, no PATH search) - E2ETestContext: remove COPILOT_CLI_PATH from InProcess env (unused now) - Add diagnostic spike and yolo prompt for context Previously ExecutorWiringTest failed with FileNotFoundException and AskUserTest hung indefinitely. Both now pass. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: d7a38160-a65e-4d0c-9087-4f28da2a51b8
This comment has been minimized.
This comment has been minimized.
…nv var - resolveDefaultConnection: when cliUrl, cliPath, or port are explicitly set, fall back to subprocess transport even if COPILOT_SDK_DEFAULT_CONNECTION is 'inprocess'. Explicit options take precedence over the env var default. - validateEnvironmentOptions: check isEmpty() in addition to null, since setEnvironment(null) clears the map rather than nulling the field. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: d7a38160-a65e-4d0c-9087-4f28da2a51b8
Contributor
Cross-SDK Consistency Review ✅This PR modifies only the Java SDK (test infrastructure, No new public API surface is introduced — the changes are entirely internal to the Java test harness for InProcess vs. out-of-process test parity. No cross-SDK consistency issues were identified. Other language SDKs (Node.js, Python, Go, .NET, Rust) do not require corresponding changes.
|
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.
<includes>restriction in-Pinprocessprofile so all ITs runE2ETestContext.createClient()/createClient(options)to detect InProcess mode and route env vars throughInProcessEnvGuardinstead ofcliPath/environment/cwd; addedCOPILOT_SDK_DEFAULT_CONNECTION=inprocessto surefire env vars and forkCount/parallel settings in the inprocess profileClientOptionsE2ETest, parts ofCopilotClientTest,PerSessionAuthTest,RpcServerMiscE2ETest,SlashCommandsIT) with@SkipInProcess("reason")mvn compile test-compilesucceedsmvn clean verify -Pinprocess/mvn clean verifyruns not completed due to time constraints — recommend running in CI to confirm full parity before merge