From 906736fe4f9d41fd2ace1fcee8750f99b9dc5de1 Mon Sep 17 00:00:00 2001 From: Eugene Kudelevsky Date: Thu, 12 Jan 2012 17:57:46 +0400 Subject: [PATCH] IDEA-79735 android: perform light build when test-ng or scala test configurations are used --- plugins/android/android.iml | 1 + plugins/android/src/META-INF/plugin.xml | 2 ++ plugins/android/src/META-INF/test-ng.xml | 6 +++++ .../android/compiler/AndroidCompileUtil.java | 23 +++++++++++++++++-- .../compiler/AndroidLightBuildProvider.java | 14 +++++++++++ .../AndroidTestNgLightBuildProvider.java | 15 ++++++++++++ 6 files changed, 59 insertions(+), 2 deletions(-) create mode 100644 plugins/android/src/META-INF/test-ng.xml create mode 100644 plugins/android/src/org/jetbrains/android/compiler/AndroidLightBuildProvider.java create mode 100644 plugins/android/src/org/jetbrains/android/compiler/AndroidTestNgLightBuildProvider.java diff --git a/plugins/android/android.iml b/plugins/android/android.iml index 798551f8fc45..b1fda8efd62b 100644 --- a/plugins/android/android.iml +++ b/plugins/android/android.iml @@ -54,6 +54,7 @@ + diff --git a/plugins/android/src/META-INF/plugin.xml b/plugins/android/src/META-INF/plugin.xml index c400d4777a05..50375678c9dc 100644 --- a/plugins/android/src/META-INF/plugin.xml +++ b/plugins/android/src/META-INF/plugin.xml @@ -77,6 +77,7 @@ IntentionPowerPack org.jetbrains.idea.maven + TestNG-J @@ -184,5 +185,6 @@ + diff --git a/plugins/android/src/META-INF/test-ng.xml b/plugins/android/src/META-INF/test-ng.xml new file mode 100644 index 000000000000..e88928f7bcb7 --- /dev/null +++ b/plugins/android/src/META-INF/test-ng.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/plugins/android/src/org/jetbrains/android/compiler/AndroidCompileUtil.java b/plugins/android/src/org/jetbrains/android/compiler/AndroidCompileUtil.java index 351cbc2b35ad..d5cb5c5d389e 100644 --- a/plugins/android/src/org/jetbrains/android/compiler/AndroidCompileUtil.java +++ b/plugins/android/src/org/jetbrains/android/compiler/AndroidCompileUtil.java @@ -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) { diff --git a/plugins/android/src/org/jetbrains/android/compiler/AndroidLightBuildProvider.java b/plugins/android/src/org/jetbrains/android/compiler/AndroidLightBuildProvider.java new file mode 100644 index 000000000000..aa8a80baab27 --- /dev/null +++ b/plugins/android/src/org/jetbrains/android/compiler/AndroidLightBuildProvider.java @@ -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 EP_NAME = ExtensionPointName.create("org.jetbrains.android.lightBuildProvider"); + + boolean toPerformLightBuild(@NotNull RunConfiguration runConfiguration); +} diff --git a/plugins/android/src/org/jetbrains/android/compiler/AndroidTestNgLightBuildProvider.java b/plugins/android/src/org/jetbrains/android/compiler/AndroidTestNgLightBuildProvider.java new file mode 100644 index 000000000000..76114bbf1848 --- /dev/null +++ b/plugins/android/src/org/jetbrains/android/compiler/AndroidTestNgLightBuildProvider.java @@ -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; + } +}