diff --git a/jps/model-serialization/src/org/jetbrains/jps/model/serialization/java/JpsJavaModelSerializerExtension.java b/jps/model-serialization/src/org/jetbrains/jps/model/serialization/java/JpsJavaModelSerializerExtension.java index 48ade2f7c6f0..e3eed18ef439 100644 --- a/jps/model-serialization/src/org/jetbrains/jps/model/serialization/java/JpsJavaModelSerializerExtension.java +++ b/jps/model-serialization/src/org/jetbrains/jps/model/serialization/java/JpsJavaModelSerializerExtension.java @@ -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); diff --git a/jps/model-serialization/testData/sampleProject/.idea/modules.xml b/jps/model-serialization/testData/sampleProject/.idea/modules.xml index 49067b47ab53..8024c0144276 100644 --- a/jps/model-serialization/testData/sampleProject/.idea/modules.xml +++ b/jps/model-serialization/testData/sampleProject/.idea/modules.xml @@ -4,6 +4,7 @@ + diff --git a/jps/model-serialization/testData/sampleProject/xxx/xxx.iml b/jps/model-serialization/testData/sampleProject/xxx/xxx.iml new file mode 100644 index 000000000000..36d6b2fa62ee --- /dev/null +++ b/jps/model-serialization/testData/sampleProject/xxx/xxx.iml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/jps/model-serialization/testSrc/org/jetbrains/jps/model/serialization/JpsProjectSerializationTest.java b/jps/model-serialization/testSrc/org/jetbrains/jps/model/serialization/JpsProjectSerializationTest.java index 0d946e278ba6..85bcc0cffe2c 100644 --- a/jps/model-serialization/testSrc/org/jetbrains/jps/model/serialization/JpsProjectSerializationTest.java +++ b/jps/model-serialization/testSrc/org/jetbrains/jps/model/serialization/JpsProjectSerializationTest.java @@ -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 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 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 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);