diff --git a/platform/testFramework/src/_LastInSuiteTest.java b/platform/testFramework/src/_LastInSuiteTest.java index 01aec556473a..ee675d7b6ccf 100644 --- a/platform/testFramework/src/_LastInSuiteTest.java +++ b/platform/testFramework/src/_LastInSuiteTest.java @@ -72,6 +72,7 @@ public class _LastInSuiteTest extends TestCase { Map, Collection>> extensions = collectDynamicNonPlatformExtensions(); unloadExtensionPoints(extensions.keySet()); + startCorePluginUnload(); disposePluginDisposables(); ProjectManager pm = ProjectManager.getInstanceIfCreated(); if (pm != null) { @@ -79,6 +80,7 @@ public class _LastInSuiteTest extends TestCase { ((CachedValuesManagerImpl) CachedValuesManager.getManager(project)).clearCachedValues(); } } + finishCorePluginUnload(); GCUtil.tryGcSoftlyReachableObjects(); System.gc(); @@ -125,6 +127,9 @@ public class _LastInSuiteTest extends TestCase { ep.unregisterExtensions((a, b) -> false, false); }); } + } + + private static void startCorePluginUnload() { IdeaPluginDescriptor corePlugin = PluginManagerCore.getPlugin(PluginManagerCore.CORE_ID); assert corePlugin != null; WriteAction.runAndWait(() -> { @@ -133,6 +138,15 @@ public class _LastInSuiteTest extends TestCase { }); } + private static void finishCorePluginUnload() { + IdeaPluginDescriptor corePlugin = PluginManagerCore.getPlugin(PluginManagerCore.CORE_ID); + assert corePlugin != null; + WriteAction.runAndWait(() -> { + ApplicationManager.getApplication().getMessageBus().syncPublisher(DynamicPluginListener.TOPIC) + .pluginUnloaded(corePlugin, false); + }); + } + @NotNull private static Map, Collection>> collectDynamicNonPlatformExtensions() { boolean useWhiteList = !SystemProperties.getBooleanProperty("intellij.test.all.dynamic.extension.points", false);