Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnton Leherbauer2008-02-04 10:12:50 +0000
committerAnton Leherbauer2008-02-04 10:12:50 +0000
commit1c7064167ac731dcdc84caf53564e923ec287032 (patch)
treeb1ccb52253dded26eb9413bef00a8b4546f42a23 /build/org.eclipse.cdt.make.core.tests
parentcd0bd1eebbe41eb7789427c7e583c51a1dd620c6 (diff)
downloadorg.eclipse.cdt-1c7064167ac731dcdc84caf53564e923ec287032.tar.gz
org.eclipse.cdt-1c7064167ac731dcdc84caf53564e923ec287032.tar.xz
org.eclipse.cdt-1c7064167ac731dcdc84caf53564e923ec287032.zip
Fix for 216945: GCCPerFileBOPConsoleParser doesn't handle symbolic links correctly
Diffstat (limited to 'build/org.eclipse.cdt.make.core.tests')
-rw-r--r--build/org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/scannerdiscovery/GCCPerFileBOPConsoleParserTests.java23
-rw-r--r--build/org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/scannerdiscovery/TestScannerInfoCollector.java23
2 files changed, 41 insertions, 5 deletions
diff --git a/build/org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/scannerdiscovery/GCCPerFileBOPConsoleParserTests.java b/build/org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/scannerdiscovery/GCCPerFileBOPConsoleParserTests.java
index 0d86682844c..a25c6b35ef3 100644
--- a/build/org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/scannerdiscovery/GCCPerFileBOPConsoleParserTests.java
+++ b/build/org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/scannerdiscovery/GCCPerFileBOPConsoleParserTests.java
@@ -23,6 +23,7 @@ import org.eclipse.cdt.core.testplugin.CProjectHelper;
import org.eclipse.cdt.make.core.scannerconfig.ScannerInfoTypes;
import org.eclipse.cdt.make.internal.core.scannerconfig.gnu.GCCPerFileBOPConsoleParser;
import org.eclipse.cdt.make.internal.core.scannerconfig.util.CCommandDSC;
+import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
@@ -91,4 +92,26 @@ public class GCCPerFileBOPConsoleParserTests extends BaseBOPConsoleParserTests {
tempDir.delete();
}
}
+
+ public void testResolvingLinkedResourceArgument_Bug216945() throws Exception {
+ File tempRoot= new File(System.getProperty("java.io.tmpdir"));
+ File tempDir= new File(tempRoot, "cdttest_216945");
+ tempDir.mkdir();
+ File tempFile= null;
+ try {
+ tempFile= new File(tempDir, "test.c");
+ tempFile.createNewFile();
+ IFolder linkedFolder= fCProject.getProject().getFolder("cdttest");
+ linkedFolder.createLink(new Path(tempDir.toString()), IResource.ALLOW_MISSING_LOCAL, null);
+ fOutputParser.processLine("gcc -g -O0 -c \""+ tempFile.toString() + "\""); //$NON-NLS-1$
+ IFile file= linkedFolder.getFile("test.c");
+ List cmds = fCollector.getCollectedScannerInfo(file, ScannerInfoTypes.COMPILER_COMMAND);
+ assertEquals(1, cmds.size());
+ } finally {
+ if (tempFile != null) {
+ tempFile.delete();
+ }
+ tempDir.delete();
+ }
+ }
}
diff --git a/build/org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/scannerdiscovery/TestScannerInfoCollector.java b/build/org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/scannerdiscovery/TestScannerInfoCollector.java
index 8721db531b3..b4350ac62d1 100644
--- a/build/org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/scannerdiscovery/TestScannerInfoCollector.java
+++ b/build/org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/scannerdiscovery/TestScannerInfoCollector.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007 Wind River Systems, Inc. and others.
+ * Copyright (c) 2007, 2008 Wind River Systems, Inc. and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -7,6 +7,7 @@
*
* Contributors:
* Markus Schorn - initial API and implementation
+ * Anton Leherbauer (Wind River Systems)
*******************************************************************************/
package org.eclipse.cdt.make.scannerdiscovery;
@@ -24,7 +25,8 @@ import org.eclipse.cdt.make.internal.core.scannerconfig.util.CCommandDSC;
final class TestScannerInfoCollector implements IScannerInfoCollector {
private HashMap fInfoMap = new HashMap();
-
+ private HashMap fResourceToInfoMap = new HashMap();
+
public void contributeToScannerConfig(Object resource, Map scannerInfo) {
for (Iterator iterator = scannerInfo.entrySet().iterator(); iterator.hasNext();) {
Map.Entry entry = (Map.Entry) iterator.next();
@@ -41,6 +43,9 @@ final class TestScannerInfoCollector implements IScannerInfoCollector {
}
}
}
+ if (resource != null) {
+ fResourceToInfoMap.put(resource, scannerInfo);
+ }
}
private void addTo(ScannerInfoTypes type, List col) {
@@ -53,7 +58,15 @@ final class TestScannerInfoCollector implements IScannerInfoCollector {
}
public List getCollectedScannerInfo(Object resource, ScannerInfoTypes type) {
- List result= (List) fInfoMap.get(type);
- return result == null ? Collections.EMPTY_LIST : result;
+ if (resource == null) {
+ List result= (List) fInfoMap.get(type);
+ return result == null ? Collections.EMPTY_LIST : result;
+ }
+ Map scannerInfo= (Map)fResourceToInfoMap.get(resource);
+ if (scannerInfo != null) {
+ List result= (List) scannerInfo.get(type);
+ return result == null ? Collections.EMPTY_LIST : result;
+ }
+ return Collections.EMPTY_LIST;
}
-} \ No newline at end of file
+}

Back to the top