IJPL-578 wait for indexes to be ready in tests after VFS refresh

GitOrigin-RevId: 8d0b450d68eefaa96d6d882ecfe18af32579fd3f
This commit is contained in:
Andrei.Kuznetsov
2024-02-29 18:00:19 +01:00
committed by intellij-monorepo-bot
parent 008bb472fa
commit 89605ab0a7
15 changed files with 52 additions and 46 deletions

View File

@@ -7,8 +7,10 @@ import com.intellij.openapi.roots.ProjectRootManager;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.openapi.vfs.LocalFileSystem;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.openapi.vfs.VirtualFileManager;
import com.intellij.testFramework.*;
import com.intellij.testFramework.HeavyPlatformTestCase;
import com.intellij.testFramework.JavaProjectTestCase;
import com.intellij.testFramework.PsiTestUtil;
import com.intellij.testFramework.VfsTestUtil;
import java.io.File;
import java.io.IOException;
@@ -43,7 +45,7 @@ public class ProjectFileIndexRestoreTest extends JavaProjectTestCase {
myTestDirPath = testDir.getPath();
// to not interfere with previous test firing vfs events
VirtualFileManager.getInstance().syncRefresh();
VfsTestUtil.syncRefresh();
}
public void testDeepDeleteAndRecreate() throws IOException {

View File

@@ -10,7 +10,6 @@ import com.intellij.openapi.fileEditor.FileDocumentManager;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.openapi.vfs.VfsUtilCore;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.openapi.vfs.VirtualFileManager;
import com.intellij.psi.*;
import com.intellij.psi.impl.source.SourceTreeToPsiMap;
import com.intellij.psi.search.GlobalSearchScope;
@@ -18,6 +17,7 @@ import com.intellij.refactoring.rename.RenameProcessor;
import com.intellij.testFramework.IdeaTestUtil;
import com.intellij.testFramework.JavaPsiTestCase;
import com.intellij.testFramework.PsiTestUtil;
import com.intellij.testFramework.VfsTestUtil;
import java.io.File;
import java.io.IOException;
@@ -69,7 +69,7 @@ public class ArrayIndexOutOfBoundsTest extends JavaPsiTestCase {
catch (IOException e) {
LOG.error(e);
}
VirtualFileManager.getInstance().syncRefresh();
VfsTestUtil.syncRefresh();
};
CommandProcessor.getInstance().executeCommand(myProject, runnable, "", null);
}
@@ -79,7 +79,7 @@ public class ArrayIndexOutOfBoundsTest extends JavaPsiTestCase {
final PsiPackage aPackage = JavaPsiFacade.getInstance(myPsiManager.getProject()).findPackage("anotherBla");
assertNotNull("Package anotherBla not found", aPackage);
WriteCommandAction.runWriteCommandAction(null, () -> aPackage.getDirectories()[0].delete());
VirtualFileManager.getInstance().syncRefresh();
VfsTestUtil.syncRefresh();
};
CommandProcessor.getInstance().executeCommand(myProject, runnable, "", null);
}

View File

@@ -29,10 +29,10 @@ import com.intellij.openapi.util.registry.Registry;
import com.intellij.openapi.vfs.LocalFileSystem;
import com.intellij.openapi.vfs.VfsUtilCore;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.openapi.vfs.VirtualFileManager;
import com.intellij.psi.*;
import com.intellij.refactoring.rename.RenameProcessor;
import com.intellij.testFramework.PlatformTestUtil;
import com.intellij.testFramework.VfsTestUtil;
import kotlin.text.Charsets;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
@@ -1186,7 +1186,7 @@ public class GlobalUndoTest extends UndoTestCase implements TestDialog {
}
private static void refreshFileSystem() {
VirtualFileManager.getInstance().syncRefresh();
VfsTestUtil.syncRefresh();
}
private void deleteInCommand(final VirtualFile f) {

View File

@@ -23,6 +23,7 @@ import com.intellij.psi.impl.source.PostprocessReformattingAspect;
import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.testFramework.JavaPsiTestCase;
import com.intellij.testFramework.PsiTestUtil;
import com.intellij.testFramework.VfsTestUtil;
import com.intellij.util.ui.UIUtil;
import java.io.File;
@@ -330,7 +331,7 @@ public class FileManagerTest extends JavaPsiTestCase {
assertFalse(oldTimestamp == newTimestamp);
VirtualFileManager.getInstance().syncRefresh();
VfsTestUtil.syncRefresh();
UIUtil.dispatchAllInvocationEvents();
fileManager.checkConsistency();

View File

@@ -3,7 +3,6 @@ package com.intellij.openapi.roots.impl
import com.intellij.openapi.Disposable
import com.intellij.openapi.application.runReadAction
import com.intellij.openapi.application.runWriteActionAndWait
import com.intellij.openapi.module.Module
import com.intellij.openapi.roots.ModuleRootModificationUtil
import com.intellij.openapi.roots.ProjectFileIndex
@@ -15,6 +14,7 @@ import com.intellij.openapi.vfs.newvfs.BulkFileListener
import com.intellij.openapi.vfs.newvfs.events.VFileCreateEvent
import com.intellij.openapi.vfs.newvfs.events.VFileEvent
import com.intellij.testFramework.HeavyPlatformTestCase
import com.intellij.testFramework.VfsTestUtil
import com.intellij.testFramework.junit5.TestApplication
import com.intellij.testFramework.junit5.TestDisposable
import com.intellij.testFramework.rules.ProjectModelExtension
@@ -89,9 +89,7 @@ class UpdateProjectFileIndexOnVfsChangesTest {
assertTrue(finished)
}
else {
runWriteActionAndWait {
VirtualFileManager.getInstance().syncRefresh()
}
VfsTestUtil.syncRefresh()
}
listener.assertNoErrors()
}

View File

@@ -34,6 +34,26 @@ public final class VfsTestUtil {
private VfsTestUtil() { }
/**
* Invokes VirtualFileManager.syncRefresh() and waits until indexes are ready after VFS refresh
*/
public static void syncRefresh() {
if (ApplicationManager.getApplication().isWriteAccessAllowed()) {
VirtualFileManager.getInstance().syncRefresh();
IndexingTestUtil.waitUntilIndexesAreReadyInAllOpenedProjects();
}
else if (ApplicationManager.getApplication().isDispatchThread()) {
WriteAction.compute(VirtualFileManager.getInstance()::syncRefresh);
IndexingTestUtil.waitUntilIndexesAreReadyInAllOpenedProjects();
}
else {
ApplicationManager.getApplication().invokeAndWait(() -> {
WriteAction.compute(VirtualFileManager.getInstance()::syncRefresh);
});
IndexingTestUtil.waitUntilIndexesAreReadyInAllOpenedProjects();
}
}
public static @NotNull VirtualFile createFile(@NotNull VirtualFile root, @NotNull String relativePath) {
return createFile(root, relativePath, (byte[])null);
}

View File

@@ -1,7 +1,6 @@
// Copyright 2000-2021 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package com.intellij.openapi.vcs.changes.committed;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.util.EmptyRunnable;
import com.intellij.openapi.util.Pair;
import com.intellij.openapi.vcs.ProjectLevelVcsManager;
@@ -15,10 +14,10 @@ import com.intellij.openapi.vcs.update.FileGroup;
import com.intellij.openapi.vcs.update.UpdatedFiles;
import com.intellij.openapi.vcs.versionBrowser.CommittedChangeList;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.openapi.vfs.VirtualFileManager;
import com.intellij.testFramework.HeavyPlatformTestCase;
import com.intellij.testFramework.PsiTestUtil;
import com.intellij.testFramework.RunAll;
import com.intellij.testFramework.VfsTestUtil;
import com.intellij.util.messages.MessageBusConnection;
import com.intellij.vcsUtil.VcsUtil;
import org.jetbrains.annotations.NotNull;
@@ -309,9 +308,7 @@ public class CommittedChangesCacheTest extends HeavyPlatformTestCase {
private File createTestFile(final String fileName) throws IOException {
final File testFile = new File(myContentRoot.getPath(), fileName);
testFile.createNewFile();
ApplicationManager.getApplication().runWriteAction(() -> {
VirtualFileManager.getInstance().syncRefresh();
});
VfsTestUtil.syncRefresh();
return testFile;
}

View File

@@ -1,13 +1,12 @@
// Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package com.intellij.openapi.vcs.changes.committed;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.openapi.vcs.FilterDescendantVirtualFiles;
import com.intellij.openapi.vfs.LocalFileSystem;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.openapi.vfs.VirtualFileManager;
import com.intellij.testFramework.HeavyPlatformTestCase;
import com.intellij.testFramework.VfsTestUtil;
import org.jetbrains.annotations.NotNull;
import java.io.File;
@@ -66,8 +65,6 @@ public class FilterDescendantFilesTest extends HeavyPlatformTestCase {
}
private static void syncRefresh() {
ApplicationManager.getApplication().runWriteAction(() -> {
VirtualFileManager.getInstance().syncRefresh();
});
VfsTestUtil.syncRefresh();
}
}

View File

@@ -3,11 +3,10 @@ package org.jetbrains.plugins.gradle.compiler;
import com.intellij.openapi.roots.OrderEnumerator;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.openapi.vfs.VirtualFileManager;
import com.intellij.task.ProjectTaskContext;
import com.intellij.task.ProjectTaskListener;
import com.intellij.task.ProjectTaskManager;
import com.intellij.testFramework.EdtTestUtil;
import com.intellij.testFramework.VfsTestUtil;
import com.intellij.util.PathUtil;
import com.intellij.util.PathsList;
import com.intellij.util.messages.MessageBusConnection;
@@ -54,7 +53,7 @@ public class GradleDelegatedBuildTest extends GradleDelegatedBuildTestCase {
"project.impl", "project.impl.main", "project.impl.test");
EdtTestUtil.runInEdtAndWait(() -> VirtualFileManager.getInstance().syncRefresh());
VfsTestUtil.syncRefresh();
PathsList pathsBeforeMake = new PathsList();
OrderEnumerator.orderEntries(getModule("project.main")).withoutSdk().recursively().runtimeOnly().classes()
.collectPaths(pathsBeforeMake);

View File

@@ -6,13 +6,13 @@ import com.intellij.openapi.fileEditor.FileDocumentManager;
import com.intellij.openapi.vfs.LocalFileSystem;
import com.intellij.openapi.vfs.VfsUtilCore;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.openapi.vfs.VirtualFileManager;
import com.intellij.psi.*;
import com.intellij.psi.impl.source.PostprocessReformattingAspect;
import com.intellij.refactoring.PackageWrapper;
import com.intellij.refactoring.move.moveClassesOrPackages.MoveClassesOrPackagesProcessor;
import com.intellij.refactoring.move.moveClassesOrPackages.SingleSourceRootMoveDestination;
import com.intellij.testFramework.PlatformTestUtil;
import com.intellij.testFramework.VfsTestUtil;
import com.intellij.testFramework.fixtures.LightJavaCodeInsightFixtureTestCase;
import org.jetbrains.plugins.groovy.util.TestUtils;
@@ -93,7 +93,7 @@ public class GroovyMoveScriptTest extends LightJavaCodeInsightFixtureTestCase {
//File expectedRoot = new File(getTestDataPath() + testName + "/after");
PostprocessReformattingAspect.getInstance(getProject()).doPostponedFormatting();
VirtualFileManager.getInstance().syncRefresh();
VfsTestUtil.syncRefresh();
try {
PlatformTestUtil.assertDirectoriesEqual(expectedRoot, actualRoot);
}

View File

@@ -10,7 +10,6 @@ import com.intellij.openapi.application.runInEdt
import com.intellij.openapi.application.runWriteAction
import com.intellij.openapi.externalSystem.service.project.manage.ExternalProjectsManagerImpl
import com.intellij.openapi.module.ModuleManager
import com.intellij.openapi.progress.runBlockingCancellable
import com.intellij.openapi.progress.runBlockingMaybeCancellable
import com.intellij.openapi.project.DumbService
import com.intellij.openapi.project.Project
@@ -21,9 +20,9 @@ import com.intellij.openapi.vcs.changes.ChangeListManager
import com.intellij.openapi.vcs.changes.ChangeListManagerImpl
import com.intellij.openapi.vfs.LocalFileSystem
import com.intellij.openapi.vfs.VfsUtil
import com.intellij.openapi.vfs.VirtualFileManager
import com.intellij.testFramework.TestApplicationManager
import com.intellij.testFramework.UsefulTestCase.assertTrue
import com.intellij.testFramework.VfsTestUtil
import com.intellij.testFramework.runInEdtAndWait
import org.jetbrains.kotlin.idea.configuration.getModulesWithKotlinFiles
import org.jetbrains.kotlin.idea.configuration.ui.KotlinConfigurationCheckerService
@@ -204,9 +203,7 @@ enum class ProjectOpenAction {
VfsUtil.markDirtyAndRefresh(false, true, true, parent)
}
runInEdtAndWait {
VirtualFileManager.getInstance().syncRefresh()
}
VfsTestUtil.syncRefresh()
//runWriteAction { project.save() }
}

View File

@@ -17,26 +17,21 @@ package org.jetbrains.idea.maven.dom
import com.intellij.maven.testFramework.MavenDomTestCase
import com.intellij.openapi.application.ApplicationManager
import com.intellij.openapi.application.EDT
import com.intellij.openapi.application.readAction
import com.intellij.openapi.editor.Document
import com.intellij.openapi.vfs.VirtualFile
import com.intellij.openapi.vfs.VirtualFileManager
import com.intellij.openapi.vfs.newvfs.BulkFileListener
import com.intellij.openapi.vfs.newvfs.events.VFileEvent
import kotlinx.coroutines.Dispatchers
import com.intellij.testFramework.VfsTestUtil
import kotlinx.coroutines.runBlocking
import kotlinx.coroutines.withContext
import org.jetbrains.idea.maven.utils.MavenLog
import org.junit.Test
class MavenDomSoftReferencesInParentTest : MavenDomTestCase() {
override fun setUp() = runBlocking {
super.setUp()
withContext(Dispatchers.EDT) {
VirtualFileManager.getInstance().syncRefresh()
}
Unit
VfsTestUtil.syncRefresh()
}
@Test

View File

@@ -20,7 +20,6 @@ import com.intellij.openapi.fileEditor.FileDocumentManager
import com.intellij.openapi.util.Comparing
import com.intellij.openapi.vfs.VfsUtilCore
import com.intellij.openapi.vfs.VirtualFile
import com.intellij.openapi.vfs.VirtualFileManager
import com.intellij.psi.PsiElement
import com.intellij.psi.PsiFile
import com.intellij.psi.PsiManager
@@ -35,6 +34,7 @@ import com.intellij.refactoring.rename.RenameHandlerRegistry
import com.intellij.refactoring.rename.inplace.VariableInplaceRenameHandler
import com.intellij.refactoring.util.CommonRefactoringUtil.RefactoringErrorHintException
import com.intellij.testFramework.MapDataContext
import com.intellij.testFramework.VfsTestUtil
import com.intellij.testFramework.fixtures.CodeInsightTestFixture
import com.intellij.testFramework.fixtures.CodeInsightTestUtil
import com.intellij.testFramework.fixtures.IdeaTestFixtureFactory
@@ -395,7 +395,7 @@ abstract class MavenDomTestCase : MavenMultiVersionImportingTestCase() {
protected suspend fun checkHighlighting(f: VirtualFile) {
withContext(Dispatchers.EDT) {
MavenLog.LOG.warn("checkHighlighting started")
VirtualFileManager.getInstance().syncRefresh()
VfsTestUtil.syncRefresh()
MavenLog.LOG.warn("checkHighlighting: VFS refreshed")
FileDocumentManager.getInstance().saveAllDocuments()
UIUtil.dispatchAllInvocationEvents()

View File

@@ -6,13 +6,13 @@ import com.intellij.ide.util.gotoByName.ChooseByNamePopup
import com.intellij.ide.util.gotoByName.ChooseByNameViewModel
import com.intellij.mock.MockProgressIndicator
import com.intellij.openapi.project.Project
import com.intellij.openapi.vfs.VirtualFileManager
import com.intellij.searchEverywhereMl.SearchEverywhereTabWithMlRanking
import com.intellij.searchEverywhereMl.ranking.core.features.FeaturesProviderCache
import com.intellij.searchEverywhereMl.ranking.core.features.HeavyFeaturesProviderTestCase
import com.intellij.searchEverywhereMl.ranking.core.features.SearchEverywhereElementFeaturesProvider
import com.intellij.searchEverywhereMl.ranking.core.features.SearchEverywhereFileFeaturesProvider
import com.intellij.searchEverywhereMl.ranking.core.model.SearchEverywhereModelProvider
import com.intellij.testFramework.VfsTestUtil
internal abstract class SearchEverywhereRankingModelTest
: HeavyFeaturesProviderTestCase<SearchEverywhereFileFeaturesProvider>(SearchEverywhereFileFeaturesProvider::class.java) {
@@ -24,7 +24,7 @@ internal abstract class SearchEverywhereRankingModelTest
protected abstract fun filterElements(searchQuery: String): List<FoundItemDescriptor<*>>
protected fun performSearchFor(searchQuery: String, featuresProviderCache: FeaturesProviderCache? = null): RankingAssertion {
VirtualFileManager.getInstance().syncRefresh()
VfsTestUtil.syncRefresh()
val rankedElements: List<FoundItemDescriptor<*>> = filterElements(searchQuery)
.associateWith { getMlWeight(it, searchQuery, featuresProviderCache) }
.entries

View File

@@ -25,11 +25,11 @@ import com.intellij.openapi.editor.RangeMarker;
import com.intellij.openapi.util.TextRange;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.openapi.vfs.VfsUtil;
import com.intellij.openapi.vfs.VirtualFileManager;
import com.intellij.psi.*;
import com.intellij.psi.codeStyle.CodeStyleManager;
import com.intellij.psi.xml.*;
import com.intellij.testFramework.LightJavaCodeInsightTestCase;
import com.intellij.testFramework.VfsTestUtil;
import com.intellij.util.ArrayUtil;
import com.intellij.util.IncorrectOperationException;
import com.intellij.util.LocalTimeCounter;
@@ -748,7 +748,7 @@ public class XmlTagTest extends LightJavaCodeInsightTestCase {
FileUtil.writeToFile(tempFile, text);
ApplicationManager.getApplication().runWriteAction(() -> CommandProcessor.getInstance().executeCommand(getProject(), () -> {
VirtualFileManager.getInstance().syncRefresh();
VfsTestUtil.syncRefresh();
XmlFile file ;//createTemporaryFile("wpd.xml", text));
try {
file = (XmlFile)getPsiManager().findFile(VfsUtil.findFileByURL(tempFile.toURL()));