mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-18 09:34:34 +07:00
IDEA-116727: Excluded library directories: removing a root does not removes its excludes
This commit is contained in:
@@ -3,17 +3,19 @@ package com.intellij.roots.libraries;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.roots.OrderRootType;
|
||||
import com.intellij.openapi.roots.RootProvider;
|
||||
import com.intellij.openapi.roots.impl.libraries.LibraryEx;
|
||||
import com.intellij.openapi.roots.libraries.Library;
|
||||
import com.intellij.openapi.roots.libraries.LibraryTable;
|
||||
import com.intellij.openapi.roots.libraries.LibraryTablesRegistrar;
|
||||
import com.intellij.testFramework.IdeaTestCase;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.roots.ModuleRootManagerTestCase;
|
||||
import org.jdom.Element;
|
||||
import org.jdom.output.XMLOutputter;
|
||||
|
||||
/**
|
||||
* @author dsl
|
||||
*/
|
||||
public class LibraryTest extends IdeaTestCase {
|
||||
public class LibraryTest extends ModuleRootManagerTestCase {
|
||||
public void testModification() throws Exception {
|
||||
final LibraryTable libraryTable = LibraryTablesRegistrar.getInstance().getLibraryTable();
|
||||
final Library library = libraryTable.createLibrary("NewLibrary");
|
||||
@@ -25,27 +27,17 @@ public class LibraryTest extends IdeaTestCase {
|
||||
}
|
||||
|
||||
});
|
||||
final Library.ModifiableModel modifyableModel = library.getModifiableModel();
|
||||
modifyableModel.addRoot("file://x.jar", OrderRootType.CLASSES);
|
||||
modifyableModel.addRoot("file://x-src.jar", OrderRootType.SOURCES);
|
||||
ApplicationManager.getApplication().runWriteAction(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
modifyableModel.commit();
|
||||
}
|
||||
});
|
||||
final Library.ModifiableModel model1 = library.getModifiableModel();
|
||||
model1.addRoot("file://x.jar", OrderRootType.CLASSES);
|
||||
model1.addRoot("file://x-src.jar", OrderRootType.SOURCES);
|
||||
commit(model1);
|
||||
assertTrue(listenerNotifiedOnChange[0]);
|
||||
|
||||
listenerNotifiedOnChange[0] = false;
|
||||
|
||||
final Library.ModifiableModel modifyableModel1 = library.getModifiableModel();
|
||||
modifyableModel1.setName("library");
|
||||
ApplicationManager.getApplication().runWriteAction(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
modifyableModel1.commit();
|
||||
}
|
||||
});
|
||||
final Library.ModifiableModel model2 = library.getModifiableModel();
|
||||
model2.setName("library");
|
||||
commit(model2);
|
||||
assertFalse(listenerNotifiedOnChange[0]);
|
||||
|
||||
final Element element = new Element("root");
|
||||
@@ -60,4 +52,47 @@ public class LibraryTest extends IdeaTestCase {
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void testAddRemoveExcludedRoot() {
|
||||
VirtualFile jar = getJDomJar();
|
||||
LibraryEx library = (LibraryEx)createLibrary("junit", jar, null);
|
||||
assertEmpty(library.getExcludedRoots());
|
||||
|
||||
LibraryEx.ModifiableModelEx model = library.getModifiableModel();
|
||||
model.addExcludedRoot(jar.getUrl());
|
||||
commit(model);
|
||||
assertOrderedEquals(library.getExcludedRoots(), jar);
|
||||
|
||||
LibraryEx.ModifiableModelEx model2 = library.getModifiableModel();
|
||||
model2.removeExcludedRoot(jar.getUrl());
|
||||
commit(model2);
|
||||
assertEmpty(library.getExcludedRoots());
|
||||
}
|
||||
|
||||
public void testRemoveExcludedRootWhenParentRootIsRemoved() {
|
||||
VirtualFile jar = getJDomJar();
|
||||
LibraryEx library = (LibraryEx)createLibrary("junit", jar, null);
|
||||
|
||||
LibraryEx.ModifiableModelEx model = library.getModifiableModel();
|
||||
VirtualFile excluded = jar.findChild("org");
|
||||
assertNotNull(excluded);
|
||||
model.addExcludedRoot(excluded.getUrl());
|
||||
commit(model);
|
||||
|
||||
assertOrderedEquals(library.getExcludedRoots(), excluded);
|
||||
LibraryEx.ModifiableModelEx model2 = library.getModifiableModel();
|
||||
model2.removeRoot(jar.getUrl(), OrderRootType.CLASSES);
|
||||
commit(model2);
|
||||
|
||||
assertEmpty(library.getExcludedRoots());
|
||||
}
|
||||
|
||||
private static void commit(final Library.ModifiableModel modifyableModel1) {
|
||||
ApplicationManager.getApplication().runWriteAction(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
modifyableModel1.commit();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user