fix gui form test flakiness

don't let mock file type be retained in StdFileTypes after a light test
This commit is contained in:
peter
2017-08-17 15:14:38 +02:00
parent 537a5cfc31
commit f51fca78ee
3 changed files with 9 additions and 6 deletions
@@ -15,13 +15,13 @@
*/
package com.intellij.java.parser;
import com.intellij.ide.highlighter.JavaFileType;
import com.intellij.lang.ASTNode;
import com.intellij.lang.LanguageASTFactory;
import com.intellij.lang.PsiBuilder;
import com.intellij.lang.java.JavaLanguage;
import com.intellij.lang.java.JavaParserDefinition;
import com.intellij.lang.java.parser.JavaParserUtil;
import com.intellij.openapi.fileTypes.StdFileTypes;
import com.intellij.openapi.roots.LanguageLevelProjectExtension;
import com.intellij.openapi.roots.impl.LanguageLevelProjectExtensionImpl;
import com.intellij.pom.java.LanguageLevel;
@@ -94,8 +94,8 @@ public abstract class JavaParsingTestCase extends ParsingTestCase {
TEST_PARSER = parser;
final LightVirtualFile virtualFile = new LightVirtualFile(name + '.' + myFileExt, StdFileTypes.JAVA, text, -1);
final FileViewProvider viewProvider = new SingleRootFileViewProvider(PsiManager.getInstance(getProject()), virtualFile, true);
LightVirtualFile virtualFile = new LightVirtualFile(name + '.' + myFileExt, JavaFileType.INSTANCE, text, -1);
FileViewProvider viewProvider = new SingleRootFileViewProvider(PsiManager.getInstance(getProject()), virtualFile, true);
return new PsiJavaFileImpl(viewProvider) {
@NotNull
@Override
@@ -167,6 +167,7 @@ public class MockFileTypeManager extends FileTypeManagerEx {
if ("XHTML".equals(fileTypeName)) return loadFileTypeSafe("com.intellij.ide.highlighter.XHtmlFileType", fileTypeName);
if ("JavaScript".equals(fileTypeName)) return loadFileTypeSafe("com.intellij.lang.javascript.JavaScriptFileType", fileTypeName);
if ("Properties".equals(fileTypeName)) return loadFileTypeSafe("com.intellij.lang.properties.PropertiesFileType", fileTypeName);
if ("GUI_DESIGNER_FORM".equals(fileTypeName)) return loadFileTypeSafe("com.intellij.uiDesigner.GuiFormFileType", fileTypeName);
return new MockLanguageFileType(PlainTextLanguage.INSTANCE, fileTypeName.toLowerCase());
}
@@ -19,7 +19,7 @@ import com.intellij.ide.highlighter.XmlFileType;
import com.intellij.lang.properties.psi.PropertiesFile;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.application.ReadAction;
import com.intellij.openapi.fileTypes.StdFileTypes;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.module.ModuleUtil;
import com.intellij.openapi.project.Project;
@@ -35,6 +35,7 @@ import com.intellij.psi.xml.XmlAttribute;
import com.intellij.psi.xml.XmlAttributeValue;
import com.intellij.psi.xml.XmlFile;
import com.intellij.psi.xml.XmlTag;
import com.intellij.uiDesigner.GuiFormFileType;
import com.intellij.uiDesigner.UIFormXmlConstants;
import com.intellij.uiDesigner.compiler.Utils;
import com.intellij.util.ProcessingContext;
@@ -50,6 +51,7 @@ import java.util.Map;
* @author yole
*/
public class FormReferenceProvider extends PsiReferenceProvider {
private static final Logger LOG = Logger.getInstance("#com.intellij.uiDesigner.binding.FormReferenceProvider");
private static class CachedFormData {
PsiReference[] myReferences;
Map<String, Pair<PsiType, TextRange>> myFieldNameToTypeMap;
@@ -65,8 +67,8 @@ public class FormReferenceProvider extends PsiReferenceProvider {
@NotNull
public PsiReference[] getReferencesByElement(@NotNull final PsiElement element, @NotNull final ProcessingContext context) {
if (element instanceof PsiPlainTextFile) {
final PsiPlainTextFile plainTextFile = (PsiPlainTextFile) element;
if (plainTextFile.getFileType().equals(StdFileTypes.GUI_DESIGNER_FORM)) {
PsiPlainTextFile plainTextFile = (PsiPlainTextFile) element;
if (plainTextFile.getFileType().equals(GuiFormFileType.INSTANCE)) {
return getCachedData(plainTextFile).myReferences;
}
}