Files
Roland Huss 52f9e9e900 fix(cli): eliminate flaky subprocess integration tests (#2504)
Remove vm_slow_progress_before_ready from the subprocess-based
structured output tests. The 1.8s artificial delay (3x 600ms sleeps)
left only ~0.7s headroom within the 5s OPENSHELL_PROVISION_TIMEOUT,
causing sporadic TLS handshake failures on loaded Linux machines.

Root cause analysis:
- The CertificateRequired TLS alert occurs when the provision timeout
  fires mid-handshake, causing the client to drop the connection before
  presenting its certificate.
- tokio::process::Command is NOT the cause: it is a thin async wrapper
  around std::process::Command that delegates environment setup, process
  spawning, and I/O identically.
- The single-threaded tokio runtime is NOT the cause: testing with
  multi_thread flavor produces identical timing.
- TempDir lifetime is sound: the directory lives until .output().await
  returns, so certs exist for the subprocess's entire lifetime.
- Cert path resolution is deterministic: the subprocess resolves
  XDG_CONFIG_HOME/openshell/gateways/openshell/mtls/ correctly.

The subprocess tests exist to verify that the real CLI binary produces
clean stdout (no ANSI chrome, spinners, or progress text leaking into
structured output). This invariant does not depend on slow progress
events; the ProgressOutput::Silent branch that swallows progress events
is already covered by the in-process test
sandbox_create_keeps_waiting_while_vm_progress_arrives.

Fixes #2501

Signed-off-by: Roland Huß <rhuss@redhat.com>
2026-07-27 22:47:44 +00:00
..