From 871f81e792ca56110e36aec41dd110a60191c0c0 Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Wed, 21 Dec 2011 16:00:43 +0400 Subject: [PATCH] exceptions in checkEditorLeaks --- .../testFramework/LightPlatformTestCase.java | 28 +++++++++++++++---- 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/platform/testFramework/src/com/intellij/testFramework/LightPlatformTestCase.java b/platform/testFramework/src/com/intellij/testFramework/LightPlatformTestCase.java index 22c2b96272d4..51dc16b45582 100644 --- a/platform/testFramework/src/com/intellij/testFramework/LightPlatformTestCase.java +++ b/platform/testFramework/src/com/intellij/testFramework/LightPlatformTestCase.java @@ -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(); }