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;