Make pull diagnostics remote test more robust (#33057)

Follow-up of https://github.com/zed-industries/zed/pull/33028

Due to request races, we cannot predict the amount of result_id s that
we'll get. Ensure their amount grows monotonically each time.

This time, iterations=5000 did not fail for me.

Release Notes:

- N/A
This commit is contained in:
Kirill Bulatov 2025-06-19 22:27:47 +03:00 committed by GitHub
parent b89ddf3a6e
commit bca1a9145c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -2656,10 +2656,9 @@ async fn test_lsp_pull_diagnostics(cx_a: &mut TestAppContext, cx_b: &mut TestApp
}
});
{
assert_eq!(
&BTreeSet::from_iter([None]),
diagnostics_pulls_result_ids.lock().await.deref(),
"Initial diagnostics pulls should not reuse any result ids"
assert!(
diagnostics_pulls_result_ids.lock().await.len() > 0,
"Initial diagnostics pulls should report None at least"
);
assert_eq!(
0,
@ -2689,18 +2688,6 @@ async fn test_lsp_pull_diagnostics(cx_a: &mut TestAppContext, cx_b: &mut TestApp
"After client lib.rs edits, the workspace diagnostics request should follow"
);
executor.run_until_parked();
{
assert_eq!(
2,
diagnostics_pulls_result_ids.lock().await.len(),
"One new id for a client's lib.rs pull"
);
assert_eq!(
2,
workspace_diagnostics_pulls_result_ids.lock().await.len(),
"Two more entries for 2 currently opened files that previously pulled the diagnostics"
);
}
editor_b_main.update_in(cx_b, |editor, window, cx| {
editor.move_to_end(&MoveToEnd, window, cx);
@ -2720,14 +2707,6 @@ async fn test_lsp_pull_diagnostics(cx_a: &mut TestAppContext, cx_b: &mut TestApp
"After client main.rs edits, the workspace diagnostics pull should follow"
);
executor.run_until_parked();
{
assert_eq!(
3,
diagnostics_pulls_result_ids.lock().await.len(),
"One new id for a client's main.rs pull"
);
assert_eq!(4, workspace_diagnostics_pulls_result_ids.lock().await.len());
}
editor_a_main.update_in(cx_a, |editor, window, cx| {
editor.move_to_end(&MoveToEnd, window, cx);
@ -2747,9 +2726,17 @@ async fn test_lsp_pull_diagnostics(cx_a: &mut TestAppContext, cx_b: &mut TestApp
"After host main.rs edits, the workspace diagnostics pull should follow"
);
executor.run_until_parked();
let diagnostic_pulls_result_ids = diagnostics_pulls_result_ids.lock().await.len();
let workspace_pulls_result_ids = workspace_diagnostics_pulls_result_ids.lock().await.len();
{
assert_eq!(5, diagnostics_pulls_result_ids.lock().await.len());
assert_eq!(6, workspace_diagnostics_pulls_result_ids.lock().await.len());
assert!(
diagnostic_pulls_result_ids > 1,
"Should have sent result ids when pulling diagnostics"
);
assert!(
workspace_pulls_result_ids > 1,
"Should have sent result ids when pulling workspace diagnostics"
);
}
fake_language_server
@ -2769,12 +2756,14 @@ async fn test_lsp_pull_diagnostics(cx_a: &mut TestAppContext, cx_b: &mut TestApp
"Another workspace diagnostics pull should happen after the diagnostics refresh server request"
);
{
assert_eq!(
5,
diagnostics_pulls_result_ids.lock().await.len(),
assert!(
diagnostics_pulls_result_ids.lock().await.len() == diagnostic_pulls_result_ids,
"Pulls should not happen hence no extra ids should appear"
);
assert_eq!(8, workspace_diagnostics_pulls_result_ids.lock().await.len(),);
assert!(
workspace_diagnostics_pulls_result_ids.lock().await.len() > workspace_pulls_result_ids,
"More workspace diagnostics should be pulled"
);
}
editor_b_lib.update(cx_b, |editor, cx| {
let snapshot = editor.buffer().read(cx).snapshot(cx);