mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
test that cached completion copy file caches are correctly cleared
This commit is contained in:
+18
@@ -4,11 +4,13 @@
|
||||
*/
|
||||
package com.intellij.codeInsight.completion
|
||||
import com.intellij.JavaTestUtil
|
||||
import com.intellij.codeInsight.generation.OverrideImplementExploreUtil
|
||||
import com.intellij.codeInsight.lookup.LookupElement
|
||||
import com.intellij.codeInsight.lookup.LookupManager
|
||||
import com.intellij.codeInsight.lookup.impl.LookupImpl
|
||||
import com.intellij.openapi.application.ApplicationManager
|
||||
import com.intellij.openapi.application.ex.PathManagerEx
|
||||
import com.intellij.openapi.extensions.LoadingOrder
|
||||
import com.intellij.openapi.module.StdModuleTypes
|
||||
import com.intellij.openapi.roots.ContentEntry
|
||||
import com.intellij.openapi.roots.ModifiableRootModel
|
||||
@@ -17,7 +19,9 @@ import com.intellij.openapi.roots.SourceFolder
|
||||
import com.intellij.openapi.vfs.LocalFileSystem
|
||||
import com.intellij.openapi.vfs.VirtualFile
|
||||
import com.intellij.psi.JavaPsiFacade
|
||||
import com.intellij.psi.PsiClass
|
||||
import com.intellij.psi.search.GlobalSearchScope
|
||||
import com.intellij.psi.util.PsiTreeUtil
|
||||
import com.intellij.testFramework.PsiTestUtil
|
||||
import com.intellij.testFramework.fixtures.JavaCodeInsightFixtureTestCase
|
||||
/**
|
||||
@@ -85,8 +89,22 @@ public class HeavyNormalCompletionTest extends JavaCodeInsightFixtureTestCase {
|
||||
assertEquals("AxBxCxDxEx", myItems[1].getLookupString());
|
||||
assertEquals("AyByCyDyEy", myItems[0].getLookupString());
|
||||
}
|
||||
|
||||
static class CacheVerifyingContributor extends CompletionContributor {
|
||||
@Override
|
||||
void fillCompletionVariants(CompletionParameters parameters, CompletionResultSet result) {
|
||||
PsiClass psiClass = PsiTreeUtil.getParentOfType(parameters.position, PsiClass)
|
||||
for (ci in OverrideImplementExploreUtil.getMethodsToOverrideImplement(psiClass, true)) {
|
||||
assert ci.element.valid
|
||||
}
|
||||
for (ci in OverrideImplementExploreUtil.getMethodsToOverrideImplement(psiClass, false)) {
|
||||
assert ci.element.valid
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void testMapsInvalidation() throws Exception {
|
||||
JavaAutoPopupTest.registerCompletionContributor(CacheVerifyingContributor, testRootDisposable, LoadingOrder.FIRST)
|
||||
myFixture.configureByFile("/codeInsight/completion/normal/" + getTestName(false) + ".java");
|
||||
assertInstanceOf(myFixture.getFile().getVirtualFile().getFileSystem(), LocalFileSystem.class); // otherwise the completion copy won't be preserved which is critical here
|
||||
myFixture.completeBasic();
|
||||
|
||||
+5
-1
@@ -46,6 +46,7 @@ import com.intellij.openapi.extensions.LoadingOrder
|
||||
import com.intellij.openapi.fileEditor.FileEditor
|
||||
import com.intellij.openapi.fileEditor.FileEditorManager
|
||||
import com.intellij.openapi.progress.ProgressManager
|
||||
import com.intellij.openapi.util.Disposer
|
||||
import com.intellij.psi.PsiFile
|
||||
import com.intellij.psi.PsiJavaFile
|
||||
import com.intellij.psi.statistics.StatisticsManager
|
||||
@@ -576,10 +577,13 @@ public interface Test {
|
||||
}
|
||||
|
||||
private def registerContributor(final Class contributor, LoadingOrder order = LoadingOrder.LAST) {
|
||||
registerCompletionContributor(contributor, testRootDisposable, order)
|
||||
}
|
||||
static def registerCompletionContributor(final Class contributor, Disposable parentDisposable, LoadingOrder order) {
|
||||
def ep = Extensions.rootArea.getExtensionPoint("com.intellij.completion.contributor")
|
||||
def bean = new CompletionContributorEP(language: 'JAVA', implementationClass: contributor.name)
|
||||
ep.registerExtension(bean, order)
|
||||
disposeOnTearDown({ ep.unregisterExtension(bean) } as Disposable)
|
||||
Disposer.register(parentDisposable, { ep.unregisterExtension(bean) } as Disposable)
|
||||
}
|
||||
|
||||
public void testLeftRightMovements() {
|
||||
|
||||
Reference in New Issue
Block a user