mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
run inject automatically in CodeInsightFixture
This commit is contained in:
+65
-24
@@ -49,6 +49,8 @@ import com.intellij.ide.startup.StartupManagerEx;
|
||||
import com.intellij.ide.startup.impl.StartupManagerImpl;
|
||||
import com.intellij.ide.structureView.StructureViewBuilder;
|
||||
import com.intellij.ide.structureView.newStructureView.StructureViewComponent;
|
||||
import com.intellij.injected.editor.DocumentWindow;
|
||||
import com.intellij.injected.editor.EditorWindow;
|
||||
import com.intellij.internal.DumpLookupElementWeights;
|
||||
import com.intellij.lang.LanguageStructureViewBuilder;
|
||||
import com.intellij.openapi.Disposable;
|
||||
@@ -81,10 +83,7 @@ import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.*;
|
||||
import com.intellij.openapi.util.io.FileUtil;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.openapi.vfs.LocalFileSystem;
|
||||
import com.intellij.openapi.vfs.VfsUtil;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.openapi.vfs.VirtualFileFilter;
|
||||
import com.intellij.openapi.vfs.*;
|
||||
import com.intellij.profile.codeInspection.InspectionProfileManager;
|
||||
import com.intellij.profile.codeInspection.InspectionProjectProfileManager;
|
||||
import com.intellij.psi.*;
|
||||
@@ -348,7 +347,7 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig
|
||||
for (String path : filePaths) {
|
||||
files.add(copyFileToProject(path));
|
||||
}
|
||||
return testHighlightingAllFiles(checkWarnings, checkInfos, checkWeakWarnings, VfsUtil.toVirtualFileArray(files));
|
||||
return testHighlightingAllFiles(checkWarnings, checkInfos, checkWeakWarnings, VfsUtilCore.toVirtualFileArray(files));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -525,7 +524,13 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig
|
||||
@NotNull
|
||||
public List<IntentionAction> getAvailableIntentions() {
|
||||
doHighlighting();
|
||||
return getAvailableIntentions(myEditor, myFile);
|
||||
PsiFile file = getFile();
|
||||
Editor editor = getEditor();
|
||||
if (editor instanceof EditorWindow) {
|
||||
editor = ((EditorWindow)editor).getDelegate();
|
||||
file = InjectedLanguageUtil.getTopLevelFile(file);
|
||||
}
|
||||
return getAvailableIntentions(editor, file);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -1034,7 +1039,7 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig
|
||||
protected void run(Result result) throws Throwable {
|
||||
PsiDocumentManager.getInstance(getProject()).commitAllDocuments();
|
||||
EditorUtil.fillVirtualSpaceUntilCaret(myEditor);
|
||||
checkResult("TEXT", stripTrailingSpaces, SelectionAndCaretMarkupLoader.fromText(text, getProject()), myFile.getText());
|
||||
checkResult("TEXT", stripTrailingSpaces, SelectionAndCaretMarkupLoader.fromText(text, getProject()), getHostFile().getText());
|
||||
}
|
||||
}.execute();
|
||||
}
|
||||
@@ -1051,7 +1056,7 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig
|
||||
|
||||
@Override
|
||||
protected void run() throws Exception {
|
||||
checkResultByFile(expectedFile, myFile, ignoreTrailingWhitespaces);
|
||||
checkResultByFile(expectedFile, getHostFile(), ignoreTrailingWhitespaces);
|
||||
}
|
||||
}.execute().throwException();
|
||||
}
|
||||
@@ -1358,6 +1363,7 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig
|
||||
module.getMessageBus().syncPublisher(FacetManager.FACETS_TOPIC).facetConfigurationChanged(facet);
|
||||
}
|
||||
}
|
||||
setupEditorForInjectedLanguage();
|
||||
}
|
||||
}.execute().throwException();
|
||||
|
||||
@@ -1365,6 +1371,15 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig
|
||||
return myFile;
|
||||
}
|
||||
|
||||
private void setupEditorForInjectedLanguage() {
|
||||
Editor editor = InjectedLanguageUtil.getEditorForInjectedLanguageNoCommit(myEditor, myFile);
|
||||
if (editor instanceof EditorWindow) {
|
||||
myFile = ((EditorWindow)editor).getInjectedFile();
|
||||
myEditor = editor;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public VirtualFile findFileInTempDir(final String filePath) {
|
||||
if (myTempDirFixture instanceof LightTempDirTestFixtureImpl) {
|
||||
@@ -1390,16 +1405,21 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig
|
||||
private long collectAndCheckHighlightings(boolean checkWarnings, boolean checkInfos, boolean checkWeakWarnings)
|
||||
throws Exception {
|
||||
ExpectedHighlightingData data =
|
||||
new ExpectedHighlightingData(myEditor.getDocument(), checkWarnings, checkWeakWarnings, checkInfos, myFile);
|
||||
new ExpectedHighlightingData(myEditor.getDocument(), checkWarnings, checkWeakWarnings, checkInfos, getHostFile());
|
||||
data.init();
|
||||
return collectAndCheckHighlightings(data);
|
||||
}
|
||||
|
||||
private long collectAndCheckHighlightings(final ExpectedHighlightingData data) {
|
||||
private PsiFile getHostFile() {
|
||||
return InjectedLanguageUtil.getTopLevelFile(myFile);
|
||||
}
|
||||
|
||||
private long collectAndCheckHighlightings(@NotNull ExpectedHighlightingData data) {
|
||||
final Project project = getProject();
|
||||
PsiDocumentManager.getInstance(project).commitAllDocuments();
|
||||
|
||||
FileElement hardRefToFileElement = ((PsiFileImpl)myFile).calcTreeElement();//to load text
|
||||
PsiFileImpl file = (PsiFileImpl)getHostFile();
|
||||
FileElement hardRefToFileElement = file.calcTreeElement();//to load text
|
||||
|
||||
//to initialize caches
|
||||
if (!DumbService.isDumb(project)) {
|
||||
@@ -1421,7 +1441,7 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig
|
||||
}
|
||||
final long elapsed = System.currentTimeMillis() - start;
|
||||
|
||||
data.checkResult(infos, myEditor.getDocument().getText());
|
||||
data.checkResult(infos, file.getText());
|
||||
hardRefToFileElement.hashCode(); // use it so gc won't collect it
|
||||
return elapsed;
|
||||
}
|
||||
@@ -1454,7 +1474,13 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig
|
||||
final Project project = getProject();
|
||||
PsiDocumentManager.getInstance(project).commitAllDocuments();
|
||||
|
||||
return instantiateAndRun(getFile(), getEditor(), ArrayUtil.EMPTY_INT_ARRAY, myAllowDirt);
|
||||
PsiFile file = getFile();
|
||||
Editor editor = getEditor();
|
||||
if (editor instanceof EditorWindow) {
|
||||
editor = ((EditorWindow)editor).getDelegate();
|
||||
file = InjectedLanguageUtil.getTopLevelFile(file);
|
||||
}
|
||||
return instantiateAndRun(file, editor, ArrayUtil.EMPTY_INT_ARRAY, myAllowDirt);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@@ -1580,7 +1606,7 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig
|
||||
static SelectionAndCaretMarkupLoader fromFile(VirtualFile file, Project project) {
|
||||
final String text;
|
||||
try {
|
||||
text = VfsUtil.loadText(file);
|
||||
text = VfsUtilCore.loadText(file);
|
||||
}
|
||||
catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
@@ -1661,6 +1687,12 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig
|
||||
String actualText) {
|
||||
assertInitialized();
|
||||
Project project = getProject();
|
||||
PsiFile file = getFile();
|
||||
Editor editor = getEditor();
|
||||
if (editor instanceof EditorWindow) {
|
||||
editor = ((EditorWindow)editor).getDelegate();
|
||||
file = InjectedLanguageUtil.getTopLevelFile(file);
|
||||
}
|
||||
|
||||
project.getComponent(PostprocessReformattingAspect.class).doPostponedFormatting();
|
||||
if (stripTrailingSpaces) {
|
||||
@@ -1689,10 +1721,11 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig
|
||||
final int tabSize = CodeStyleSettingsManager.getSettings(getProject()).getIndentOptions(StdFileTypes.JAVA).TAB_SIZE;
|
||||
|
||||
int caretLine = StringUtil.offsetToLineNumber(loader.newFileText, loader.caretMarker.getStartOffset());
|
||||
int caretCol = EditorUtil.calcColumnNumber(null, loader.newFileText, StringUtil.lineColToOffset(loader.newFileText, caretLine, 0), loader.caretMarker.getStartOffset(), tabSize);
|
||||
int caretCol = EditorUtil.calcColumnNumber(null, loader.newFileText, StringUtil.lineColToOffset(loader.newFileText, caretLine, 0),
|
||||
loader.caretMarker.getStartOffset(), tabSize);
|
||||
|
||||
final int actualLine = myEditor.getCaretModel().getLogicalPosition().line;
|
||||
final int actualCol = myEditor.getCaretModel().getLogicalPosition().column;
|
||||
final int actualLine = editor.getCaretModel().getLogicalPosition().line;
|
||||
final int actualCol = editor.getCaretModel().getLogicalPosition().column;
|
||||
boolean caretPositionEquals = caretLine == actualLine && caretCol == actualCol;
|
||||
Assert.assertTrue("Caret position in " + expectedFile + " differs. Expected " + genCaretPositionPresentation(caretLine, caretCol) +
|
||||
". Actual " + genCaretPositionPresentation(actualLine, actualCol), caretPositionEquals);
|
||||
@@ -1707,15 +1740,15 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig
|
||||
|
||||
int selectionStart;
|
||||
int selectionEnd;
|
||||
if (myEditor.getSelectionModel().hasBlockSelection()) {
|
||||
int[] starts = myEditor.getSelectionModel().getBlockSelectionStarts();
|
||||
int[] ends = myEditor.getSelectionModel().getBlockSelectionEnds();
|
||||
if (editor.getSelectionModel().hasBlockSelection()) {
|
||||
int[] starts = editor.getSelectionModel().getBlockSelectionStarts();
|
||||
int[] ends = editor.getSelectionModel().getBlockSelectionEnds();
|
||||
selectionStart = starts[starts.length-1];
|
||||
selectionEnd = ends[ends.length-1];
|
||||
}
|
||||
else {
|
||||
selectionStart = myEditor.getSelectionModel().getSelectionStart();
|
||||
selectionEnd = myEditor.getSelectionModel().getSelectionEnd();
|
||||
selectionStart = editor.getSelectionModel().getSelectionStart();
|
||||
selectionEnd = editor.getSelectionModel().getSelectionEnd();
|
||||
}
|
||||
|
||||
final int selStartLineActual = StringUtil.offsetToLineNumber(loader.newFileText, selectionStart);
|
||||
@@ -1733,8 +1766,8 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig
|
||||
". Actual " + genSelectionPresentation(selStartLineActual, selStartColActual, selEndLineActual, selEndColActual),
|
||||
selectionEquals);
|
||||
}
|
||||
else if (myEditor != null) {
|
||||
Assert.assertTrue("has no selection in " + expectedFile, !myEditor.getSelectionModel().hasSelection());
|
||||
else if (editor != null) {
|
||||
Assert.assertTrue("has no selection in " + expectedFile, !editor.getSelectionModel().hasSelection());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1900,4 +1933,12 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig
|
||||
return (LookupImpl)LookupManager.getActiveLookup(myEditor);
|
||||
}
|
||||
|
||||
protected void bringRealEditorBack() {
|
||||
PsiDocumentManager.getInstance(getProject()).commitAllDocuments();
|
||||
if (myEditor instanceof EditorWindow) {
|
||||
Document document = ((DocumentWindow)myEditor.getDocument()).getDelegate();
|
||||
myFile = PsiDocumentManager.getInstance(getProject()).getPsiFile(document);
|
||||
myEditor = ((EditorWindow)myEditor).getDelegate();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,9 +15,11 @@
|
||||
*/
|
||||
package org.intellij.lang.xpath.xslt;
|
||||
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.psi.impl.PsiFileEx;
|
||||
import com.intellij.psi.xml.XmlFile;
|
||||
|
||||
import com.intellij.testFramework.fixtures.impl.CodeInsightTestFixtureImpl;
|
||||
import org.intellij.lang.xpath.TestBase;
|
||||
import org.intellij.lang.xpath.xslt.impl.XsltChecker;
|
||||
|
||||
@@ -91,7 +93,9 @@ public class XsltBasicTest extends TestBase {
|
||||
|
||||
private void configure() throws Throwable {
|
||||
final String fileName = getTestFileName();
|
||||
myFixture.configureByFile(fileName.replaceAll("_.*$", "") + ".xsl");
|
||||
String path = fileName.replaceAll("_.*$", "") + ".xsl";
|
||||
final VirtualFile file = myFixture.copyFileToProject(path);
|
||||
((CodeInsightTestFixtureImpl)myFixture).openFileInEditor(file);
|
||||
if (fileName.endsWith("_Loaded")) {
|
||||
((XmlFile)myFixture.getFile()).getDocument();
|
||||
assertTrue(((PsiFileEx)myFixture.getFile()).isContentsLoaded());
|
||||
|
||||
@@ -15,7 +15,6 @@
|
||||
*/
|
||||
package org.intellij.lang.xpath.xslt;
|
||||
|
||||
import com.intellij.lang.injection.InjectedLanguageManager;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiPolyVariantReference;
|
||||
import com.intellij.psi.PsiReference;
|
||||
@@ -126,8 +125,7 @@ public class XsltResolveTest extends TestBase {
|
||||
private PsiReference findInjectedReferenceAtCaret(String... moreFiles) throws Throwable {
|
||||
configure(moreFiles);
|
||||
|
||||
final InjectedLanguageManager manager = InjectedLanguageManager.getInstance(myFixture.getProject());
|
||||
final PsiElement e = manager.findInjectedElementAt(myFixture.getFile(), myFixture.getEditor().getCaretModel().getOffset());
|
||||
final PsiElement e = myFixture.getFile().findElementAt(myFixture.getEditor().getCaretModel().getOffset());
|
||||
assertNotNull(e);
|
||||
|
||||
final PsiReference reference = e.getContainingFile().findReferenceAt(e.getTextOffset());
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.intellij.util.xml.stubs;
|
||||
import com.intellij.openapi.extensions.Extensions;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.impl.PsiManagerEx;
|
||||
import com.intellij.psi.stubs.ObjectStubTree;
|
||||
import com.intellij.psi.stubs.StubTreeLoader;
|
||||
import com.intellij.testFramework.PlatformTestUtil;
|
||||
@@ -54,7 +55,9 @@ public class DomStubBuilderTest extends DomStubTest {
|
||||
}
|
||||
|
||||
public void testNullTag() throws Exception {
|
||||
PsiFile psiFile = myFixture.configureByFile("nullTag.xml");
|
||||
VirtualFile virtualFile = myFixture.copyFileToProject("nullTag.xml");
|
||||
assertNotNull(virtualFile);
|
||||
PsiFile psiFile = ((PsiManagerEx)getPsiManager()).getFileManager().findFile(virtualFile);
|
||||
|
||||
StubTreeLoader loader = StubTreeLoader.getInstance();
|
||||
VirtualFile file = psiFile.getVirtualFile();
|
||||
|
||||
@@ -18,6 +18,7 @@ package com.intellij.util.xml.stubs;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.impl.DebugUtil;
|
||||
import com.intellij.psi.impl.PsiManagerEx;
|
||||
import com.intellij.psi.impl.PsiManagerImpl;
|
||||
import com.intellij.psi.stubs.ObjectStubTree;
|
||||
import com.intellij.psi.stubs.StubTreeLoader;
|
||||
@@ -28,7 +29,6 @@ import com.intellij.util.xml.DomElement;
|
||||
import com.intellij.util.xml.DomFileDescription;
|
||||
import com.intellij.util.xml.DomFileElement;
|
||||
import com.intellij.util.xml.DomManager;
|
||||
import com.intellij.util.xml.impl.DomApplicationComponent;
|
||||
import com.intellij.util.xml.impl.DomManagerImpl;
|
||||
import com.intellij.util.xml.stubs.model.Foo;
|
||||
|
||||
@@ -93,10 +93,10 @@ public abstract class DomStubTest extends LightCodeInsightFixtureTestCase {
|
||||
}
|
||||
|
||||
protected XmlFile prepareFile(String path) {
|
||||
XmlFile file = (XmlFile)myFixture.configureByFile(path);
|
||||
assertFalse(file.getNode().isParsed());
|
||||
VirtualFile virtualFile = file.getVirtualFile();
|
||||
VirtualFile virtualFile = myFixture.copyFileToProject(path);
|
||||
assertNotNull(virtualFile);
|
||||
XmlFile file = (XmlFile)((PsiManagerEx)getPsiManager()).getFileManager().findFile(virtualFile);
|
||||
assertFalse(file.getNode().isParsed());
|
||||
ObjectStubTree tree = StubTreeLoader.getInstance().readOrBuild(getProject(), virtualFile, file);
|
||||
assertNotNull(tree);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user