mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Get rid of IdeaTestComponents.xml when running tests. Tests also do load plugins now.
This commit is contained in:
@@ -67,6 +67,7 @@
|
||||
<component>
|
||||
<interface-class>com.intellij.codeInsight.lookup.LookupManager</interface-class>
|
||||
<implementation-class>com.intellij.codeInsight.lookup.impl.LookupManagerImpl</implementation-class>
|
||||
<test-implementation-class>com.intellij.codeInsight.lookup.impl.TestLookupManager</test-implementation-class>
|
||||
</component>
|
||||
<component>
|
||||
<interface-class>com.intellij.codeInsight.intention.IntentionManager</interface-class>
|
||||
|
||||
@@ -46,6 +46,7 @@
|
||||
<component>
|
||||
<interface-class>com.intellij.openapi.fileEditor.FileEditorManager</interface-class>
|
||||
<implementation-class>com.intellij.openapi.fileEditor.impl.FileEditorManagerImpl</implementation-class>
|
||||
<test-implementation-class>com.intellij.testFramework.TestEditorManagerImpl</test-implementation-class>
|
||||
<option name="workspace" value="true"/>
|
||||
</component>
|
||||
<component>
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
<component>
|
||||
<interface-class>com.intellij.openapi.wm.WindowManager</interface-class>
|
||||
<implementation-class>com.intellij.openapi.wm.impl.WindowManagerImpl</implementation-class>
|
||||
<test-implementation-class>com.intellij.openapi.wm.impl.TestWindowManager</test-implementation-class>
|
||||
</component>
|
||||
</application-components>
|
||||
|
||||
@@ -10,6 +11,7 @@
|
||||
<component>
|
||||
<interface-class>com.intellij.openapi.wm.ToolWindowManager</interface-class>
|
||||
<implementation-class>com.intellij.openapi.wm.impl.ToolWindowManagerImpl</implementation-class>
|
||||
<test-implementation-class></test-implementation-class>
|
||||
<option name="workspace" value="true"/>
|
||||
</component>
|
||||
</project-components>
|
||||
|
||||
@@ -7,7 +7,6 @@ import com.intellij.ide.plugins.cl.IdeaClassLoader;
|
||||
import com.intellij.ide.plugins.cl.PluginClassLoader;
|
||||
import com.intellij.ide.startup.StartupActionScriptManager;
|
||||
import com.intellij.openapi.application.PathManager;
|
||||
import com.intellij.openapi.application.ex.ApplicationManagerEx;
|
||||
import com.intellij.openapi.diagnostic.ErrorReportSubmitter;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.extensions.*;
|
||||
@@ -153,7 +152,7 @@ public class PluginManager {
|
||||
return false;
|
||||
}
|
||||
final String loadPlugins = System.getProperty("idea.load.plugins");
|
||||
return ApplicationManagerEx.getApplicationEx() != null && !ApplicationManagerEx.getApplicationEx().isUnitTestMode() && (loadPlugins == null || "true".equals(loadPlugins));
|
||||
return loadPlugins == null || "true".equals(loadPlugins);
|
||||
}
|
||||
|
||||
public static boolean shouldLoadPlugin(PluginDescriptor descriptor) {
|
||||
|
||||
@@ -95,8 +95,7 @@ public class PluginClassLoader extends IdeaClassLoader{
|
||||
private URL fetchResource(ClassLoader cl, String resourceName) {
|
||||
//protected URL findResource(String s)
|
||||
try {
|
||||
final Method findResourceMethod = cl.getClass().getDeclaredMethod("findResource", new Class[] {String.class});
|
||||
findResourceMethod.setAccessible(true);
|
||||
final Method findResourceMethod = getFindResourceMethod(cl.getClass(), "findResource");
|
||||
return (URL)findResourceMethod.invoke(cl, new Object[] {resourceName});
|
||||
}
|
||||
catch (Exception e) {
|
||||
@@ -108,11 +107,10 @@ public class PluginClassLoader extends IdeaClassLoader{
|
||||
private Enumeration fetchResources(ClassLoader cl, String resourceName) {
|
||||
//protected Enumeration findResources(String s) throws IOException
|
||||
try {
|
||||
final Method findResourceMethod = getFindResourceMethod(cl.getClass());
|
||||
final Method findResourceMethod = getFindResourceMethod(cl.getClass(), "findResources");
|
||||
if (findResourceMethod == null) {
|
||||
return null;
|
||||
}
|
||||
findResourceMethod.setAccessible(true);
|
||||
return (Enumeration)findResourceMethod.invoke(cl, new Object[] {resourceName});
|
||||
}
|
||||
catch (Exception e) {
|
||||
@@ -121,16 +119,18 @@ public class PluginClassLoader extends IdeaClassLoader{
|
||||
}
|
||||
}
|
||||
|
||||
private Method getFindResourceMethod(final Class clClass) {
|
||||
private Method getFindResourceMethod(final Class clClass, final String methodName) {
|
||||
try {
|
||||
return clClass.getDeclaredMethod("findResources", new Class[] {String.class});
|
||||
final Method declaredMethod = clClass.getDeclaredMethod(methodName, new Class[]{String.class});
|
||||
declaredMethod.setAccessible(true);
|
||||
return declaredMethod;
|
||||
}
|
||||
catch (NoSuchMethodException e) {
|
||||
final Class superclass = clClass.getSuperclass();
|
||||
if (superclass == null || superclass.equals(Object.class)) {
|
||||
return null;
|
||||
}
|
||||
return getFindResourceMethod(superclass);
|
||||
return getFindResourceMethod(superclass, methodName);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,10 +1,7 @@
|
||||
package com.intellij.idea;
|
||||
|
||||
import com.intellij.ExtensionPoints;
|
||||
import com.intellij.execution.JUnitPatcher;
|
||||
import com.intellij.openapi.actionSystem.DataProvider;
|
||||
import com.intellij.openapi.application.ex.ApplicationManagerEx;
|
||||
import com.intellij.openapi.extensions.Extensions;
|
||||
import com.intellij.openapi.util.InvalidDataException;
|
||||
|
||||
import java.io.IOException;
|
||||
@@ -13,7 +10,7 @@ public class IdeaTestApplication extends CommandLineApplication {
|
||||
private DataProvider myDataContext;
|
||||
|
||||
private IdeaTestApplication() {
|
||||
super(false, true, "componentSets/IdeaTestComponents");
|
||||
super(false, true, "componentSets/IdeaComponents");
|
||||
}
|
||||
|
||||
public void setDataProvider(DataProvider dataContext) {
|
||||
@@ -29,9 +26,6 @@ public class IdeaTestApplication extends CommandLineApplication {
|
||||
//Logger.setFactory(LoggerFactory.getInstance());
|
||||
new IdeaTestApplication();
|
||||
ApplicationManagerEx.getApplicationEx().load(null);
|
||||
Extensions.registerAreaClass("IDEA_PROJECT", null);
|
||||
Extensions.registerAreaClass("IDEA_MODULE", "IDEA_PROJECT");
|
||||
Extensions.getRootArea().registerExtensionPoint(ExtensionPoints.JUNIT_PATCHER, JUnitPatcher.class.getName());
|
||||
}
|
||||
return (IdeaTestApplication)ourInstance;
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ import com.intellij.diagnostic.PluginException;
|
||||
import com.intellij.ide.plugins.ComponentDescriptor;
|
||||
import com.intellij.ide.plugins.PluginDescriptor;
|
||||
import com.intellij.ide.plugins.PluginManager;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.application.ex.ApplicationManagerEx;
|
||||
import com.intellij.openapi.application.ex.DecodeDefaultsUtil;
|
||||
import com.intellij.openapi.components.BaseComponent;
|
||||
@@ -491,13 +492,20 @@ public abstract class ComponentManagerImpl extends UserDataHolderBase implements
|
||||
|
||||
public void loadComponentsConfiguration(final Element element, PluginDescriptor descriptor) {
|
||||
if (element == null) return;
|
||||
|
||||
final boolean testMode = ApplicationManager.getApplication().isUnitTestMode();
|
||||
for (Iterator i = element.getChildren().iterator(); i.hasNext();) {
|
||||
try {
|
||||
Element child = (Element)i.next();
|
||||
if ("component".equals(child.getName())) {
|
||||
String interfaceClass = child.getChildText("interface-class");
|
||||
String implClass = child.getChildText("implementation-class");
|
||||
if (testMode) {
|
||||
String testImplClass = child.getChildText("test-implementation-class");
|
||||
if (testImplClass != null) {
|
||||
if (testImplClass.trim().length() == 0) continue;
|
||||
implClass = testImplClass;
|
||||
}
|
||||
}
|
||||
|
||||
if (interfaceClass == null) interfaceClass = implClass;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user