mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
assertion to prohibit closeProject() call within write action because fireClosing() listeners must have a chance to do something useful (e.g. cancel and wait for VCSInitialization to complete)
+ allow tests to register custom project cleanups
This commit is contained in:
@@ -21,6 +21,7 @@ import com.intellij.openapi.application.impl.ApplicationImpl;
|
||||
import com.intellij.openapi.util.Disposer;
|
||||
import com.intellij.testFramework.LeakHunter;
|
||||
import com.intellij.testFramework.LightPlatformTestCase;
|
||||
import com.intellij.testFramework.PlatformTestUtil;
|
||||
import com.intellij.util.ReflectionUtil;
|
||||
import com.intellij.util.concurrency.AppExecutorUtil;
|
||||
import com.intellij.util.concurrency.AppScheduledExecutorService;
|
||||
@@ -49,8 +50,8 @@ public class _LastInSuiteTest extends TestCase {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
|
||||
// disposes default project too
|
||||
LightPlatformTestCase.closeAndDeleteProject();
|
||||
// disposes default projects too
|
||||
PlatformTestUtil.cleanupAllProjects();
|
||||
ApplicationImpl application = (ApplicationImpl)ApplicationManager.getApplication();
|
||||
System.out.println(application.writeActionStatistics());
|
||||
System.out.println(ActionUtil.ACTION_UPDATE_PAUSES.statistics());
|
||||
|
||||
@@ -135,6 +135,10 @@ public abstract class LightPlatformTestCase extends UsefulTestCase implements Da
|
||||
private static LightProjectDescriptor ourProjectDescriptor;
|
||||
|
||||
private ThreadTracker myThreadTracker;
|
||||
|
||||
static {
|
||||
PlatformTestUtil.registerProjectCleanup(LightPlatformTestCase::closeAndDeleteProject);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Project to be used in tests for example for project components retrieval.
|
||||
|
||||
@@ -76,6 +76,7 @@ import java.text.DecimalFormat;
|
||||
import java.text.DecimalFormatSymbols;
|
||||
import java.util.*;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.CopyOnWriteArrayList;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
import java.util.jar.JarFile;
|
||||
|
||||
@@ -88,6 +89,8 @@ public class PlatformTestUtil {
|
||||
|
||||
public static final boolean SKIP_HEADLESS = GraphicsEnvironment.isHeadless();
|
||||
public static final boolean SKIP_SLOW = Boolean.getBoolean("skip.slow.tests.locally");
|
||||
|
||||
private static final List<Runnable> ourProjectCleanups = new CopyOnWriteArrayList<>();
|
||||
|
||||
@NotNull
|
||||
public static String getTestName(@NotNull String name, boolean lowercaseFirstLetter) {
|
||||
@@ -956,4 +959,16 @@ public class PlatformTestUtil {
|
||||
});
|
||||
return refs;
|
||||
}
|
||||
|
||||
public static void registerProjectCleanup(@NotNull Runnable cleanup) {
|
||||
ourProjectCleanups.add(cleanup);
|
||||
}
|
||||
|
||||
public static void cleanupAllProjects() {
|
||||
for (Runnable each : ourProjectCleanups) {
|
||||
each.run();
|
||||
}
|
||||
ourProjectCleanups.clear();
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user