mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-13 09:19:13 +07:00
let test AST loading filters be more robust to test failures
This commit is contained in:
@@ -19,6 +19,7 @@
|
||||
*/
|
||||
package com.intellij.psi.impl;
|
||||
|
||||
import com.intellij.openapi.Disposable;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.vfs.VirtualFileFilter;
|
||||
import com.intellij.psi.JavaPsiFacade;
|
||||
@@ -41,5 +42,5 @@ public abstract class JavaPsiFacadeEx extends JavaPsiFacade {
|
||||
}
|
||||
|
||||
@TestOnly
|
||||
public abstract void setAssertOnFileLoadingFilter(@NotNull VirtualFileFilter filter);
|
||||
public abstract void setAssertOnFileLoadingFilter(@NotNull VirtualFileFilter filter, Disposable parentDisposable);
|
||||
}
|
||||
@@ -15,6 +15,7 @@
|
||||
*/
|
||||
package com.intellij.psi.impl;
|
||||
|
||||
import com.intellij.openapi.Disposable;
|
||||
import com.intellij.openapi.application.ReadActionProcessor;
|
||||
import com.intellij.openapi.progress.ProgressIndicatorProvider;
|
||||
import com.intellij.openapi.project.DumbAware;
|
||||
@@ -467,7 +468,7 @@ public class JavaPsiFacadeImpl extends JavaPsiFacadeEx {
|
||||
|
||||
@TestOnly
|
||||
@Override
|
||||
public void setAssertOnFileLoadingFilter(@NotNull final VirtualFileFilter filter) {
|
||||
((PsiManagerImpl)PsiManager.getInstance(myProject)).setAssertOnFileLoadingFilter(filter);
|
||||
public void setAssertOnFileLoadingFilter(@NotNull final VirtualFileFilter filter, Disposable parentDisposable) {
|
||||
((PsiManagerImpl)PsiManager.getInstance(myProject)).setAssertOnFileLoadingFilter(filter, parentDisposable);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -232,13 +232,11 @@ public class ClsRepositoryUseTest extends PsiTestCase {
|
||||
}
|
||||
|
||||
public void testFindClass() {
|
||||
getJavaFacade().setAssertOnFileLoadingFilter(VirtualFileFilter.ALL);
|
||||
getJavaFacade().setAssertOnFileLoadingFilter(VirtualFileFilter.ALL, myTestRootDisposable);
|
||||
|
||||
PsiClass aClass = myJavaFacade.findClass("pack.MyClass", GlobalSearchScope.allScope(myProject));
|
||||
assertNotNull(aClass);
|
||||
checkValid(aClass);
|
||||
|
||||
getJavaFacade().setAssertOnFileLoadingFilter(VirtualFileFilter.NONE);
|
||||
}
|
||||
|
||||
public void testIsInterface() {
|
||||
|
||||
@@ -40,7 +40,7 @@ public class ModifyAnnotationsTest extends PsiTestCase {
|
||||
|
||||
public void testReplaceAnnotation() throws Exception {
|
||||
//be sure not to load tree
|
||||
getJavaFacade().setAssertOnFileLoadingFilter(VirtualFileFilter.ALL);
|
||||
getJavaFacade().setAssertOnFileLoadingFilter(VirtualFileFilter.ALL, myTestRootDisposable);
|
||||
PsiClass aClass = myJavaFacade.findClass("Test", GlobalSearchScope.allScope(myProject));
|
||||
assertNotNull(aClass);
|
||||
final PsiAnnotation[] annotations = aClass.getModifierList().getAnnotations();
|
||||
@@ -48,7 +48,7 @@ public class ModifyAnnotationsTest extends PsiTestCase {
|
||||
assertEquals("A", annotations[0].getNameReferenceElement().getReferenceName());
|
||||
final PsiAnnotation newAnnotation = myJavaFacade.getElementFactory().createAnnotationFromText("@B", null);
|
||||
//here the tree is going to be loaded
|
||||
getJavaFacade().setAssertOnFileLoadingFilter(VirtualFileFilter.NONE);
|
||||
getJavaFacade().setAssertOnFileLoadingFilter(VirtualFileFilter.NONE, myTestRootDisposable);
|
||||
CommandProcessor.getInstance().executeCommand(myProject, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
@@ -299,7 +299,7 @@ public class Src15RepositoryUseTest extends PsiTestCase {
|
||||
public boolean accept(final VirtualFile file) {
|
||||
return !"package-info.java".equals(file.getName());
|
||||
}
|
||||
});
|
||||
}, myTestRootDisposable);
|
||||
|
||||
final PsiClass annotationTypeClass = findClass("annotations.AnnotationType");
|
||||
assertTrue(annotationTypeClass.isAnnotationType());
|
||||
@@ -321,11 +321,11 @@ public class Src15RepositoryUseTest extends PsiTestCase {
|
||||
}
|
||||
|
||||
private void setupLoadingFilter() {
|
||||
getJavaFacade().setAssertOnFileLoadingFilter(VirtualFileFilter.ALL);
|
||||
getJavaFacade().setAssertOnFileLoadingFilter(VirtualFileFilter.ALL, myTestRootDisposable);
|
||||
}
|
||||
|
||||
private void tearDownLoadingFilter() {
|
||||
getJavaFacade().setAssertOnFileLoadingFilter(VirtualFileFilter.NONE);
|
||||
getJavaFacade().setAssertOnFileLoadingFilter(VirtualFileFilter.NONE, myTestRootDisposable);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
|
||||
@@ -584,11 +584,11 @@ public class SrcRepositoryUseTest extends PsiTestCase{
|
||||
}
|
||||
|
||||
private void teardownLoadingFilter() {
|
||||
getJavaFacade().setAssertOnFileLoadingFilter(VirtualFileFilter.NONE);
|
||||
getJavaFacade().setAssertOnFileLoadingFilter(VirtualFileFilter.NONE, myTestRootDisposable);
|
||||
}
|
||||
|
||||
private void setupLoadingFilter() {
|
||||
getJavaFacade().setAssertOnFileLoadingFilter(VirtualFileFilter.ALL);
|
||||
getJavaFacade().setAssertOnFileLoadingFilter(VirtualFileFilter.ALL, myTestRootDisposable);
|
||||
}
|
||||
|
||||
public void testAnonymousClass2() throws Exception {
|
||||
|
||||
@@ -320,15 +320,11 @@ public abstract class DaemonAnalyzerTestCase extends CodeInsightTestCase {
|
||||
}
|
||||
final JavaPsiFacadeEx facade = getJavaFacade();
|
||||
if (facade != null) {
|
||||
facade.setAssertOnFileLoadingFilter(myFileTreeAccessFilter); // check repository work
|
||||
facade.setAssertOnFileLoadingFilter(myFileTreeAccessFilter, myTestRootDisposable); // check repository work
|
||||
}
|
||||
|
||||
Collection<HighlightInfo> infos = doHighlighting();
|
||||
|
||||
if (facade != null) {
|
||||
facade.setAssertOnFileLoadingFilter(VirtualFileFilter.NONE);
|
||||
}
|
||||
|
||||
String text = myEditor.getDocument().getText();
|
||||
data.checkLineMarkers(DaemonCodeAnalyzerImpl.getLineMarkers(getDocument(getFile()), getProject()), text);
|
||||
data.checkResult(infos, text);
|
||||
|
||||
+2
-4
@@ -105,7 +105,7 @@ public abstract class LightDaemonAnalyzerTestCase extends LightCodeInsightTestCa
|
||||
}
|
||||
|
||||
protected void doTestConfiguredFile(boolean checkWarnings, boolean checkWeakWarnings, boolean checkInfos, @Nullable String filePath) {
|
||||
getJavaFacade().setAssertOnFileLoadingFilter(VirtualFileFilter.NONE);
|
||||
getJavaFacade().setAssertOnFileLoadingFilter(VirtualFileFilter.NONE, myTestRootDisposable);
|
||||
|
||||
ExpectedHighlightingData data = new ExpectedHighlightingData(getEditor().getDocument(), checkWarnings, checkWeakWarnings, checkInfos);
|
||||
checkHighlighting(data, composeLocalPath(filePath));
|
||||
@@ -122,12 +122,10 @@ public abstract class LightDaemonAnalyzerTestCase extends LightCodeInsightTestCa
|
||||
PsiDocumentManager.getInstance(getProject()).commitAllDocuments();
|
||||
getFile().getText(); //to load text
|
||||
myJavaFilesFilter.allowTreeAccessForFile(getVFile());
|
||||
getJavaFacade().setAssertOnFileLoadingFilter(myJavaFilesFilter); // check repository work
|
||||
getJavaFacade().setAssertOnFileLoadingFilter(myJavaFilesFilter, myTestRootDisposable); // check repository work
|
||||
|
||||
Collection<HighlightInfo> infos = doHighlighting();
|
||||
|
||||
getJavaFacade().setAssertOnFileLoadingFilter(VirtualFileFilter.NONE);
|
||||
|
||||
data.checkResult(infos, getEditor().getDocument().getText(), filePath);
|
||||
}
|
||||
|
||||
|
||||
@@ -143,9 +143,15 @@ public class PsiManagerImpl extends PsiManagerEx {
|
||||
}
|
||||
|
||||
@TestOnly
|
||||
public void setAssertOnFileLoadingFilter(@NotNull VirtualFileFilter filter) {
|
||||
public void setAssertOnFileLoadingFilter(@NotNull VirtualFileFilter filter, Disposable parentDisposable) {
|
||||
// Find something to ensure there's no changed files waiting to be processed in repository indices.
|
||||
myAssertOnFileLoadingFilter = filter;
|
||||
Disposer.register(parentDisposable, new Disposable() {
|
||||
@Override
|
||||
public void dispose() {
|
||||
myAssertOnFileLoadingFilter = VirtualFileFilter.NONE;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+5
-10
@@ -1437,17 +1437,12 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig
|
||||
|
||||
List<HighlightInfo> infos;
|
||||
final long start = System.currentTimeMillis();
|
||||
try {
|
||||
((PsiManagerImpl)PsiManager.getInstance(project)).setAssertOnFileLoadingFilter(myJavaFilesFilter);
|
||||
((PsiManagerImpl)PsiManager.getInstance(project)).setAssertOnFileLoadingFilter(myJavaFilesFilter, myTestRootDisposable);
|
||||
|
||||
// ProfilingUtil.startCPUProfiling();
|
||||
infos = doHighlighting();
|
||||
removeDuplicatedRangesForInjected(infos);
|
||||
// ProfilingUtil.captureCPUSnapshot("testing");
|
||||
}
|
||||
finally {
|
||||
((PsiManagerImpl)PsiManager.getInstance(project)).setAssertOnFileLoadingFilter(VirtualFileFilter.NONE);
|
||||
}
|
||||
// ProfilingUtil.startCPUProfiling();
|
||||
infos = doHighlighting();
|
||||
removeDuplicatedRangesForInjected(infos);
|
||||
// ProfilingUtil.captureCPUSnapshot("testing");
|
||||
final long elapsed = System.currentTimeMillis() - start;
|
||||
|
||||
data.checkResult(infos, file.getText());
|
||||
|
||||
@@ -44,17 +44,12 @@ public abstract class PyMultiFileResolveTestCase extends PyResolveTestCase {
|
||||
FileType fileType = file.getFileType();
|
||||
return fileType == PythonFileType.INSTANCE;
|
||||
}
|
||||
});
|
||||
try {
|
||||
final ResolveResult[] resolveResults = ref.multiResolve(false);
|
||||
if (resolveResults.length == 0) {
|
||||
return null;
|
||||
}
|
||||
return resolveResults[0].isValidResult() ? resolveResults[0].getElement() : null;
|
||||
}
|
||||
finally {
|
||||
psiManager.setAssertOnFileLoadingFilter(VirtualFileFilter.NONE);
|
||||
}, myTestRootDisposable);
|
||||
final ResolveResult[] resolveResults = ref.multiResolve(false);
|
||||
if (resolveResults.length == 0) {
|
||||
return null;
|
||||
}
|
||||
return resolveResults[0].isValidResult() ? resolveResults[0].getElement() : null;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -114,12 +114,7 @@ public class DomStubUsingTest extends DomStubTest {
|
||||
|
||||
public void testFileLoading() throws Exception {
|
||||
XmlFile file = prepareFile("foo.xml");
|
||||
((PsiManagerImpl)getPsiManager()).setAssertOnFileLoadingFilter(VirtualFileFilter.ALL);
|
||||
try {
|
||||
DomManager.getDomManager(getProject()).getFileElement(file, Foo.class);
|
||||
}
|
||||
finally {
|
||||
((PsiManagerImpl)getPsiManager()).setAssertOnFileLoadingFilter(VirtualFileFilter.NONE);
|
||||
}
|
||||
((PsiManagerImpl)getPsiManager()).setAssertOnFileLoadingFilter(VirtualFileFilter.ALL, myTestRootDisposable);
|
||||
DomManager.getDomManager(getProject()).getFileElement(file, Foo.class);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user