leaks cleanup

This commit is contained in:
Alexey Kudravtsev
2015-11-13 13:57:38 +03:00
parent 2b999838c8
commit 8316363919
3 changed files with 13 additions and 15 deletions
@@ -34,7 +34,6 @@ import com.intellij.psi.impl.source.PsiFileImpl;
import com.intellij.testFramework.LeakHunter;
import com.intellij.testFramework.PlatformTestCase;
import com.intellij.testFramework.fixtures.impl.CodeInsightTestFixtureImpl;
import com.intellij.util.Processor;
public class LoadProjectTest extends PlatformTestCase {
@Override
@@ -82,12 +81,8 @@ public class LoadProjectTest extends PlatformTestCase {
FileEditorManager.getInstance(getProject()).closeFile(b);
ProjectManagerEx.getInstanceEx().closeAndDispose(getProject());
LeakHunter.checkLeak(ApplicationManager.getApplication(), PsiFileImpl.class, new Processor<PsiFileImpl>() {
@Override
public boolean process(PsiFileImpl psiFile) {
return psiFile.getViewProvider().getVirtualFile().getFileSystem() instanceof LocalFileSystem;
}
});
LeakHunter.checkLeak(ApplicationManager.getApplication(), PsiFileImpl.class,
psiFile -> psiFile.getViewProvider().getVirtualFile().getFileSystem() instanceof LocalFileSystem);
}
@Override
@@ -15,9 +15,7 @@
*/
package com.intellij.psi.impl.file.impl;
import com.intellij.ide.IdeEventQueue;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.application.impl.LaterInvocator;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.editor.Document;
import com.intellij.openapi.fileTypes.FileTypeManager;
@@ -193,9 +191,7 @@ public class PsiEventsTest extends PsiTestCase {
return directory.getVirtualFile().equals(myPrjDir1);
}
};
LeakHunter.checkLeak(ApplicationManager.getApplication(), PsiDirectory.class, isReallyLeak);
LeakHunter.checkLeak(IdeEventQueue.getInstance(), PsiDirectory.class, isReallyLeak);
LeakHunter.checkLeak(LaterInvocator.getLaterInvocatorQueue(), PsiDirectory.class, isReallyLeak);
LeakHunter.checkLeak(LeakHunter.allRoots(), PsiDirectory.class, isReallyLeak);
String dumpPath = FileUtil.createTempFile(
new File(System.getProperty("teamcity.build.tempDir", System.getProperty("java.io.tmpdir"))), "testRenameFileWithoutDir", ".hprof",
@@ -792,7 +788,7 @@ public class PsiEventsTest extends PsiTestCase {
assertTrue(documentManager.isCommitted(document));
}
private void checkCommitted(boolean shouldBeCommitted, PsiTreeChangeEvent event) {
private static void checkCommitted(boolean shouldBeCommitted, PsiTreeChangeEvent event) {
PsiFile file = event.getFile();
PsiDocumentManager documentManager = PsiDocumentManager.getInstance(file.getProject());
Document document = documentManager.getDocument(file);
@@ -15,10 +15,12 @@
*/
package com.intellij.testFramework;
import com.intellij.ide.IdeEventQueue;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.extensions.Extensions;
import com.intellij.openapi.application.impl.LaterInvocator;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.project.impl.ProjectImpl;
import com.intellij.openapi.util.Disposer;
import com.intellij.openapi.util.Key;
import com.intellij.openapi.util.UserDataHolder;
import com.intellij.openapi.util.UserDataHolderEx;
@@ -88,7 +90,7 @@ public class LeakHunter {
return !project.isDefault() && !((ProjectImpl)project).isLight();
}
};
Collection<Object> roots = new ArrayList<Object>(Arrays.asList(ApplicationManager.getApplication(), Extensions.getRootArea()));
Collection<Object> roots = new ArrayList<Object>(allRoots());
ClassLoader classLoader = LeakHunter.class.getClassLoader();
Vector<Class> allLoadedClasses = ReflectionUtil.getField(classLoader.getClass(), classLoader, Vector.class, "classes");
roots.addAll(allLoadedClasses); // inspect static fields of all loaded classes
@@ -142,4 +144,9 @@ public class LeakHunter {
public static <T> void checkLeak(@NotNull Object root, @NotNull Class<T> suspectClass, @Nullable final Processor<? super T> isReallyLeak) throws AssertionError {
checkLeak(Collections.singletonList(root), suspectClass, isReallyLeak);
}
@NotNull
public static List<Object> allRoots() {
return Arrays.asList(ApplicationManager.getApplication(), Disposer.getTree(), IdeEventQueue.getInstance(), LaterInvocator.getLaterInvocatorQueue());
}
}