mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
jps model: use production output directory for tests if tests output isn't specified
This commit is contained in:
+6
-6
@@ -1,6 +1,7 @@
|
||||
package org.jetbrains.jps.model.serialization.java;
|
||||
|
||||
import com.intellij.openapi.util.JDOMUtil;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import org.jdom.Element;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.jps.model.JpsElementFactory;
|
||||
@@ -121,13 +122,12 @@ public class JpsJavaModelSerializerExtension extends JpsModelSerializerExtension
|
||||
private static void loadJavaModuleExtension(JpsModule module, Element rootModelComponent) {
|
||||
final JpsJavaModuleExtension extension = getService().getOrCreateModuleExtension(module);
|
||||
final Element outputTag = rootModelComponent.getChild(OUTPUT_TAG);
|
||||
if (outputTag != null) {
|
||||
extension.setOutputUrl(outputTag.getAttributeValue(URL_ATTRIBUTE));
|
||||
}
|
||||
String outputUrl = outputTag != null ? outputTag.getAttributeValue(URL_ATTRIBUTE) : null;
|
||||
extension.setOutputUrl(outputUrl);
|
||||
final Element testOutputTag = rootModelComponent.getChild(TEST_OUTPUT_TAG);
|
||||
if (testOutputTag != null) {
|
||||
extension.setTestOutputUrl(testOutputTag.getAttributeValue(URL_ATTRIBUTE));
|
||||
}
|
||||
String testOutputUrl = testOutputTag != null ? testOutputTag.getAttributeValue(URL_ATTRIBUTE) : null;
|
||||
extension.setTestOutputUrl(StringUtil.isEmpty(testOutputUrl) ? outputUrl : testOutputUrl);
|
||||
|
||||
extension.setInheritOutput(Boolean.parseBoolean(rootModelComponent.getAttributeValue(INHERIT_COMPILER_OUTPUT_ATTRIBUTE)));
|
||||
extension.setExcludeOutput(rootModelComponent.getChild(EXCLUDE_OUTPUT_TAG) != null);
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/main.iml" filepath="$PROJECT_DIR$/main.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/util/util.iml" filepath="$PROJECT_DIR$/util/util.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/xxx/xxx.iml" filepath="$PROJECT_DIR$/xxx/xxx.iml" />
|
||||
</modules>
|
||||
</component>
|
||||
</project>
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="JAVA_MODULE" version="4">
|
||||
<component name="NewModuleRootManager" inherit-compiler-output="false">
|
||||
<output url="file://$MODULE_DIR$/output" />
|
||||
<exclude-output />
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/testSrc" isTestSource="true" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
</component>
|
||||
</module>
|
||||
|
||||
+12
-6
@@ -4,6 +4,7 @@ import com.intellij.openapi.util.io.FileUtil;
|
||||
import com.intellij.testFramework.PlatformTestUtil;
|
||||
import org.jdom.Element;
|
||||
import org.jetbrains.jps.model.JpsProject;
|
||||
import org.jetbrains.jps.model.java.JpsJavaExtensionService;
|
||||
import org.jetbrains.jps.model.java.JpsJavaSdkType;
|
||||
import org.jetbrains.jps.model.library.JpsLibrary;
|
||||
import org.jetbrains.jps.model.library.sdk.JpsSdkReference;
|
||||
@@ -23,11 +24,13 @@ public class JpsProjectSerializationTest extends JpsSerializationTestCase {
|
||||
public void testLoadProject() {
|
||||
loadProject(SAMPLE_PROJECT_PATH);
|
||||
List<JpsModule> modules = myProject.getModules();
|
||||
assertEquals(2, modules.size());
|
||||
assertEquals(3, modules.size());
|
||||
JpsModule main = modules.get(0);
|
||||
assertEquals("main", main.getName());
|
||||
JpsModule util = modules.get(1);
|
||||
assertEquals("util", util.getName());
|
||||
JpsModule xxx = modules.get(2);
|
||||
assertEquals("xxx", xxx.getName());
|
||||
|
||||
List<JpsLibrary> libraries = myProject.getLibraryCollection().getLibraries();
|
||||
assertEquals(3, libraries.size());
|
||||
@@ -47,15 +50,18 @@ public class JpsProjectSerializationTest extends JpsSerializationTestCase {
|
||||
JpsSdkReference<?> projectSdkReference = inheritedSdkDependency.getSdkReference();
|
||||
assertNotNull(projectSdkReference);
|
||||
assertEquals("1.6", projectSdkReference.getSdkName());
|
||||
|
||||
assertEquals(getUrl("xxx/output"), JpsJavaExtensionService.getInstance().getOutputUrl(xxx, true));
|
||||
assertEquals(getUrl("xxx/output"), JpsJavaExtensionService.getInstance().getOutputUrl(xxx, false));
|
||||
}
|
||||
|
||||
public void testSaveProject() {
|
||||
loadProject(SAMPLE_PROJECT_PATH);
|
||||
JpsModule main = myProject.getModules().get(0);
|
||||
doTestSaveModule(main, "main.iml");
|
||||
|
||||
JpsModule util = myProject.getModules().get(1);
|
||||
doTestSaveModule(util, "util/util.iml");
|
||||
List<JpsModule> modules = myProject.getModules();
|
||||
doTestSaveModule(modules.get(0), "main.iml");
|
||||
doTestSaveModule(modules.get(1), "util/util.iml");
|
||||
//tod[nik] remember that test output root wasn't specified and doesn't save it to avoid unnecessary modifications of iml files
|
||||
//doTestSaveModule(modules.get(2), "xxx/xxx.iml");
|
||||
|
||||
File[] libs = getFileInSampleProject(".idea/libraries").listFiles();
|
||||
assertNotNull(libs);
|
||||
|
||||
Reference in New Issue
Block a user