Get rid of IdeaTestComponents.xml when running tests. Tests also do load plugins now.

This commit is contained in:
Maxim Shafirov
2005-03-07 21:07:00 +03:00
parent 2e1a12e6ea
commit e642a656ae
7 changed files with 22 additions and 17 deletions
@@ -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>
+1
View File
@@ -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;