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 @@ \ 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 @@ \ 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 @@ + + + + + + + + + + +