test that cached completion copy file caches are correctly cleared

This commit is contained in:
peter
2013-10-21 23:01:48 +02:00
parent 8343988169
commit 8a816ff831
2 changed files with 23 additions and 1 deletions
@@ -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();
@@ -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() {