From f59e8524f9eeaaabf0e85c73544ffdc0bf102bf7 Mon Sep 17 00:00:00 2001 From: anna Date: Tue, 19 Jul 2011 12:53:54 +0400 Subject: [PATCH] eclipse: do not warn about output if it was configured via path variable/linked resources (IDEA-71689) --- java/java-tests/java-tests.iml | 1 + .../eclipse/config/EclipseClasspathStorageProvider.java | 3 ++- .../org/jetbrains/idea/eclipse/EclipseClasspathTest.java | 7 +++++-- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/java/java-tests/java-tests.iml b/java/java-tests/java-tests.iml index 762606228041..a2196312e368 100644 --- a/java/java-tests/java-tests.iml +++ b/java/java-tests/java-tests.iml @@ -24,6 +24,7 @@ + diff --git a/plugins/eclipse/src/org/jetbrains/idea/eclipse/config/EclipseClasspathStorageProvider.java b/plugins/eclipse/src/org/jetbrains/idea/eclipse/config/EclipseClasspathStorageProvider.java index faaf3ef0651f..6a26285225b3 100644 --- a/plugins/eclipse/src/org/jetbrains/idea/eclipse/config/EclipseClasspathStorageProvider.java +++ b/plugins/eclipse/src/org/jetbrains/idea/eclipse/config/EclipseClasspathStorageProvider.java @@ -15,6 +15,7 @@ */ package org.jetbrains.idea.eclipse.config; +import com.intellij.openapi.components.PathMacroManager; import com.intellij.openapi.module.Module; import com.intellij.openapi.options.ConfigurationException; import com.intellij.openapi.roots.*; @@ -83,7 +84,7 @@ public class EclipseClasspathStorageProvider implements ClasspathStorageProvider } final String output = model.getModuleExtension(CompilerModuleExtension.class).getCompilerOutputUrl(); final String contentRoot = getContentRoot(model); - if (output == null || !StringUtil.startsWith(VfsUtil.urlToPath(output), contentRoot)) { + if (output == null || !StringUtil.startsWith(VfsUtil.urlToPath(output), contentRoot) && PathMacroManager.getInstance(model.getModule()).collapsePath(output).equals(output)) { throw new ConfigurationException("Module \'" + moduleName + "\' output path is incompatible with eclipse format which supports output under content root only.\nPlease make sure that \"Inherit project compile output path\" is not selected"); } } diff --git a/plugins/eclipse/testSources/org/jetbrains/idea/eclipse/EclipseClasspathTest.java b/plugins/eclipse/testSources/org/jetbrains/idea/eclipse/EclipseClasspathTest.java index 1024906fff36..2d9d8aca50c1 100644 --- a/plugins/eclipse/testSources/org/jetbrains/idea/eclipse/EclipseClasspathTest.java +++ b/plugins/eclipse/testSources/org/jetbrains/idea/eclipse/EclipseClasspathTest.java @@ -25,6 +25,7 @@ import com.intellij.openapi.application.PluginPathManager; import com.intellij.openapi.module.Module; import com.intellij.openapi.module.ModuleManager; import com.intellij.openapi.module.StdModuleTypes; +import com.intellij.openapi.options.ConfigurationException; import com.intellij.openapi.project.Project; import com.intellij.openapi.roots.ModifiableRootModel; import com.intellij.openapi.roots.ModuleRootManager; @@ -38,6 +39,7 @@ import junit.framework.Assert; import org.jdom.Document; import org.jdom.Element; import org.jdom.JDOMException; +import org.jetbrains.idea.eclipse.config.EclipseClasspathStorageProvider; import org.jetbrains.idea.eclipse.conversion.ConversionException; import org.jetbrains.idea.eclipse.conversion.EclipseClasspathReader; import org.jetbrains.idea.eclipse.conversion.EclipseClasspathWriter; @@ -72,7 +74,8 @@ public class EclipseClasspathTest extends IdeaTestCase { checkModule(path, setUpModule(path, project)); } - static Module setUpModule(final String path, final Project project) throws IOException, JDOMException, ConversionException { + static Module setUpModule(final String path, final Project project) + throws IOException, JDOMException, ConversionException, ConfigurationException { final File classpathFile = new File(path, EclipseXml.DOT_CLASSPATH_EXT); String fileText = FileUtil.loadFile(classpathFile).replaceAll("\\$ROOT\\$", project.getBaseDir().getPath()); if (!SystemInfo.isWindows) { @@ -92,12 +95,12 @@ public class EclipseClasspathTest extends IdeaTestCase { classpathReader .readClasspath(rootModel, new ArrayList(), new ArrayList(), new HashSet(), new HashSet(), null, classpathElement); + new EclipseClasspathStorageProvider().assertCompatible(rootModel); ApplicationManager.getApplication().runWriteAction(new Runnable() { public void run() { rootModel.commit(); } }); - return module; }