clear output directories when possible for ModuleBased-targets only (IDEA-164315)

This commit is contained in:
Eugene Zhuravlev
2016-11-28 14:01:53 +01:00
parent a66d7a0b56
commit aea83b1e60
3 changed files with 12 additions and 5 deletions
@@ -579,8 +579,15 @@ public class IncProjectBuilder {
final ProjectDescriptor projectDescriptor = context.getProjectDescriptor();
final List<? extends BuildTarget<?>> allTargets = projectDescriptor.getBuildTargetIndex().getAllTargets();
for (BuildTarget<?> target : allTargets) {
for (File file : target.getOutputRoots(context)) {
rootsToDelete.putValue(file, target);
if (target instanceof ModuleBasedTarget) {
for (File file : target.getOutputRoots(context)) {
rootsToDelete.putValue(file, target);
}
}
else {
if (context.getScope().isBuildForced(target)) {
clearOutputFilesUninterruptibly(context, target);
}
}
}
@@ -368,7 +368,7 @@ public class ArtifactBuilderTest extends ArtifactBuilderTestCase {
assertOutput(a, fs().file("a.txt").file("b.txt"));
rebuildAllModulesAndArtifacts();
assertOutput(a, fs().file("a.txt"));
assertOutput(a, fs().file("a.txt").file("b.txt"));
}
public void testDeleteOnlyOutputFileOnRebuildForArchiveArtifact() throws IOException {
@@ -36,7 +36,7 @@ public class CleanArtifactOutputOnRebuildTest extends ArtifactBuilderTestCase {
assertOutput(a, fs().file("a.txt").file("b.txt"));
rebuildAllModulesAndArtifacts();
assertOutput(a, fs().file("a.txt"));
assertOutput(a, fs().file("a.txt").file("b.txt"));
}
public void testDoNotCleanOnRebuildIfOptionIsSwitchedOff() {
@@ -78,7 +78,7 @@ public class CleanArtifactOutputOnRebuildTest extends ArtifactBuilderTestCase {
createFileInArtifactOutput(included, "b.txt");
assertOutput(included, fs().file("a.txt").file("b.txt"));
rebuildAllModulesAndArtifacts();
assertOutput(included, fs().file("a.txt"));
assertOutput(included, fs().file("a.txt").file("b.txt"));
}
public void testCleanModuleOutputIfItIsIncludedInArtifact() {