summaryrefslogtreecommitdiff
path: root/android
diff options
context:
space:
mode:
authorMichal Bendowski <bendowski@google.com>2015-08-04 10:25:40 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2015-08-04 10:25:40 +0000
commitffcf4b0b6eb56a7f002e7d26d89d2a5415a74d75 (patch)
tree023f4b7ca8b262f0ba015db9dc46e6d6ab16ec17 /android
parent0e3288366bc63d4c919b2257803d7c6700cdc23a (diff)
parent2144bfd4031fc40b5e698d341950cfd0332edefc (diff)
downloadidea-ffcf4b0b6eb56a7f002e7d26d89d2a5415a74d75.tar.gz
Merge "Regenerate sources/mockable jars on project rebuild." into studio-1.4-dev
Diffstat (limited to 'android')
-rw-r--r--android/guiTestSrc/com/android/tools/idea/tests/gui/gradle/UnitTestingSupportTest.java11
-rw-r--r--android/src/com/android/tools/idea/gradle/invoker/GradleInvoker.java18
2 files changed, 24 insertions, 5 deletions
diff --git a/android/guiTestSrc/com/android/tools/idea/tests/gui/gradle/UnitTestingSupportTest.java b/android/guiTestSrc/com/android/tools/idea/tests/gui/gradle/UnitTestingSupportTest.java
index aa2f9e591bf..19ecd559afc 100644
--- a/android/guiTestSrc/com/android/tools/idea/tests/gui/gradle/UnitTestingSupportTest.java
+++ b/android/guiTestSrc/com/android/tools/idea/tests/gui/gradle/UnitTestingSupportTest.java
@@ -140,6 +140,17 @@ public class UnitTestingSupportTest extends GuiTestCase {
unitTestTree = getTestTree("Rerun Failed Tests");
assertTrue(unitTestTree.isAllTestsPassed());
assertEquals(1, unitTestTree.getAllTestsCount());
+
+ // Rebuild the project and run tests again, they should still run and pass.
+ myProjectFrame.invokeMenuPath("Build", "Rebuild Project");
+ myProjectFrame.waitForBackgroundTasksToFinish();
+
+ myEditor.requestFocus();
+ myEditor.moveTo(myEditor.findOffset("class ", testClass, true));
+ runTestUnderCursor();
+ unitTestTree = getTestTree(testClass);
+ assertTrue(unitTestTree.isAllTestsPassed());
+ assertThat(unitTestTree.getAllTestsCount()).isGreaterThan(1);
}
@NotNull
diff --git a/android/src/com/android/tools/idea/gradle/invoker/GradleInvoker.java b/android/src/com/android/tools/idea/gradle/invoker/GradleInvoker.java
index 36784962c8d..3e0b287d3a7 100644
--- a/android/src/com/android/tools/idea/gradle/invoker/GradleInvoker.java
+++ b/android/src/com/android/tools/idea/gradle/invoker/GradleInvoker.java
@@ -272,12 +272,13 @@ public class GradleInvoker {
AndroidFacet androidFacet = AndroidFacet.getInstance(module);
if (androidFacet != null) {
JpsAndroidModuleProperties properties = androidFacet.getProperties();
+
+ // Make sure all the generated sources, unpacked aars and mockable jars are in place. They are usually up to date, since we
+ // generate them at sync time, so Gradle will just skip those tasks. The generated files can be missing if this is a "Rebuild
+ // Project" run or if the user cleaned the project from the command line. The mockable jar is necessary to run unit tests, but the
+ // compilation tasks don't depend on it, so we have to call it explicitly.
+ addAfterSyncTasks(tasks, gradlePath, properties);
switch (buildMode) {
- case SOURCE_GEN:
- for (String taskName : properties.AFTER_SYNC_TASK_NAMES) {
- addTaskIfSpecified(tasks, gradlePath, taskName);
- }
- break;
case ASSEMBLE:
tasks.add(createBuildTask(gradlePath, properties.ASSEMBLE_TASK_NAME));
@@ -293,6 +294,7 @@ public class GradleInvoker {
tasks.add(createBuildTask(gradlePath, properties.COMPILE_JAVA_TASK_NAME));
}
addTaskIfSpecified(tasks, gradlePath, properties.COMPILE_JAVA_TEST_TASK_NAME);
+ break;
}
}
else {
@@ -309,6 +311,12 @@ public class GradleInvoker {
}
}
+ private static void addAfterSyncTasks(@NotNull List<String> tasks, String gradlePath, JpsAndroidModuleProperties properties) {
+ for (String taskName : properties.AFTER_SYNC_TASK_NAMES) {
+ addTaskIfSpecified(tasks, gradlePath, taskName);
+ }
+ }
+
private static void addTaskIfSpecified(@NotNull List<String> tasks,
@NotNull String gradlePath,
@Nullable String gradleTaskName) {