exceptions in checkEditorLeaks

This commit is contained in:
Alexey Kudravtsev
2011-12-21 16:30:50 +04:00
parent c42c197ac5
commit 871f81e792
@@ -57,6 +57,7 @@ import com.intellij.openapi.module.ModuleType;
import com.intellij.openapi.project.ModuleListener;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.project.ProjectManager;
import com.intellij.openapi.project.ProjectManagerAdapter;
import com.intellij.openapi.project.ex.ProjectEx;
import com.intellij.openapi.project.ex.ProjectManagerEx;
import com.intellij.openapi.project.impl.ProjectImpl;
@@ -212,7 +213,6 @@ public abstract class LightPlatformTestCase extends UsefulTestCase implements Da
new Throwable(projectFile.getPath()).printStackTrace(new PrintStream(buffer));
ourProject = PlatformTestCase.createProject(projectFile, LIGHT_PROJECT_MARK +buffer.toString());
if (!ourHaveShutdownHook) {
ourHaveShutdownHook = true;
registerShutdownHook();
@@ -348,7 +348,8 @@ public abstract class LightPlatformTestCase extends UsefulTestCase implements Da
}
((ProjectImpl)ourProject).setTemporarilyDisposed(false);
ProjectManagerEx.getInstanceEx().setCurrentTestProject(ourProject);
ProjectManagerEx projectManagerEx = ProjectManagerEx.getInstanceEx();
projectManagerEx.setCurrentTestProject(ourProject);
((PsiDocumentManagerImpl)PsiDocumentManager.getInstance(getProject())).clearUncommitedDocuments();
@@ -417,7 +418,8 @@ public abstract class LightPlatformTestCase extends UsefulTestCase implements Da
catch (Exception e) {
}
assertTrue("open: "+getProject().isOpen()+"; disposed:"+getProject().isDisposed()+"; startup passed:"+ passed+"; testProjectIsOurProject:"+(getProject() == ProjectManagerEx.getInstanceEx().getCurrentTestProject())+"; all open projects: "+
assertTrue("open: "+getProject().isOpen()+"; disposed:"+getProject().isDisposed()+"; startup passed:"+ passed+"; testProjectIsOurProject:"+(getProject() == projectManagerEx
.getCurrentTestProject())+"; all open projects: "+
Arrays.asList(ProjectManager.getInstance().getOpenProjects()), getProject().isInitialized());
CodeStyleSettingsManager.getInstance(getProject()).setTemporarySettings(new CodeStyleSettings());
@@ -427,6 +429,7 @@ public abstract class LightPlatformTestCase extends UsefulTestCase implements Da
Document[] unsavedDocuments = manager.getUnsavedDocuments();
manager.saveAllDocuments();
ApplicationManager.getApplication().runWriteAction(new Runnable() {
@Override
public void run() {
((FileDocumentManagerImpl)manager).dropAllUnsavedDocuments();
}
@@ -549,16 +552,28 @@ public abstract class LightPlatformTestCase extends UsefulTestCase implements Da
}
}
public static void checkEditorsReleased() {
public static void checkEditorsReleased() throws Exception {
CompositeException result = new CompositeException();
final Editor[] allEditors = EditorFactory.getInstance().getAllEditors();
if (allEditors.length > 0) {
String fail = null;
for (Editor editor : allEditors) {
fail = EditorFactoryImpl.notReleasedError(editor);
EditorFactory.getInstance().releaseEditor(editor);
try {
EditorFactory.getInstance().releaseEditor(editor);
}
catch (Throwable e) {
result.add(e);
}
}
try {
fail("Unreleased editors: " + allEditors.length + "\n"+fail);
}
catch (Throwable e) {
result.add(e);
}
fail("Unreleased editors: " + allEditors.length + "\n"+fail);
}
if (!result.isEmpty()) throw result;
}
@Override
@@ -723,6 +738,7 @@ public abstract class LightPlatformTestCase extends UsefulTestCase implements Da
@Override
public void run() {
ApplicationManager.getApplication().runWriteAction(new Runnable() {
@Override
public void run() {
closeAndDeleteProject();
}