Fix ApiCompatibilityChecker to work with ant versions >= 1.8.1
ApiCompatibilityChecker uses ant ZipScanner to perform
include/exclude logic.
Version 1.8.1 ant introduced a change to ZipScanner that breaks
matching of paths starting with "/"
(https://bz.apache.org/bugzilla/show_bug.cgi?id=53949).
Change-Id: Ib89080c170bdc1928185c85ab440be67fb10fc57
diff --git a/tools/api-checker/src/com/google/gwt/tools/apichecker/ApiCompatibilityChecker.java b/tools/api-checker/src/com/google/gwt/tools/apichecker/ApiCompatibilityChecker.java
index da25f72..bd00bc7 100644
--- a/tools/api-checker/src/com/google/gwt/tools/apichecker/ApiCompatibilityChecker.java
+++ b/tools/api-checker/src/com/google/gwt/tools/apichecker/ApiCompatibilityChecker.java
@@ -372,6 +372,10 @@
String fullExcludedPaths[] = new String[excludedPathsAsString.size()];
int count = 0;
String dirRootAbsolutePath = getFileFromName("dirRoot: ", dirRoot).getAbsolutePath();
+ if (dirRootAbsolutePath.startsWith("/") || dirRootAbsolutePath.startsWith("\\")) {
+ // Remove initial File.Separator to work with ant versions above and below 1.8.1.
+ dirRootAbsolutePath = dirRootAbsolutePath.substring(1);
+ }
for (String excludedPath : excludedPathsAsString) {
fullExcludedPaths[count++] = dirRootAbsolutePath + "/" + excludedPath;
}
@@ -405,6 +409,10 @@
if (fileName.indexOf(pattern) == 0) {
fileName = fileName.substring(pattern.length());
}
+ if (fileName.startsWith("/") || fileName.startsWith("\\")) {
+ // Remove initial File.Separator to work with ant versions above and below 1.8.1.
+ fileName = fileName.substring(1);
+ }
return excludeScanner.match(fileName);
}