From baaafddbebce3cc9cf074e606e8605dc656c1a3e Mon Sep 17 00:00:00 2001 From: Cole Miller Date: Tue, 18 Mar 2025 12:23:46 -0400 Subject: [PATCH] worktree: Fix tracking of git status scans and re-enable tests (#26926) Closes #ISSUE Release Notes: - N/A --- crates/worktree/src/worktree.rs | 6 +++++- crates/worktree/src/worktree_tests.rs | 22 ++++------------------ 2 files changed, 9 insertions(+), 19 deletions(-) diff --git a/crates/worktree/src/worktree.rs b/crates/worktree/src/worktree.rs index 41165022ca..2682821c3f 100644 --- a/crates/worktree/src/worktree.rs +++ b/crates/worktree/src/worktree.rs @@ -5461,6 +5461,7 @@ impl BackgroundScanner { } }; + inc_scans_running(&self.scans_running); status_updates .push(self.schedule_git_statuses_update(&mut state, local_repository)); } @@ -5493,9 +5494,12 @@ impl BackgroundScanner { }); } + let scans_running = self.scans_running.clone(); self.executor.spawn(async move { - let _updates_finished: Vec> = + let updates_finished: Vec> = join_all(status_updates).await; + let n = updates_finished.len(); + dec_scans_running(&scans_running, n as i32); }) } diff --git a/crates/worktree/src/worktree_tests.rs b/crates/worktree/src/worktree_tests.rs index 79f098028a..667ac9cead 100644 --- a/crates/worktree/src/worktree_tests.rs +++ b/crates/worktree/src/worktree_tests.rs @@ -845,9 +845,7 @@ async fn test_update_gitignore(cx: &mut TestAppContext) { }); } -// TODO fix flaky test -#[allow(dead_code)] -//#[gpui::test] +#[gpui::test] async fn test_write_file(cx: &mut TestAppContext) { init_test(cx); cx.executor().allow_parking(); @@ -2432,9 +2430,7 @@ async fn test_git_repository_for_path(cx: &mut TestAppContext) { // you can't rename a directory which some program has already open. This is a // limitation of the Windows. See: // https://stackoverflow.com/questions/41365318/access-is-denied-when-renaming-folder -// TODO: re-enable flaky test. -//#[gpui::test] -#[allow(dead_code)] +#[gpui::test] #[cfg_attr(target_os = "windows", ignore)] async fn test_file_status(cx: &mut TestAppContext) { init_test(cx); @@ -2627,9 +2623,7 @@ async fn test_file_status(cx: &mut TestAppContext) { }); } -// TODO fix flaky test -#[allow(unused)] -//#[gpui::test] +#[gpui::test] async fn test_git_repository_status(cx: &mut TestAppContext) { init_test(cx); cx.executor().allow_parking(); @@ -2743,9 +2737,7 @@ async fn test_git_repository_status(cx: &mut TestAppContext) { }); } -// TODO fix flaky test -#[allow(unused)] -//#[gpui::test] +#[gpui::test] async fn test_git_status_postprocessing(cx: &mut TestAppContext) { init_test(cx); cx.executor().allow_parking(); @@ -3541,8 +3533,6 @@ fn git_cherry_pick(commit: &git2::Commit<'_>, repo: &git2::Repository) { repo.cherrypick(commit, None).expect("Failed to cherrypick"); } -// TODO remove this once flaky test is fixed -#[allow(dead_code)] #[track_caller] fn git_stash(repo: &mut git2::Repository) { use git2::Signature; @@ -3552,8 +3542,6 @@ fn git_stash(repo: &mut git2::Repository) { .expect("Failed to stash"); } -// TODO remove this once flaky test is fixed -#[allow(dead_code)] #[track_caller] fn git_reset(offset: usize, repo: &git2::Repository) { let head = repo.head().expect("Couldn't get repo head"); @@ -3586,8 +3574,6 @@ fn git_checkout(name: &str, repo: &git2::Repository) { repo.checkout_head(None).expect("Failed to check out head"); } -// TODO remove this once flaky test is fixed -#[allow(dead_code)] #[track_caller] fn git_status(repo: &git2::Repository) -> collections::HashMap { repo.statuses(None)