diff --git a/.idea/artifacts/localplugin.xml b/.idea/artifacts/localplugin.xml
new file mode 100644
index 00000000000..732d0993edb
--- /dev/null
+++ b/.idea/artifacts/localplugin.xml
@@ -0,0 +1,20 @@
+
+
+ $PROJECT_DIR$/out/LocalPlugin
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/junit_plugin.xml b/.idea/libraries/junit_plugin.xml
new file mode 100644
index 00000000000..073fd5bae5f
--- /dev/null
+++ b/.idea/libraries/junit_plugin.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
index 759d4087723..20465f11d63 100644
--- a/.idea/modules.xml
+++ b/.idea/modules.xml
@@ -13,6 +13,7 @@
+
diff --git a/.idea/runConfigurations/IDEA.xml b/.idea/runConfigurations/IDEA.xml
index 52b7dc952cc..2c3868f8bd4 100644
--- a/.idea/runConfigurations/IDEA.xml
+++ b/.idea/runConfigurations/IDEA.xml
@@ -1,7 +1,7 @@
-
+
@@ -9,7 +9,7 @@
-
+
@@ -19,6 +19,10 @@
-
+
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/IDEA__No_ProcessCanceledException_.xml b/.idea/runConfigurations/IDEA__No_ProcessCanceledException_.xml
index a1c3729fc50..c96e7e56716 100644
--- a/.idea/runConfigurations/IDEA__No_ProcessCanceledException_.xml
+++ b/.idea/runConfigurations/IDEA__No_ProcessCanceledException_.xml
@@ -2,7 +2,7 @@
-
+
@@ -10,7 +10,7 @@
-
+
@@ -20,6 +20,10 @@
-
+
+
+
\ No newline at end of file
diff --git a/idea/idea.iml b/idea/idea.iml
index 18f0c4867e6..354a43a561e 100644
--- a/idea/idea.iml
+++ b/idea/idea.iml
@@ -24,6 +24,7 @@
+
diff --git a/idea/src/META-INF/plugin.xml b/idea/src/META-INF/plugin.xml
index 3421b9817a4..149415999f4 100644
--- a/idea/src/META-INF/plugin.xml
+++ b/idea/src/META-INF/plugin.xml
@@ -4,6 +4,8 @@
@snapshot@
JetBrains
+ JUnit
+
org.jetbrains.jet.plugin.compiler.JetCompilerManager
@@ -106,6 +108,7 @@
+
diff --git a/idea/src/org/jetbrains/jet/plugin/run/JetJUnitConfigurationProducer.java b/idea/src/org/jetbrains/jet/plugin/run/JetJUnitConfigurationProducer.java
new file mode 100644
index 00000000000..6b6106d8978
--- /dev/null
+++ b/idea/src/org/jetbrains/jet/plugin/run/JetJUnitConfigurationProducer.java
@@ -0,0 +1,78 @@
+/*
+ * Copyright 2000-2012 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ * @author max
+ */
+package org.jetbrains.jet.plugin.run;
+
+import com.intellij.execution.JavaRunConfigurationExtensionManager;
+import com.intellij.execution.Location;
+import com.intellij.execution.RunnerAndConfigurationSettings;
+import com.intellij.execution.actions.ConfigurationContext;
+import com.intellij.execution.junit.JUnitConfiguration;
+import com.intellij.execution.junit.JUnitConfigurationType;
+import com.intellij.execution.junit.RuntimeConfigurationProducer;
+import com.intellij.openapi.module.Module;
+import com.intellij.psi.PsiClass;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.util.PsiTreeUtil;
+import org.jetbrains.jet.asJava.JetLightClass;
+import org.jetbrains.jet.lang.psi.JetClass;
+import org.jetbrains.jet.lang.psi.JetElement;
+import org.jetbrains.jet.lang.psi.JetFile;
+import org.jetbrains.jet.lang.psi.JetPsiUtil;
+
+public class JetJUnitConfigurationProducer extends RuntimeConfigurationProducer {
+ private JetElement myElement;
+
+ public JetJUnitConfigurationProducer() {
+ super(JUnitConfigurationType.getInstance());
+ }
+
+ @Override
+ public PsiElement getSourceElement() {
+ return myElement;
+ }
+
+ @Override
+ protected RunnerAndConfigurationSettings createConfigurationByElement(Location location, ConfigurationContext context) {
+
+ PsiElement leaf = location.getPsiElement();
+ JetClass jetClass = PsiTreeUtil.getParentOfType(leaf, JetClass.class);
+ if (jetClass != null) {
+ myElement = jetClass;
+ PsiClass delegate = new JetLightClass(jetClass.getManager(), (JetFile) jetClass.getContainingFile(), JetPsiUtil.getFQName(jetClass));
+
+ RunnerAndConfigurationSettings settings = cloneTemplateConfiguration(jetClass.getProject(), context);
+ final JUnitConfiguration configuration = (JUnitConfiguration)settings.getConfiguration();
+
+ final Module originalModule = configuration.getConfigurationModule().getModule();
+ configuration.beClassConfiguration(delegate);
+ configuration.restoreOriginalModule(originalModule);
+ JavaRunConfigurationExtensionManager.getInstance().extendCreatedConfiguration(configuration, location);
+ return settings;
+
+ }
+
+ return null;
+ }
+
+ @Override
+ public int compareTo(Object o) {
+ return 0;
+ }
+}
diff --git a/idea_runner/idea_runner.iml b/idea_runner/idea_runner.iml
new file mode 100644
index 00000000000..36789930dda
--- /dev/null
+++ b/idea_runner/idea_runner.iml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+