From faed7e2fc6e14f6f09b00cc4c7d4d39955b77a47 Mon Sep 17 00:00:00 2001 From: Egor Ushakov Date: Wed, 14 Feb 2018 20:29:35 +0300 Subject: [PATCH] allow to unregister all extensions (IDEA-CR-29295) --- .../java/openapi/roots/impl/DirectoryIndexTest.java | 7 +------ .../src/com/intellij/testFramework/PlatformTestUtil.java | 7 +++++++ 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/java/java-tests/testSrc/com/intellij/java/openapi/roots/impl/DirectoryIndexTest.java b/java/java-tests/testSrc/com/intellij/java/openapi/roots/impl/DirectoryIndexTest.java index 60a4ac26fbe2..adcf4b8567ab 100644 --- a/java/java-tests/testSrc/com/intellij/java/openapi/roots/impl/DirectoryIndexTest.java +++ b/java/java-tests/testSrc/com/intellij/java/openapi/roots/impl/DirectoryIndexTest.java @@ -167,12 +167,7 @@ public class DirectoryIndexTest extends DirectoryIndexTestCase { Arrays.asList(myExcludedLibClsDir.getUrl(), myExcludedLibSrcDir.getUrl()), DependencyScope.COMPILE, true); } - for (AdditionalLibraryRootsProvider provider : AdditionalLibraryRootsProvider.EP_NAME.getExtensions()) { - for (SyntheticLibrary library : provider.getAdditionalProjectLibraries(getProject())) { - myLibAdditionalSrcDirs.addAll(library.getSourceRoots()); - myLibAdditionalClsDirs.addAll(library.getBinaryRoots()); - } - } + PlatformTestUtil.unregisterAllExtensions(AdditionalLibraryRootsProvider.EP_NAME, getTestRootDisposable()); PlatformTestUtil.registerExtension(AdditionalLibraryRootsProvider.EP_NAME, new AdditionalLibraryRootsProvider() { @NotNull @Override diff --git a/platform/testFramework/src/com/intellij/testFramework/PlatformTestUtil.java b/platform/testFramework/src/com/intellij/testFramework/PlatformTestUtil.java index ac9d935fc6da..9401af23b1cb 100644 --- a/platform/testFramework/src/com/intellij/testFramework/PlatformTestUtil.java +++ b/platform/testFramework/src/com/intellij/testFramework/PlatformTestUtil.java @@ -135,6 +135,13 @@ public class PlatformTestUtil { Disposer.register(parentDisposable, () -> extensionPoint.unregisterExtension(t)); } + public static void unregisterAllExtensions(@NotNull ExtensionPointName name, @NotNull Disposable parentDisposable) { + ExtensionPoint extensionPoint = Extensions.getRootArea().getExtensionPoint(name.getName()); + T[] extensions = name.getExtensions(); + Arrays.stream(extensions).forEach(extensionPoint::unregisterExtension); + Disposer.register(parentDisposable, () -> Arrays.stream(extensions).forEach(extensionPoint::registerExtension)); + } + @Nullable public static String toString(@Nullable Object node, @Nullable Queryable.PrintInfo printInfo) { if (node instanceof AbstractTreeNode) {