IDEA-79735 android: perform light build when test-ng or scala test configurations are used

This commit is contained in:
Eugene Kudelevsky
2012-01-13 12:05:35 +04:00
parent b8665b9e03
commit 906736fe4f
6 changed files with 59 additions and 2 deletions
+1
View File
@@ -54,6 +54,7 @@
<orderEntry type="module" module-name="properties" />
<orderEntry type="library" name="xpp3-1.1.4-min" level="project" />
<orderEntry type="module" module-name="IntentionPowerPackPlugin" />
<orderEntry type="module" module-name="testng" />
</component>
</module>
+2
View File
@@ -77,6 +77,7 @@
<depends>IntentionPowerPack</depends>
<depends optional="true" config-file="maven-support.xml">org.jetbrains.idea.maven</depends>
<depends optional="true" config-file="test-ng.xml">TestNG-J</depends>
<extensions defaultExtensionNs="com.intellij">
<errorHandler implementation="com.intellij.diagnostic.ITNReporter"/>
@@ -184,5 +185,6 @@
<extensionPoints>
<extensionPoint name="mavenProvider" interface="org.jetbrains.android.maven.AndroidMavenProvider"/>
<extensionPoint name="lightBuildProvider" interface="org.jetbrains.android.compiler.AndroidLightBuildProvider"/>
</extensionPoints>
</idea-plugin>
+6
View File
@@ -0,0 +1,6 @@
<!DOCTYPE idea-plugin PUBLIC "Plugin/DTD" "http://plugins.intellij.net/plugin.dtd">
<idea-plugin url="http://www.jetbrains.com/idea">
<extensions defaultExtensionNs="org.jetbrains">
<android.lightBuildProvider implementation="org.jetbrains.android.compiler.AndroidTestNgLightBuildProvider"/>
</extensions>
</idea-plugin>
@@ -84,6 +84,10 @@ public class AndroidCompileUtil {
@NonNls private static final String PROGUARD_CFG_FILE_NAME = "proguard.cfg";
@NonNls public static final String CLASSES_JAR_FILE_NAME = "classes.jar";
@NonNls
private static final String[] SCALA_TEST_CONFIGURATIONS =
{"ScalaTestRunConfiguration", "SpecsRunConfiguration", "Specs2RunConfiguration"};
private AndroidCompileUtil() {
}
@@ -598,8 +602,23 @@ public class AndroidCompileUtil {
}
public static boolean isFullBuild(@NotNull CompileContext context) {
RunConfiguration runConfiguration = CompileStepBeforeRun.getRunConfiguration(context);
return !(runConfiguration instanceof JUnitConfiguration);
final RunConfiguration runConfiguration = CompileStepBeforeRun.getRunConfiguration(context);
if (runConfiguration == null) {
return true;
}
if (runConfiguration instanceof JUnitConfiguration) {
return false;
}
for (AndroidLightBuildProvider provider : AndroidLightBuildProvider.EP_NAME.getExtensions()) {
if (provider.toPerformLightBuild(runConfiguration)) {
return false;
}
}
final String id = runConfiguration.getType().getId();
return ArrayUtil.find(SCALA_TEST_CONFIGURATIONS, id) < 0;
}
public static boolean isReleaseBuild(@NotNull CompileContext context) {
@@ -0,0 +1,14 @@
package org.jetbrains.android.compiler;
import com.intellij.execution.configurations.RunConfiguration;
import com.intellij.openapi.extensions.ExtensionPointName;
import org.jetbrains.annotations.NotNull;
/**
* @author Eugene.Kudelevsky
*/
public interface AndroidLightBuildProvider {
ExtensionPointName<AndroidLightBuildProvider> EP_NAME = ExtensionPointName.create("org.jetbrains.android.lightBuildProvider");
boolean toPerformLightBuild(@NotNull RunConfiguration runConfiguration);
}
@@ -0,0 +1,15 @@
package org.jetbrains.android.compiler;
import com.intellij.execution.configurations.RunConfiguration;
import com.theoryinpractice.testng.configuration.TestNGConfiguration;
import org.jetbrains.annotations.NotNull;
/**
* @author Eugene.Kudelevsky
*/
public class AndroidTestNgLightBuildProvider implements AndroidLightBuildProvider {
@Override
public boolean toPerformLightBuild(@NotNull RunConfiguration runConfiguration) {
return runConfiguration instanceof TestNGConfiguration;
}
}