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;
+ }
+}