Stabilize cross-platform tests and directory-change fork permissions (#59369)

## Why

Tests need to distinguish slow subprocess startup from operation timeouts and wait for asynchronous work before asserting results or cleaning up fixtures.

## What changed

- Synchronize subprocess readiness, queued-turn completion, and matching UI events; allow more time for cold startup and separate startup from shutdown deadlines.
- Adapt Windows fixtures and permission expectations, provide the voice-host test runtime DLL path, and normalize platform paths and animated status snapshots.
- Use current configuration permissions when changing directories in embedded TUI sessions, while retaining saved permissions for remote sessions.
- Allow the release prompt-prefix comparison to accept the exact image-tool description update that removes image detail options, and refresh the corresponding tool snapshot.

## Testing

Extend inherited-session metadata coverage to both legacy and paginated thread history, including persisted history mode and revision-aware resume.

GitOrigin-RevId: 0afb38403fc0adb0d83175344749584f0cdf9979
This commit is contained in:
Dmitriy Kovalenko
2026-11-04 09:51:28 +00:00
committed by copyberry
parent 71a4c07036
commit 021fccb046
35 changed files with 417 additions and 116 deletions
@@ -414,7 +414,8 @@ async fn executor_refresh_survives_cancelled_caller() {
// Isolate endpoint overrides; release the response only after the caller
// is cancelled, with no sleep or race against the HTTP response.
for mode in ["proactive", "recovery", "logout", "replacement", "timeout"] {
tokio::time::timeout(Duration::from_secs(30), async {
// Allow process startup and teardown around the 30-second refresh deadline.
tokio::time::timeout(Duration::from_secs(90), async {
let listener = tokio::net::TcpListener::bind("127.0.0.1:0").await.unwrap();
let endpoint = format!("http://{}/token", listener.local_addr().unwrap());
let mut child = tokio::process::Command::new(std::env::current_exe().unwrap())