Chromium Code Reviews| Index: javatests/org/chromium/distiller/JsTestSuiteBase.java |
| diff --git a/javatests/org/chromium/distiller/JsTestSuiteBase.java b/javatests/org/chromium/distiller/JsTestSuiteBase.java |
| index e3fbb094920c1f27b9894877ce9dddcbaeafb6ff..cf23f2dddc21848b886b17da66d32ffb73327032 100644 |
| --- a/javatests/org/chromium/distiller/JsTestSuiteBase.java |
| +++ b/javatests/org/chromium/distiller/JsTestSuiteBase.java |
| @@ -8,6 +8,8 @@ import com.google.gwt.core.client.JavaScriptException; |
| import com.google.gwt.regexp.shared.RegExp; |
| import com.google.gwt.user.client.Window; |
| +import java.util.ArrayList; |
| +import java.util.List; |
| import java.util.Map; |
| import java.util.Set; |
| import java.util.TreeMap; |
| @@ -125,14 +127,56 @@ public class JsTestSuiteBase { |
| } |
| private class TestFilter { |
| - RegExp regexp; |
| + List<RegExp> pos; |
|
nyquist
2015/04/01 18:27:07
Nit: private final?
wychen
2015/04/01 19:05:53
Done.
|
| + List<RegExp> neg; |
| + |
| + private RegExp convert(String q) { |
| + // This is a simplified conversion, and doesn't handle all |
| + // possible glob strings correctly. |
| + q = q.replace(".", "\\."); |
| + q = q.replace("*", ".*"); |
| + q = q.replace("?", "."); |
| + return RegExp.compile("^" + q + "$"); |
| + } |
| + |
| TestFilter(String filter) { |
| - if (filter != null) regexp = RegExp.compile(filter); |
| + pos = new ArrayList<RegExp>(); |
| + neg = new ArrayList<RegExp>(); |
| + |
| + if (filter == null) return; |
| + |
| + String[] segments = filter.split("-"); |
| + if (segments.length > 2) { |
| + LogUtil.logToConsole("[ERROR] filter \"" + filter + "\" is malformed."); |
| + } |
| + for (int i = 0; i < segments.length; i++) { |
| + String[] filters = segments[i].split(":"); |
| + for (int j = 0; j < filters.length; j++) { |
| + if (filters[j].length() == 0) continue; |
| + RegExp r = convert(filters[j]); |
| + if (i > 0) { |
|
nyquist
2015/04/01 18:27:07
Could we reorder the if/else and do |if (i == 0)|
wychen
2015/04/01 19:05:53
Done.
|
| + neg.add(r); |
| + } else { |
| + pos.add(r); |
| + } |
| + } |
| + } |
| } |
| public boolean test(String className, String methodName) { |
| - if (regexp == null) return true; |
| - return regexp.test(className + "." + methodName); |
| + boolean ans = false; |
| + if (pos.size() == 0) ans = true; |
| + for (int i = 0; i < pos.size(); i++) { |
| + if (pos.get(i).test(className + "." + methodName)) { |
| + ans = true; |
| + } |
| + } |
| + for (int i = 0; i < neg.size(); i++) { |
| + if (neg.get(i).test(className + "." + methodName)) { |
| + ans = false; |
| + } |
| + } |
| + return ans; |
| } |
| } |