Repository navigation
[TST-380] test: shells, VCS, projects and experimental operations run against the real server - #423
Merged
Merged
Conversation
…he real server Part of #380 (PR 3 of 4). Nine live tests on the simulated-drive fixture. Each fails at its oracle when its operation is made a no-op that returns a valid success shape, or sent to the wrong operation.
This was referenced Oct 17, 2026
Merged
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.
📝 Description
What does this PR do?
It adds nine real-server tests for operations that had none: shells, VCS, projects, and the experimental MCP and session-instruction operations. They run on the existing simulated-drive fixture, with no new fixture, provider, support type or dependency.
CreateShellAsyncShellsClientLiveTests.CreateShellAsync_Should_Start_The_Command_When_The_Workspace_Is_OwnedGetOutputAsyncShellClientLiveTests.GetOutputAsync_Should_Page_The_Captured_Bytes_When_A_Command_Has_ExitedInitializeRepositoryAsyncVcsClientLiveTests.InitializeRepositoryAsync_Should_Refuse_Reinitialization_When_The_First_Call_Initialized_GitUpdateProjectAsyncProjectsClientLiveTests.UpdateProjectAsync_Should_Persist_The_Display_Name_When_A_Project_ExistsAddMcpServerAsyncExperimentalClientLiveTests.AddMcpServerAsync_Should_Register_The_Disabled_Entry_When_No_Connection_Is_RequestedListSessionInstructionsEntriesAsyncExperimentalClientLiveTests.ListSessionInstructionsEntriesAsync_Should_Return_The_Entry_When_It_Was_SetRemoveMcpServerAsyncExperimentalClientLiveTests.RemoveMcpServerAsync_Should_Remove_The_Entry_When_It_ExistsRemoveSessionInstructionsEntryAsyncExperimentalClientLiveTests.RemoveSessionInstructionsEntryAsync_Should_Hide_The_Entry_When_It_ExistsSetSessionInstructionsEntryAsyncExperimentalClientLiveTests.SetSessionInstructionsEntryAsync_Should_Replace_The_Value_When_The_Key_Already_ExistsShellsClientLiveTests,ShellClientLiveTestsandExperimentalClientLiveTestsare new live classes, with the same fixture andServerProcessconstraint as their siblings..invalidURL, so no connection is attempted.Part of #380 (PR 3 of 4).
Out: E02
ExperimentalClient.GenerateTextAsync. A no-op mutant leaves the drive's invocation waiter pending before the text oracle is reached. Proving the test therefore needs per-call cancellation in the waiter, which is more than the short arrange this sweep allows. The reason is recorded on #380, and this does not claim the operation is unreachable.🔄 Type of Change
🎯 Protocol & API Surface
external/,spec/orsrc/was touched🧪 Testing
Each test is shown to catch the missing or wrong operation. It is green, then red at its oracle, then green again; the mutations are not committed.
"s", received""{}Expected to not contain sdk-disabled-…, in 3.7 sEvery failure is an assertion, never a hang guard or timeout. Where an event wait follows (H01, E01, E04), the test checks finite state first, so a no-op cannot stall it.
Review. A fresh read-only review found one defect. E04 waited for the removal event before checking the list, so a true no-op would stall at the event barrier instead of failing at the oracle. The list check now comes first, and the E04 row above is the proof with a true no-op. The review found nothing else.
✅ Completion Gate
Local check (
quality-gates.md) on headfd1e5242, basee03fc68b, idle host. Every step's own exit code was read:dotnet build --configuration Release: 0 warnings, 0 errorsdotnet format whitespace/dotnet format style --severity warn: no changesverify-clones: passed, 0 new; no baseline changeOpenCode.Sdk.Tools.Tests(all but NativeAot): 1979, 0 failedOpenCode.Sdk.Tests(all but ServiceElection/NativeAot): 8317, 0 failedThe host runs Bun 1.4.3, a maintainer-named off-pin host (
OPENCODE_SDK_TESTS_BUN_MISMATCH=allow); the pin is 1.4.2.✅ Code Quality Checklist
Need help on this PR? Tag
@codesmith-botwith what you need.