From 82c8cbd59d80c2dbfbf7aea73af5af0f7a15dea7 Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Fri, 16 Oct 2009 13:48:16 +0400 Subject: [PATCH] light highlighting tests fixed --- .../daemon/DaemonAnalyzerTestCase.java | 29 ++++------ .../daemon/LightDaemonAnalyzerTestCase.java | 33 +++--------- .../impl/CodeInsightTestFixtureImpl.java | 53 ++++++++----------- .../lang/xpath/xslt/XsltHighlightingTest.java | 26 +++------ 4 files changed, 45 insertions(+), 96 deletions(-) diff --git a/java/testFramework/src/com/intellij/codeInsight/daemon/DaemonAnalyzerTestCase.java b/java/testFramework/src/com/intellij/codeInsight/daemon/DaemonAnalyzerTestCase.java index d8f2d7a5fa54..92620beb6bf8 100644 --- a/java/testFramework/src/com/intellij/codeInsight/daemon/DaemonAnalyzerTestCase.java +++ b/java/testFramework/src/com/intellij/codeInsight/daemon/DaemonAnalyzerTestCase.java @@ -19,7 +19,10 @@ import com.intellij.codeHighlighting.HighlightDisplayLevel; import com.intellij.codeHighlighting.Pass; import com.intellij.codeHighlighting.TextEditorHighlightingPass; import com.intellij.codeInsight.CodeInsightTestCase; -import com.intellij.codeInsight.daemon.impl.*; +import com.intellij.codeInsight.daemon.impl.DaemonCodeAnalyzerImpl; +import com.intellij.codeInsight.daemon.impl.ExternalToolPass; +import com.intellij.codeInsight.daemon.impl.HighlightInfo; +import com.intellij.codeInsight.daemon.impl.TextEditorHighlightingPassRegistrarEx; import com.intellij.codeInsight.daemon.quickFix.LightQuickFixTestCase; import com.intellij.codeInsight.intention.IntentionAction; import com.intellij.codeInspection.InspectionProfileEntry; @@ -37,8 +40,6 @@ import com.intellij.openapi.Disposable; import com.intellij.openapi.editor.Document; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.module.Module; -import com.intellij.openapi.progress.ProgressIndicator; -import com.intellij.openapi.progress.ProgressManager; import com.intellij.openapi.roots.ModuleRootManager; import com.intellij.openapi.startup.StartupManager; import com.intellij.openapi.util.Disposer; @@ -60,6 +61,7 @@ import com.intellij.psi.search.GlobalSearchScope; import com.intellij.psi.search.UsageSearchContext; import com.intellij.testFramework.ExpectedHighlightingData; import com.intellij.testFramework.FileTreeAccessFilter; +import com.intellij.testFramework.fixtures.impl.CodeInsightTestFixtureImpl; import com.intellij.util.IncorrectOperationException; import gnu.trove.THashMap; import gnu.trove.TIntArrayList; @@ -269,29 +271,16 @@ public abstract class DaemonAnalyzerTestCase extends CodeInsightTestCase { toIgnore.add(Pass.VISIBLE_LINE_MARKERS); toIgnore.add(Pass.LINE_MARKERS); } - final ProgressIndicator progress = new DaemonProgressIndicator(); final List passes = TextEditorHighlightingPassRegistrarEx.getInstanceEx(getProject()).instantiatePasses(getFile(), getEditor(), toIgnore.toNativeArray()); - for(Iterator i = passes.iterator();i.hasNext();) { - final TextEditorHighlightingPass pass = i.next(); - + for (final TextEditorHighlightingPass pass : passes) { if ((!(pass instanceof ExternalToolPass) && forceExternalValidation()) || - (pass instanceof ExternalToolPass && !forceExternalValidation() && !doExternalValidation()) - ) { - i.remove(); + (pass instanceof ExternalToolPass && !forceExternalValidation() && !doExternalValidation())) { + toIgnore.add(pass.getId()); } } - ProgressManager.getInstance().runProcess(new Runnable() { - public void run() { - for (TextEditorHighlightingPass pass : passes) { - pass.collectInformation(progress); - } - for (TextEditorHighlightingPass pass : passes) { - pass.applyInformationToEditor(); - } - } - }, progress); + CodeInsightTestFixtureImpl.instantiateAndRun(getFile(), getEditor(), toIgnore.toNativeArray()); if (doTestLineMarkers()) { Document document = getDocument(getFile()); diff --git a/java/testFramework/src/com/intellij/codeInsight/daemon/LightDaemonAnalyzerTestCase.java b/java/testFramework/src/com/intellij/codeInsight/daemon/LightDaemonAnalyzerTestCase.java index cedbae209b2b..4d54337e5e44 100644 --- a/java/testFramework/src/com/intellij/codeInsight/daemon/LightDaemonAnalyzerTestCase.java +++ b/java/testFramework/src/com/intellij/codeInsight/daemon/LightDaemonAnalyzerTestCase.java @@ -16,28 +16,20 @@ package com.intellij.codeInsight.daemon; import com.intellij.codeHighlighting.Pass; -import com.intellij.codeHighlighting.TextEditorHighlightingPass; -import com.intellij.codeInsight.daemon.impl.DaemonCodeAnalyzerImpl; -import com.intellij.codeInsight.daemon.impl.DaemonProgressIndicator; import com.intellij.codeInsight.daemon.impl.HighlightInfo; -import com.intellij.codeInsight.daemon.impl.TextEditorHighlightingPassRegistrarEx; -import com.intellij.injected.editor.EditorWindow; import com.intellij.openapi.editor.Editor; -import com.intellij.openapi.progress.ProgressIndicator; import com.intellij.openapi.vfs.VirtualFileFilter; import com.intellij.psi.PsiDocumentManager; import com.intellij.psi.PsiFile; -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import com.intellij.testFramework.ExpectedHighlightingData; import com.intellij.testFramework.FileTreeAccessFilter; import com.intellij.testFramework.LightCodeInsightTestCase; +import com.intellij.testFramework.fixtures.impl.CodeInsightTestFixtureImpl; import com.intellij.util.ArrayUtil; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; -import java.util.ArrayList; import java.util.Collection; -import java.util.Collections; import java.util.List; public abstract class LightDaemonAnalyzerTestCase extends LightCodeInsightTestCase { @@ -82,27 +74,16 @@ public abstract class LightDaemonAnalyzerTestCase extends LightCodeInsightTestCa protected List doHighlighting() { PsiDocumentManager.getInstance(getProject()).commitAllDocuments(); - ProgressIndicator progress = new DaemonProgressIndicator(); int[] toIgnore = doFolding() ? ArrayUtil.EMPTY_INT_ARRAY : new int[]{Pass.UPDATE_FOLDING}; Editor editor = getEditor(); PsiFile file = getFile(); - if (editor instanceof EditorWindow) { - editor = ((EditorWindow)editor).getDelegate(); - file = InjectedLanguageUtil.getTopLevelFile(file); - } - TextEditorHighlightingPassRegistrarEx registrar = TextEditorHighlightingPassRegistrarEx.getInstanceEx(getProject()); - List passes = registrar.instantiatePasses(file, editor, toIgnore); - - for (TextEditorHighlightingPass pass : passes) { - pass.collectInformation(progress); - } - for (TextEditorHighlightingPass pass : passes) { - pass.applyInformationToEditor(); - } - - List infos = DaemonCodeAnalyzerImpl.getHighlights(editor.getDocument(), getProject()); - return infos == null ? Collections.emptyList() : new ArrayList(infos); + //if (editor instanceof EditorWindow) { + // editor = ((EditorWindow)editor).getDelegate(); + // file = InjectedLanguageUtil.getTopLevelFile(file); + //} + + return CodeInsightTestFixtureImpl.instantiateAndRun(file, editor, toIgnore); } protected boolean doFolding() { diff --git a/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/CodeInsightTestFixtureImpl.java b/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/CodeInsightTestFixtureImpl.java index 8650637d32d5..8aa18941222a 100644 --- a/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/CodeInsightTestFixtureImpl.java +++ b/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/CodeInsightTestFixtureImpl.java @@ -1068,25 +1068,30 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig return ApplicationManager.getApplication().runReadAction(new Computable>() { public List compute() { - final List passes = - TextEditorHighlightingPassRegistrarEx.getInstanceEx(getProject()).instantiatePasses(getFile(), getEditor(), ArrayUtil.EMPTY_INT_ARRAY); - final ProgressIndicator progress = new DaemonProgressIndicator(); - ProgressManager.getInstance().runProcess(new Runnable() { - public void run() { - for (TextEditorHighlightingPass pass : passes) { - pass.collectInformation(progress); - } - for (TextEditorHighlightingPass pass : passes) { - pass.applyInformationToEditor(); - } - } - }, progress); - List infos = DaemonCodeAnalyzerImpl.getHighlights(getEditor().getDocument(), getProject()); - return infos == null ? Collections.emptyList() : new ArrayList(infos); + return instantiateAndRun(CodeInsightTestFixtureImpl.this.getFile(), CodeInsightTestFixtureImpl.this.getEditor(), ArrayUtil.EMPTY_INT_ARRAY); } }); } + @NotNull + public static List instantiateAndRun(PsiFile file, Editor editor, int[] toIgnore) { + TextEditorHighlightingPassRegistrarEx registrar = TextEditorHighlightingPassRegistrarEx.getInstanceEx(file.getProject()); + final List passes = registrar.instantiatePasses(file, editor, toIgnore); + final ProgressIndicator progress = new DaemonProgressIndicator(); + ProgressManager.getInstance().runProcess(new Runnable() { + public void run() { + for (TextEditorHighlightingPass pass : passes) { + pass.collectInformation(progress); + } + for (TextEditorHighlightingPass pass : passes) { + pass.applyInformationToEditor(); + } + } + }, progress); + List infos = DaemonCodeAnalyzerImpl.getHighlights(editor.getDocument(), file.getProject()); + return infos == null ? Collections.emptyList() : new ArrayList(infos); + } + public String getTestDataPath() { return myTestDataPath; } @@ -1124,23 +1129,6 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig descriptors.addAll(intentions.inspectionFixesToShow); descriptors.addAll(intentions.guttersToShow); - /* - final List availableActions = new ArrayList(); - for (HighlightInfo info :infos) { - if (info.quickFixActionRanges != null) { - for (Pair pair : info.quickFixActionRanges) { - IntentionAction action = pair.first.getAction(); - if (action.isAvailable(file.getProject(), editor, file)) availableActions.add(action); - } - } - } - - intentionAction = LightQuickFixTestCase.findActionWithText( - availableActions, - intentionActionName - ); - */ - PsiElement element = file.findElementAt(editor.getCaretModel().getOffset()); List result = new ArrayList(); @@ -1154,6 +1142,7 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig } } + // add all intention options for simplicity for (HighlightInfo.IntentionActionDescriptor descriptor : descriptors) { result.add(descriptor.getAction()); List options = descriptor.getOptions(element); diff --git a/plugins/xpath/xpath-lang/test/org/intellij/lang/xpath/xslt/XsltHighlightingTest.java b/plugins/xpath/xpath-lang/test/org/intellij/lang/xpath/xslt/XsltHighlightingTest.java index 23a96b54bccc..db6dd63f0909 100644 --- a/plugins/xpath/xpath-lang/test/org/intellij/lang/xpath/xslt/XsltHighlightingTest.java +++ b/plugins/xpath/xpath-lang/test/org/intellij/lang/xpath/xslt/XsltHighlightingTest.java @@ -15,20 +15,15 @@ */ package org.intellij.lang.xpath.xslt; -import com.intellij.codeHighlighting.TextEditorHighlightingPass; -import com.intellij.codeInsight.daemon.impl.DaemonProgressIndicator; -import com.intellij.codeInsight.daemon.impl.TextEditorHighlightingPassRegistrarEx; import com.intellij.openapi.application.ApplicationManager; -import com.intellij.openapi.progress.ProgressIndicator; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Computable; import com.intellij.psi.PsiDocumentManager; +import com.intellij.testFramework.fixtures.impl.CodeInsightTestFixtureImpl; import com.intellij.util.ArrayUtil; import org.intellij.lang.xpath.TestBase; import org.intellij.lang.xpath.xslt.impl.XsltStuffProvider; -import java.util.List; - /* * Created by IntelliJ IDEA. * User: sweinreuter @@ -107,18 +102,13 @@ public class XsltHighlightingTest extends TestBase { final Project project = myFixture.getProject(); PsiDocumentManager.getInstance(project).commitAllDocuments(); - return ApplicationManager.getApplication().runReadAction(new Computable() { - public Long compute() { - final long l = System.currentTimeMillis(); - List passes = - TextEditorHighlightingPassRegistrarEx.getInstanceEx(myFixture.getProject()).instantiatePasses(myFixture.getFile(), myFixture.getEditor(), ArrayUtil.EMPTY_INT_ARRAY); - ProgressIndicator progress = new DaemonProgressIndicator(); - for (TextEditorHighlightingPass pass : passes) { - pass.collectInformation(progress); - } - return System.currentTimeMillis() - l; - } - }); + return ApplicationManager.getApplication().runReadAction(new Computable() { + public Long compute() { + final long l = System.currentTimeMillis(); + CodeInsightTestFixtureImpl.instantiateAndRun(myFixture.getFile(), myFixture.getEditor(), ArrayUtil.EMPTY_INT_ARRAY); + return System.currentTimeMillis() - l; + } + }); } private void doXsltHighlighting(String... moreFiles) throws Throwable {