Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/internal/errorparsers/tests/ErrorParserFileMatchingTest.java30
-rw-r--r--core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/errorparsers/CWDLocator.java19
2 files changed, 45 insertions, 4 deletions
diff --git a/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/internal/errorparsers/tests/ErrorParserFileMatchingTest.java b/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/internal/errorparsers/tests/ErrorParserFileMatchingTest.java
index 0f7b4c86998..d5475bdd7b7 100644
--- a/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/internal/errorparsers/tests/ErrorParserFileMatchingTest.java
+++ b/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/internal/errorparsers/tests/ErrorParserFileMatchingTest.java
@@ -1206,6 +1206,36 @@ public class ErrorParserFileMatchingTest extends TestCase {
}
/**
+ * Checks if output of '-n'/'--just-print' or '-w'/'--print-directory' options of make can be recognized.
+ *
+ * @throws Exception...
+ */
+ public void testPushPop_WithNoLevel() throws Exception {
+ String fileName = getName() + ".c";
+
+ ResourceHelper.createFolder(fProject, "Folder");
+ ResourceHelper.createFolder(fProject, "Folder/SubFolder");
+
+ ResourceHelper.createFile(fProject, fileName);
+ ResourceHelper.createFile(fProject, "Folder/"+fileName);
+ ResourceHelper.createFile(fProject, "Folder/SubFolder/"+fileName);
+
+ String lines = "make: Entering directory `Folder'\n"
+ + "make: Entering directory `SubFolder'\n"
+ + "make: Leaving directory `SubFolder'\n"
+ + fileName+":1:error\n";
+
+ String[] errorParsers = {CWD_LOCATOR_ID, mockErrorParserId };
+ parseOutput(fProject, fProject.getLocation(), errorParsers, lines);
+ assertEquals(1, errorList.size());
+
+ ProblemMarkerInfo problemMarkerInfo = errorList.get(0);
+ assertEquals("L/FindMatchingFilesTest/Folder/"+fileName,problemMarkerInfo.file.toString());
+ assertEquals(1,problemMarkerInfo.lineNumber);
+ assertEquals("error",problemMarkerInfo.description);
+ }
+
+ /**
* Checks if a file from error output can be found.
*
* @throws Exception...
diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/errorparsers/CWDLocator.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/errorparsers/CWDLocator.java
index e1324c82e04..ce6125841c4 100644
--- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/errorparsers/CWDLocator.java
+++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/errorparsers/CWDLocator.java
@@ -24,14 +24,14 @@ import org.eclipse.core.runtime.Path;
*/
public class CWDLocator extends AbstractErrorParser {
private static boolean enabled = true;
-
+
@Override
public boolean processLine(String line, ErrorParserManager manager) {
int lineNumber = manager.getLineCounter();
// enable on first line (can be previously disabled if processed parallel build)
if (lineNumber==1)
enabled = true;
-
+
if (enabled)
return super.processLine(line, manager);
return false;
@@ -53,7 +53,8 @@ public class CWDLocator extends AbstractErrorParser {
}
return false;
}
- }, new ErrorPattern("make\\[(.*)\\]: Entering directory `(.*)'", 0, 0) { //$NON-NLS-1$
+ },
+ new ErrorPattern("make\\[(.*)\\]: Entering directory `(.*)'", 0, 0) { //$NON-NLS-1$
@Override
protected boolean recordError(Matcher matcher, ErrorParserManager eoParser) {
int level;
@@ -74,7 +75,17 @@ public class CWDLocator extends AbstractErrorParser {
eoParser.pushDirectory(new Path(dir));
return true;
}
- }, new ErrorPattern("make\\[.*\\]: Leaving directory", 0, 0) { //$NON-NLS-1$
+ },
+ // This is emitted by GNU make using options -n, --just-print or -w, --print-directory.
+ new ErrorPattern("make: Entering directory `(.*)'", 0, 0) { //$NON-NLS-1$
+ @Override
+ protected boolean recordError(Matcher matcher, ErrorParserManager eoParser) {
+ String dir = matcher.group(1);
+ eoParser.pushDirectory(new Path(dir));
+ return true;
+ }
+ },
+ new ErrorPattern("make(\\[.*\\])?: Leaving directory", 0, 0) { //$NON-NLS-1$
@Override
protected boolean recordError(Matcher matcher, ErrorParserManager eoParser) {
eoParser.popDirectoryURI();

Back to the top