Repository navigation
[RT-E6] test: characterize the launcher's spawn request and Windows strategy - #407
Merged
Merged
Conversation
…ahead of RT-E6 Pins today's observable behaviour that RT-E6 moves: the door's NUL refusals (message only; #401's ParamName and #400's bare-name path stay unpinned), the argv tail, the per-start password, the print-logs stderr route, the spawn failure and working-directory text, the Windows strategy's spawn and adoption failures, exit code 259 through the Windows watch, and the host signal table.
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.
What
Characterization tests for the launcher behaviour that RT-E6 (one child-process core for Hosting) moves or rewrites. Test-only. They pin today's observable behaviour, so that RT-E6 can show "no behaviour change" (operating rule: characterization before a refactor where coverage is thin, Hosting/Platform).
Pinned
OpenCodeServerSpawnRequestTests(new). ThroughStartWithSeamsAsync, with a recording spawn on each platform's strategy and a rooted command:--stdio --port 0after the supplied arguments (on Windows, the command line, the application path and the suspended start);OPENCODE_PASSWORDon every start, which replaces a caller's entry;OPENCODE_PRINT_LOGS=1, with stdin and stdout piped;WindowsServerChildTests(new):TreeKill = null!test; no existing method moves (U3-24's placement stays with TST-E4).WindowsExitWatchTests: one more row. Exit code 259 is reported as 259. RT-E6 step 4 moves the contender onto this watch to fix U4-01.PosixSignalNamesTests: the host's signal table (NameOf(10)isSIGBUSon macOS andSIGUSR1elsewhere). Step 6's single OS owner rewrites that selection.Not pinned, on purpose
ParamNameis"start"; the message is pinned and the parameter name is not) and A NUL in a bare launcher command name reports 'not found on PATH' instead of ArgumentException #400 (a NUL in a bare command name; the tests use rooted commands). RT-E6 fixes both, red to green.tests/OpenCode.Sdk.ServiceFixture/WindowsLauncherProbe.cs:23-25), sobun -estand-ins cannot reach it. RT-E6 step 3 owns those census paths and uses the native fixture mode (internal record: RT-E6 characterization inventory, "C9 outcome").Placement
Hosting/**test class whose file does not move in TST-E7.ManualTimeProvider; nothing arms a timer before the spawn fails. Real-clock sites in the tests do not grow.Proof
--port, a 31-byte password, both print-logs inversions, and the directory suffix with its blank-directory rule;70eef249, both branches on master78d47a16with E7-3a in. Every step passed for this branch: slopwatch, build, both format passes, clone-detector, verify-clones and election. The tests step ran 10,146 tests. Its only failure was the collapsed-assertion guard on two sites in the contender PR's new file, which that PR fixes; nothing failed in this branch's files.ManualTimeProviderand removed a racy before/after compare of the process-globalWindowsExitWatch.LiveWatches(the session leak guard covers it); then a fresh read-only Sol review.ProcessArgumentComposerthat production uses. It is now a fixed literal.Need help on this PR? Tag
@codesmith-botwith what you need.