Expand CI test coverage - #331
Open
elprans wants to merge 9 commits into
Open
Conversation
elprans
force-pushed
the
elprans/fix-ci-workflow
branch
from
August 26, 2026 18:26
96d9869 to
bcbea12
Compare
scotttrinh
approved these changes
Aug 26, 2026
scotttrinh
left a comment
Collaborator
There was a problem hiding this comment.
Change looks good to me!
elprans
force-pushed
the
elprans/fix-ci-workflow
branch
from
August 26, 2026 19:48
0483506 to
b15440d
Compare
|
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
|
Run lint and type checking once instead of repeating them across the Python matrix, but expand tests and distribution builds to macOS and Windows. Use `poe` directly instead of calling legacy scripts. Fix harness portability (mainly by rewriting things from shell to Python).
The test released the mocked resume after submitting the second thread, but submission did not guarantee that the thread had joined the shared condition. Slower Windows scheduling could therefore miss the intended concurrent path. Wait until the second acquisition is actually blocked on the condition before releasing the resume.
Sandbox processes run on Linux, so host signal constants are not a reliable description of the remote process API (because the host OS on which the SDK runs might not be Linux). Expose a portable Linux-derived `ProcessSignal` enum and use it for built-in process operations. Keep accepting `signal.Signals` for compatibility while deprecating it in favor of the host-independent enum.
Workflow code runs against a Linux runtime contract, but the in-process determinism sandbox exposed Windows paths, platform identity, and clock constants when tests ran on Windows. Model the Linux contract explicitly to make workflow SDK portable.
Uvicorn's force_exit flag only skips its connection and task waits. On Windows, the server loop can remain blocked after that flag is set, leaving the session-scoped VQS fixture alive after every test has passed. Run the embedded server inside an AnyIO cancellation scope and cancel the actual serve task when bounded graceful shutdown expires. This lets the server thread unwind and close its event loop deterministically.
Python 3.14 lazily imports struct while zipimport checks ZIP64 data. On Windows, the ggt console launcher is present on sys.path and is probed as a possible zip archive. Resolving struct through the sandbox importer then re-enters the same launcher probe and exhausts the recursion limit. Seed struct into each sandbox module table so zipimport can finish bootstrapping without recursively invoking the sandbox finder.
Textual waits for screen processing after each simulated key press. On a saturated Windows runner that wait can outlast the application's 500 ms double-escape window, causing either the armed-state or exit assertion to race the timer. Use a generous timer in interaction tests while keeping the dedicated short-timeout test responsible for verifying expiration.
Node writes the workflow CLI JSON stream as UTF-8, but text-mode subprocesses otherwise use the host locale. Windows Python 3.10 chose cp1252 and its reader threads failed on valid UTF-8 payload bytes. Specify UTF-8 explicitly so CLI interop output is decoded consistently on every CI host.
Frozen importlib can continue into meta-path finders even when a module is present in the sandbox's dispatching module table. On Windows, GGT's finder then probes its console launcher as a zip archive, whose lazy struct import re-enters the same finder until recursion is exhausted. Return imports already satisfied by the sandbox table directly. Keep normal importlib handling when a from-import still needs to resolve a child module.
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.
Run lint and type checking once instead of repeating them across the
Python matrix, but expand tests and distribution builds to macOS
and Windows. Use
poedirectly instead of calling legacy scripts.