IJPL-578 wait for indexes to be ready in tests after java language level change

GitOrigin-RevId: 89aa34d35c05284af90258b3208fb1198be8bc9e
This commit is contained in:
Andrei.Kuznetsov
2024-02-29 16:58:19 +01:00
committed by intellij-monorepo-bot
parent 42ee08fe05
commit 8539bcd407
68 changed files with 178 additions and 229 deletions

View File

@@ -20,7 +20,6 @@ import com.intellij.openapi.fileEditor.TextEditor;
import com.intellij.openapi.fileEditor.impl.text.TextEditorProvider;
import com.intellij.openapi.fileTypes.FileType;
import com.intellij.openapi.roots.ContentEntry;
import com.intellij.openapi.roots.LanguageLevelProjectExtension;
import com.intellij.openapi.roots.ModifiableRootModel;
import com.intellij.openapi.roots.ModuleRootManager;
import com.intellij.openapi.util.io.FileUtil;
@@ -593,6 +592,6 @@ public abstract class JavaCodeInsightTestCase extends JavaPsiTestCase {
}
protected void setLanguageLevel(@NotNull LanguageLevel level) {
LanguageLevelProjectExtension.getInstance(getProject()).setLanguageLevel(level);
IdeaTestUtil.setProjectLanguageLevel(getProject(), level);
}
}

View File

@@ -8,6 +8,7 @@ import com.intellij.openapi.application.Application;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.module.LanguageLevelUtil;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.project.ProjectManager;
import com.intellij.openapi.projectRoots.*;
import com.intellij.openapi.projectRoots.impl.JavaSdkImpl;
@@ -67,18 +68,32 @@ public final class IdeaTestUtil {
}
}
public static void setModuleLanguageLevel(@NotNull Module module, @Nullable LanguageLevel level) {
public static void setProjectLanguageLevel(@NotNull Project project, @NotNull LanguageLevel level, @NotNull Disposable disposable) {
LanguageLevel oldLevel = setProjectLanguageLevel(project, level);
Disposer.register(disposable, () -> {
setProjectLanguageLevel(project, oldLevel);
});
}
public static LanguageLevel setProjectLanguageLevel(@NotNull Project project, @NotNull LanguageLevel level) {
LanguageLevelProjectExtension projectExt = LanguageLevelProjectExtension.getInstance(project);
LanguageLevel oldLevel = projectExt.getLanguageLevel();
projectExt.setLanguageLevel(level);
IndexingTestUtil.waitUntilIndexesAreReady(project);
return oldLevel;
}
public static LanguageLevel setModuleLanguageLevel(@NotNull Module module, @Nullable LanguageLevel level) {
LanguageLevel prev = LanguageLevelUtil.getCustomLanguageLevel(module);
ModuleRootModificationUtil.updateModel(module, model -> model.getModuleExtension(LanguageLevelModuleExtension.class).setLanguageLevel(level));
IndexingTestUtil.waitUntilIndexesAreReady(module.getProject());
return prev;
}
public static void setModuleLanguageLevel(@NotNull Module module, @NotNull LanguageLevel level, @NotNull Disposable parentDisposable) {
LanguageLevel prev = LanguageLevelUtil.getCustomLanguageLevel(module);
IndexingTestUtil.waitUntilIndexesAreReady(module.getProject());
setModuleLanguageLevel(module, level);
LanguageLevel prev = setModuleLanguageLevel(module, level);
Disposer.register(parentDisposable, () -> {
setModuleLanguageLevel(module, prev);
IndexingTestUtil.waitUntilIndexesAreReady(module.getProject());
});
}

View File

@@ -4,7 +4,6 @@ package com.intellij.testFramework;
import com.intellij.openapi.module.ModuleType;
import com.intellij.openapi.module.StdModuleTypes;
import com.intellij.openapi.projectRoots.Sdk;
import com.intellij.openapi.roots.LanguageLevelProjectExtension;
import com.intellij.pom.java.LanguageLevel;
import com.intellij.psi.impl.JavaPsiFacadeEx;
import org.jetbrains.annotations.NotNull;
@@ -15,8 +14,7 @@ public abstract class JavaProjectTestCase extends HeavyPlatformTestCase {
@Override
protected void setUp() throws Exception {
super.setUp();
LanguageLevelProjectExtension.getInstance(getProject()).setLanguageLevel(getProjectLanguageLevel());
IndexingTestUtil.waitUntilIndexesAreReady(getProject());
IdeaTestUtil.setProjectLanguageLevel(getProject(), getProjectLanguageLevel());
myJavaFacade = JavaPsiFacadeEx.getInstanceEx(myProject);
}

View File

@@ -6,7 +6,6 @@ import com.intellij.openapi.module.Module;
import com.intellij.openapi.module.ModuleTypeId;
import com.intellij.openapi.projectRoots.Sdk;
import com.intellij.openapi.roots.ContentEntry;
import com.intellij.openapi.roots.LanguageLevelProjectExtension;
import com.intellij.openapi.roots.ModifiableRootModel;
import com.intellij.openapi.util.Disposer;
import com.intellij.pom.java.LanguageLevel;
@@ -83,14 +82,7 @@ public abstract class LightJavaCodeInsightTestCase extends LightPlatformCodeInsi
}
protected void setLanguageLevel(@NotNull LanguageLevel level) {
LanguageLevelProjectExtension extension = LanguageLevelProjectExtension.getInstance(getProject());
LanguageLevel prev = extension.getLanguageLevel();
extension.setLanguageLevel(level);
Disposer.register(myBeforeParentDisposeDisposable, () -> {
extension.setLanguageLevel(prev);
IndexingTestUtil.waitUntilIndexesAreReady(getProject());
});
IndexingTestUtil.waitUntilIndexesAreReady(getProject());
IdeaTestUtil.setProjectLanguageLevel(getProject(), level, myBeforeParentDisposeDisposable);
}
@Override

View File

@@ -5,11 +5,11 @@ import com.intellij.openapi.Disposable;
import com.intellij.openapi.application.PathManager;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.roots.LanguageLevelProjectExtension;
import com.intellij.pom.java.LanguageLevel;
import com.intellij.psi.JavaPsiFacade;
import com.intellij.psi.PsiElementFactory;
import com.intellij.psi.impl.PsiManagerEx;
import com.intellij.testFramework.IdeaTestUtil;
import com.intellij.testFramework.TestDataPath;
import com.intellij.testFramework.TestIndexingModeSupporter;
import com.intellij.testFramework.UsefulTestCase;
@@ -48,7 +48,7 @@ public abstract class JavaCodeInsightFixtureTestCase extends UsefulTestCase impl
myFixture.setTestDataPath(getTestDataPath());
myFixture.setUp();
LanguageLevelProjectExtension.getInstance(getProject()).setLanguageLevel(LanguageLevel.JDK_1_6);
IdeaTestUtil.setProjectLanguageLevel(getProject(), LanguageLevel.JDK_1_6);
}
protected boolean toAddSourceRoot() {

View File

@@ -9,7 +9,6 @@ import com.intellij.openapi.project.Project;
import com.intellij.openapi.projectRoots.Sdk;
import com.intellij.openapi.roots.ContentEntry;
import com.intellij.openapi.roots.LanguageLevelModuleExtension;
import com.intellij.openapi.roots.LanguageLevelProjectExtension;
import com.intellij.openapi.roots.ModifiableRootModel;
import com.intellij.pom.java.AcceptedLanguageLevelsSettings;
import com.intellij.pom.java.LanguageLevel;
@@ -120,8 +119,7 @@ public abstract class LightJavaCodeInsightFixtureTestCase extends UsefulTestCase
myFixture.setTestDataPath(getTestDataPath());
myFixture.setUp();
LanguageLevelProjectExtension.getInstance(getProject()).setLanguageLevel(LanguageLevel.JDK_1_6);
IndexingTestUtil.waitUntilIndexesAreReady(getProject());
IdeaTestUtil.setProjectLanguageLevel(getProject(), LanguageLevel.JDK_1_6);
}
@NotNull