diff --git a/resources/src/componentSets/CodeInsight.xml b/resources/src/componentSets/CodeInsight.xml index 49d8b39009ea..abc2afe242c7 100644 --- a/resources/src/componentSets/CodeInsight.xml +++ b/resources/src/componentSets/CodeInsight.xml @@ -67,6 +67,7 @@ com.intellij.codeInsight.lookup.LookupManager com.intellij.codeInsight.lookup.impl.LookupManagerImpl + com.intellij.codeInsight.lookup.impl.TestLookupManager com.intellij.codeInsight.intention.IntentionManager diff --git a/resources/src/componentSets/Editor.xml b/resources/src/componentSets/Editor.xml index 0a611ca1910f..8d22b71e1166 100644 --- a/resources/src/componentSets/Editor.xml +++ b/resources/src/componentSets/Editor.xml @@ -46,6 +46,7 @@ com.intellij.openapi.fileEditor.FileEditorManager com.intellij.openapi.fileEditor.impl.FileEditorManagerImpl + com.intellij.testFramework.TestEditorManagerImpl diff --git a/resources/src/componentSets/WindowManagement.xml b/resources/src/componentSets/WindowManagement.xml index 5671ca304ad0..0468eae60295 100644 --- a/resources/src/componentSets/WindowManagement.xml +++ b/resources/src/componentSets/WindowManagement.xml @@ -3,6 +3,7 @@ com.intellij.openapi.wm.WindowManager com.intellij.openapi.wm.impl.WindowManagerImpl + com.intellij.openapi.wm.impl.TestWindowManager @@ -10,6 +11,7 @@ com.intellij.openapi.wm.ToolWindowManager com.intellij.openapi.wm.impl.ToolWindowManagerImpl + diff --git a/source/com/intellij/ide/plugins/PluginManager.java b/source/com/intellij/ide/plugins/PluginManager.java index 09f40eb5ce78..0b819146f85e 100644 --- a/source/com/intellij/ide/plugins/PluginManager.java +++ b/source/com/intellij/ide/plugins/PluginManager.java @@ -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) { diff --git a/source/com/intellij/ide/plugins/cl/PluginClassLoader.java b/source/com/intellij/ide/plugins/cl/PluginClassLoader.java index e0c2af065a31..df70fdec83fb 100644 --- a/source/com/intellij/ide/plugins/cl/PluginClassLoader.java +++ b/source/com/intellij/ide/plugins/cl/PluginClassLoader.java @@ -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); } } } diff --git a/source/com/intellij/idea/IdeaTestApplication.java b/source/com/intellij/idea/IdeaTestApplication.java index 7dfa2135e2b5..cdbcb52eca88 100644 --- a/source/com/intellij/idea/IdeaTestApplication.java +++ b/source/com/intellij/idea/IdeaTestApplication.java @@ -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; } diff --git a/source/com/intellij/openapi/components/impl/ComponentManagerImpl.java b/source/com/intellij/openapi/components/impl/ComponentManagerImpl.java index 70623ca20c42..71ea2caa05ba 100644 --- a/source/com/intellij/openapi/components/impl/ComponentManagerImpl.java +++ b/source/com/intellij/openapi/components/impl/ComponentManagerImpl.java @@ -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;