mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
leaks cleanup
This commit is contained in:
@@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user