mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-29 19:45:01 +02:00
bug 212596: JUnit failures in cdt.managedbuilder.test.suite
more heuristics
This commit is contained in:
parent
344430ef99
commit
33038927b7
1 changed files with 17 additions and 9 deletions
|
@ -459,9 +459,10 @@ public class ManagedBuildTestHelper {
|
|||
* @return {@code true} if matches, {@code false} otherwise
|
||||
*/
|
||||
private static boolean compareMakefiles(IPath testFile, IPath benchmarkFile) {
|
||||
final String ECHO_LINKER_PATTERN = " @echo 'Invoking: .* C\\+\\+ Linker'";
|
||||
final String ECHO_INVOKING_PATTERN = " @echo 'Invoking: .* C\\+\\+ .*'";
|
||||
final String IFNEQ_PATTERN = "ifneq \\(\\$\\(strip \\$\\(.*\\)\\),\\)";
|
||||
final String INCLUDE_PATTERN = "-include \\$\\(.*\\)";
|
||||
final String MACRO_PATTERN = "\\S* :=.*";
|
||||
ArrayList<String> testArray = getContents(testFile);
|
||||
ArrayList<String> benchmarkArray = getContents(benchmarkFile);
|
||||
if (testArray.size()!=benchmarkArray.size()) {
|
||||
|
@ -488,7 +489,7 @@ public class ManagedBuildTestHelper {
|
|||
return false;
|
||||
}
|
||||
}
|
||||
} else if (testLine.matches(ECHO_LINKER_PATTERN) && benchmarkLine.matches(ECHO_LINKER_PATTERN)) {
|
||||
} else if (testLine.matches(ECHO_INVOKING_PATTERN) && benchmarkLine.matches(ECHO_INVOKING_PATTERN)) {
|
||||
// accommodate for variable linker name (GCC vs. Cygwin)
|
||||
continue;
|
||||
} else if (testLine.matches(IFNEQ_PATTERN) && benchmarkLine.matches(IFNEQ_PATTERN)) {
|
||||
|
@ -502,23 +503,30 @@ public class ManagedBuildTestHelper {
|
|||
// accommodate for variable order of different macro's blocks (see IFNEQ_PATTERN)
|
||||
testNotMatchingLines.add(testLine);
|
||||
benchNotMatchingLines.add(benchmarkLine);
|
||||
} else if (testLine.matches(MACRO_PATTERN) && benchmarkLine.matches(MACRO_PATTERN)) {
|
||||
// accommodate for variable order of macros
|
||||
testNotMatchingLines.add(testLine);
|
||||
benchNotMatchingLines.add(benchmarkLine);
|
||||
} else {
|
||||
System.out.println("Following lines do not match:");
|
||||
System.out.println("actual : ["+testLine+"]");
|
||||
System.out.println("expected: ["+benchmarkLine+"]");
|
||||
System.out.println("Following lines do not match ("+testFile.lastSegment()+"):");
|
||||
System.out.println("actual : ["+testLine+"], file "+testFile);
|
||||
System.out.println("expected: ["+benchmarkLine+"], file "+benchmarkFile);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Check if all lines of ifneq blocks match (irrespective of order)
|
||||
// Check if all collected lines match irrespective of order
|
||||
String[] testNotMatchingLinesArray = testNotMatchingLines.toArray(new String[0]);
|
||||
String[] benchNotMatchingLinesArray = benchNotMatchingLines.toArray(new String[0]);
|
||||
for (int i=0;i<testNotMatchingLinesArray.length;i++) {
|
||||
if (! testNotMatchingLinesArray[i].equals(benchNotMatchingLinesArray[i])) {
|
||||
System.out.println("Following sorted lines do not match:");
|
||||
System.out.println("actual : ["+testNotMatchingLinesArray[i]+"]");
|
||||
System.out.println("expected: ["+benchNotMatchingLinesArray[i]+"]");
|
||||
System.out.println("Following line is missing ("+testFile.lastSegment()+"):");
|
||||
if (testNotMatchingLinesArray[i].compareTo(benchNotMatchingLinesArray[i]) < 0) {
|
||||
System.out.println("line ["+testNotMatchingLinesArray[i]+"], missing in file "+benchmarkFile);
|
||||
} else {
|
||||
System.out.println("line ["+benchNotMatchingLinesArray[i]+"], missing in file "+testFile);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue