cleanup: remove useless '@author nik' from javadoc comments
[idea/community.git] / jps / jps-builders / testSrc / org / jetbrains / jps / builders / resources / ResourceCopyingTest.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.builders.resources;
17
18 import com.intellij.openapi.util.io.FileUtil;
19 import com.intellij.util.PathUtil;
20 import org.jetbrains.jps.builders.JpsBuildTestCase;
21 import org.jetbrains.jps.model.java.JavaResourceRootType;
22 import org.jetbrains.jps.model.java.JavaSourceRootProperties;
23 import org.jetbrains.jps.model.java.JavaSourceRootType;
24 import org.jetbrains.jps.model.java.JpsJavaExtensionService;
25 import org.jetbrains.jps.model.module.JpsModule;
26 import org.jetbrains.jps.model.module.JpsModuleSourceRoot;
27 import org.jetbrains.jps.model.module.JpsTypedModuleSourceRoot;
28 import org.jetbrains.jps.util.JpsPathUtil;
29
30 import java.io.File;
31 import java.nio.file.Files;
32
33 import static com.intellij.util.io.TestFileSystemItem.fs;
34
35 public class ResourceCopyingTest extends JpsBuildTestCase {
36   @Override
37   protected void setUp() throws Exception {
38     super.setUp();
39     JpsJavaExtensionService.getInstance().getCompilerConfiguration(myProject).addResourcePattern("*.xml");
40   }
41
42   public void testSimple() {
43     String file = createFile("src/a.xml");
44     JpsModule m = addModule("m", PathUtil.getParentPath(file));
45     rebuildAllModules();
46     assertOutput(m, fs().file("a.xml"));
47   }
48
49   public void testReadonly() {
50     String source = createFile("src/a.xml");
51     final File sourceFile = new File(source);
52
53     assertTrue("Unable to make file readonly: ", sourceFile.setWritable(false));
54
55     JpsModule m = addModule("m", PathUtil.getParentPath(source));
56     rebuildAllModules();
57     assertOutput(m, fs().file("a.xml"));
58
59     final File outputFile = new File(getModuleOutput(m), "a.xml");
60     assertTrue(outputFile.exists());
61     assertFalse(Files.isWritable(outputFile.toPath()));
62
63     sourceFile.setWritable(true); // need this to perform the change
64     change(source, "changed content");
65     assertTrue("Unable to make file readonly: ", sourceFile.setWritable(false));
66
67     buildAllModules().assertSuccessful();
68
69     assertTrue(outputFile.exists());
70     assertFalse(Files.isWritable(outputFile.toPath()));
71   }
72
73   public void testCaseChange() {
74     String file = createFile("src/a.xml");
75     JpsModule m = addModule("m", PathUtil.getParentPath(file));
76     rebuildAllModules();
77     assertOutput(m, fs().file("a.xml"));
78     rename(file, "A.xml");
79     buildAllModules();
80     assertOutput(m, fs().file("A.xml"));
81   }
82
83   public void testPackagePrefix() {
84     String file = createFile("src/a.xml");
85     JpsModule m = addModule("m", PathUtil.getParentPath(file));
86     JpsModuleSourceRoot sourceRoot = assertOneElement(m.getSourceRoots());
87     JpsTypedModuleSourceRoot<JavaSourceRootProperties> typed = sourceRoot.asTyped(JavaSourceRootType.SOURCE);
88     assertNotNull(typed);
89     typed.getProperties().setPackagePrefix("xxx");
90     rebuildAllModules();
91     assertOutput(m, fs().dir("xxx").file("a.xml"));
92   }
93
94   public void testResourceRoot() {
95     String file = createFile("res/A.java", "xxx");
96     JpsModule m = addModule("m");
97     m.addSourceRoot(JpsPathUtil.pathToUrl(PathUtil.getParentPath(file)), JavaResourceRootType.RESOURCE);
98     rebuildAllModules();
99     assertOutput(m, fs().file("A.java", "xxx"));
100   }
101
102   public void testExcludesInResourceRoot() {
103     String file = createFile("res/A.java", "xxx");
104     String excludedFile = createFile("res/excluded.java", "XXX");
105     JpsModule m = addModule("m");
106     m.addSourceRoot(JpsPathUtil.pathToUrl(PathUtil.getParentPath(file)), JavaResourceRootType.RESOURCE);
107     JpsJavaExtensionService.getInstance().getCompilerConfiguration(myProject).getCompilerExcludes().addExcludedFile(
108       "file://" + FileUtil.toSystemIndependentName(excludedFile)
109     );
110     rebuildAllModules();
111     assertOutput(m, fs().file("A.java", "xxx"));
112   }
113 }