artifact builder tests: duplicated method removed
[idea/community.git] / jps / jps-builders / testSrc / org / jetbrains / jps / incremental / artifacts / CleanArtifactOutputOnRebuildTest.java
1 /*
2  * Copyright 2000-2012 JetBrains s.r.o.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package org.jetbrains.jps.incremental.artifacts;
17
18 import com.intellij.util.PathUtil;
19 import org.jetbrains.jps.model.artifact.JpsArtifact;
20 import org.jetbrains.jps.model.java.JpsJavaExtensionService;
21 import org.jetbrains.jps.model.module.JpsModule;
22 import org.jetbrains.jps.util.JpsPathUtil;
23
24 import static com.intellij.util.io.TestFileSystemBuilder.fs;
25 import static org.jetbrains.jps.incremental.artifacts.LayoutElementTestUtil.root;
26
27 /**
28  * @author nik
29  */
30 public class CleanArtifactOutputOnRebuildTest extends ArtifactBuilderTestCase {
31
32   public void testCleanOutput() {
33     JpsArtifact a = addArtifact(root().fileCopy(createFile("a.txt")));
34     buildArtifacts(a);
35     createFileInArtifactOutput(a, "b.txt");
36     assertOutput(a, fs().file("a.txt").file("b.txt"));
37
38     rebuildAll();
39     assertOutput(a, fs().file("a.txt"));
40   }
41
42   public void testDoNotCleanOnRebuildIfOptionIsSwitchedOff() {
43     JpsJavaExtensionService.getInstance().getOrCreateCompilerConfiguration(myProject).setClearOutputDirectoryOnRebuild(false);
44     JpsArtifact a = addArtifact(root().fileCopy(createFile("a.txt")));
45     buildArtifacts(a);
46     createFileInArtifactOutput(a, "b.txt");
47     rebuildAll();
48     assertOutput(a, fs().file("a.txt").file("b.txt"));
49   }
50
51   public void testDoNotCleanIfContainsSourceFolder() {
52     JpsArtifact a = addArtifact(root().fileCopy(createFile("a.txt")));
53     addModule("m", a.getOutputPath() + "/src");
54     buildArtifacts(a);
55     createFileInArtifactOutput(a, "b.txt");
56     rebuildAll();
57     assertOutput(a, fs().file("a.txt").file("b.txt"));
58   }
59
60   public void testDoNotCleanIfContainsArtifactRoot() {
61     JpsModule m = addModule("m");
62     String resDir = PathUtil.getParentPath(createFile("res/a.txt"));
63     m.getContentRootsList().addUrl(JpsPathUtil.pathToUrl(resDir));
64     JpsArtifact a = addArtifact(root().dirCopy(resDir));
65     a.setOutputPath(resDir);
66     buildArtifacts(a);
67     assertOutput(a, fs().file("a.txt"));
68
69     createFile("res/b.txt");
70     rebuildAll();
71     assertOutput(a, fs().file("a.txt").file("b.txt"));
72   }
73
74   public void testCleanArtifactOutputIfItIsIncludedIntoAnotherArtifact() {
75     JpsArtifact included = addArtifact("b", root().fileCopy(createFile("a.txt")));
76     JpsArtifact a = addArtifact(root().artifact(included));
77     buildArtifacts(a, included);
78     createFileInArtifactOutput(included, "b.txt");
79     assertOutput(included, fs().file("a.txt").file("b.txt"));
80     rebuildAll();
81     assertOutput(included, fs().file("a.txt"));
82   }
83
84   public void testCleanModuleOutputIfItIsIncludedInArtifact() {
85     String file = createFile("src/A.java", "class A{}");
86     JpsModule m = addModule("m", PathUtil.getParentPath(file));
87     JpsArtifact a = addArtifact(root().module(m));
88     buildArtifacts(a);
89     createFileInModuleOutput(m, "b.txt");
90     assertOutput(m, fs().file("A.class").file("b.txt"));
91
92     rebuildAll();
93     assertOutput(m, fs().file("A.class"));
94   }
95 }