## Context
This test was bugging me, so I had claude take a look at it.
## Self-Review Checklist
<!-- Check before requesting review: -->
- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments
- [x] The content is consistent with the [UI/UX
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [x] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable
Release Notes:
- N/A
@@ -3177,9 +3177,27 @@ mod tests {
);
});
- // Wait for the printf command to execute and produce output- // Use real time since parking is enabled- cx.executor().timer(Duration::from_millis(500)).await;
+ // Poll until the printf command produces output, rather than using a
+ // fixed sleep which is flaky on loaded machines.
+ let deadline = std::time::Instant::now() + Duration::from_secs(10);
+ loop {
+ let has_output = thread.read_with(cx, |thread, cx| {
+ let term = thread
+ .terminals
+ .get(&terminal_id)
+ .expect("terminal not found");
+ let content = term.read(cx).inner().read(cx).get_content();
+ content.contains("output_before_kill")
+ });
+ if has_output {
+ break;
+ }
+ assert!(
+ std::time::Instant::now() < deadline,
+ "Timed out waiting for printf output to appear in terminal",
+ );
+ cx.executor().timer(Duration::from_millis(50)).await;
+ }
// Get the acp_thread Terminal and kill it
let wait_for_exit = thread.update(cx, |thread, cx| {