-
Notifications
You must be signed in to change notification settings - Fork 957
fix(windows): contain the fabric producer and remove timeout-only stabilizers #2879
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
bcefa2b
c1b74f7
285b6d4
1ddcbe9
b1dcaf5
6e0e1d3
44aaf70
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -47,6 +47,14 @@ afterAll(() => stallingFakePowerShell?.cleanup()); | |
| expect(probe.ok, `fake PowerShell fixture at ${stallingFakePowerShell.executable} did not run: ${probe.detail}`).toBe(true); | ||
| }); | ||
|
|
||
| test("a hung PowerShell fixture probe is killed at its local deadline", async () => { | ||
| const startedAt = Date.now(); | ||
| const probe = await probeWindowsPowerShellFixture(stallingFakePowerShell, 25); | ||
| expect(probe.ok).toBe(false); | ||
| expect(probe.detail).toContain("timed out after 25ms"); | ||
| expect(Date.now() - startedAt).toBeLessThan(2_000); | ||
|
Comment on lines
+53
to
+55
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🩺 Stability & Availability | 🟡 Minor | ⚡ Quick win Prove that the timeout path terminates the child. Lines 53-55 accept a timeout even when process termination regresses. The fixture exits naturally after 200 ms. If Use a fixture that remains alive longer than both reap waits. Then assert that the timeout result confirms successful reaping. Prefer a structured 🤖 Prompt for AI Agents |
||
| }); | ||
|
|
||
| test("not_running when no app-server process exists", () => { | ||
| const status = collectCodexAppServerCatalogState({ | ||
| listSnapshots: () => [], | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
When an executor or an imported library leaves any file in
os.tmpdir()—the scenario the preceding comment describes as common—these assignments place it at<scratchRoot>/.tmp. After the producer returns,verifyExactTreeDiffV1walks the entire scratch root and requires exactly one file namedsrc/value.txt(src/lab/fabric/verifier.ts:24-32), so an otherwise correct patch is recorded asunexpected_tree_shape, or evenbudget_exhaustedfor larger temp output. The added regression only resolvestmpdir()and never writes there, so it misses this interaction; use a separately contained temp directory outside the verified fixture tree, or safely remove/segregate it before verification while retaining resource limits, and cover a temp-writing executor.AGENTS.md reference: AGENTS.md:L336-L339
Useful? React with 👍 / 👎.