diff options
author | Michal Bendowski <bendowski@google.com> | 2015-08-04 10:25:40 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2015-08-04 10:25:40 +0000 |
commit | ffcf4b0b6eb56a7f002e7d26d89d2a5415a74d75 (patch) | |
tree | 023f4b7ca8b262f0ba015db9dc46e6d6ab16ec17 /android | |
parent | 0e3288366bc63d4c919b2257803d7c6700cdc23a (diff) | |
parent | 2144bfd4031fc40b5e698d341950cfd0332edefc (diff) | |
download | idea-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.java | 11 | ||||
-rw-r--r-- | android/src/com/android/tools/idea/gradle/invoker/GradleInvoker.java | 18 |
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) { |