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);