mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-07-29 03:45:35 +02:00
Bug 263977: parsing of Visual C++ errors on Linux with Wine
This commit is contained in:
parent
e9d2fc6b56
commit
81ff9fe6a8
2 changed files with 23 additions and 1 deletions
|
@ -1279,5 +1279,25 @@ public class ErrorParserFileMatchingTest extends TestCase {
|
||||||
assertEquals(1,problemMarkerInfo.lineNumber);
|
assertEquals(1,problemMarkerInfo.lineNumber);
|
||||||
assertEquals("error",problemMarkerInfo.description);
|
assertEquals("error",problemMarkerInfo.description);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks if a file from error output can be found.
|
||||||
|
*
|
||||||
|
* @throws Exception...
|
||||||
|
*/
|
||||||
|
public void testWindowsPathOnLinux_Bug263977() throws Exception {
|
||||||
|
String fileName = "testWindowsPathOnLinux_Bug263977.c";
|
||||||
|
|
||||||
|
ResourceHelper.createFolder(fProject, "Folder/Subfolder");
|
||||||
|
ResourceHelper.createFile(fProject, "Folder/Subfolder/"+fileName);
|
||||||
|
|
||||||
|
// Note that main intention of this test is to run on *Linux*, see bug 263977
|
||||||
|
parseOutput("W:\\Folder\\Subfolder\\"+fileName+":1:error");
|
||||||
|
assertEquals(1, errorList.size());
|
||||||
|
|
||||||
|
ProblemMarkerInfo problemMarkerInfo = errorList.get(0);
|
||||||
|
assertEquals("L/FindMatchingFilesTest/Folder/Subfolder/"+fileName,problemMarkerInfo.file.toString());
|
||||||
|
assertEquals("error",problemMarkerInfo.description);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -346,13 +346,15 @@ public class ErrorParserManager extends OutputStream {
|
||||||
org.eclipse.core.filesystem.URIUtil.equals(getWorkingDirectoryURI(), cachedWorkingDirectory))
|
org.eclipse.core.filesystem.URIUtil.equals(getWorkingDirectoryURI(), cachedWorkingDirectory))
|
||||||
return cachedFile;
|
return cachedFile;
|
||||||
|
|
||||||
IPath path = new Path(partialLoc);
|
// To be able to parse Windows paths on Linux systems, see bug 263977
|
||||||
|
IPath path = new Path(partialLoc.replace('\\', IPath.SEPARATOR));
|
||||||
|
|
||||||
// Try to find exact match. If path is not absolute - searching in working directory.
|
// Try to find exact match. If path is not absolute - searching in working directory.
|
||||||
IFile file = findFileInWorkspace(path);
|
IFile file = findFileInWorkspace(path);
|
||||||
|
|
||||||
// Try to find best match considering known partial path
|
// Try to find best match considering known partial path
|
||||||
if (file==null) {
|
if (file==null) {
|
||||||
|
path = path.setDevice(null);
|
||||||
IProject[] prjs = new IProject[] { fProject };
|
IProject[] prjs = new IProject[] { fProject };
|
||||||
IFile[] files = ResourceLookup.findFilesByName(path, prjs, false);
|
IFile[] files = ResourceLookup.findFilesByName(path, prjs, false);
|
||||||
if (files.length == 0)
|
if (files.length == 0)
|
||||||
|
|
Loading…
Add table
Reference in a new issue