allow to unregister all extensions (IDEA-CR-29295)

This commit is contained in:
Egor Ushakov
2018-02-14 20:30:46 +03:00
parent 57a1ca5bd9
commit faed7e2fc6
2 changed files with 8 additions and 6 deletions
@@ -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
@@ -135,6 +135,13 @@ public class PlatformTestUtil {
Disposer.register(parentDisposable, () -> extensionPoint.unregisterExtension(t));
}
public static <T> void unregisterAllExtensions(@NotNull ExtensionPointName<T> name, @NotNull Disposable parentDisposable) {
ExtensionPoint<T> 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) {