aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Gaston <jeffrygaston@google.com>2017-06-27 20:29:51 +0000
committerandroid-build-merger <android-build-merger@google.com>2017-06-27 20:29:51 +0000
commit702534bdee0cc4682021efa7658637721200e8f4 (patch)
treec2efd9dea10bbe33e14818d9c6f9f52a17baf24e
parent1442ac24eb7197d486e967f7c4bbd78bd56b0a71 (diff)
parent5b45722f6dca5b0075de1b65ab8898f137f5c76c (diff)
downloadjacoco-702534bdee0cc4682021efa7658637721200e8f4.tar.gz
Revert "Add ClassnameMatcher in preparation to pass into Instrumenter for filtering" am: 10750c3a7c am: 293b0ecef8
am: 5b45722f6d Change-Id: Ieb2e04a5d9304a9974f804a697d91f67b330998e
-rw-r--r--org.jacoco.agent.rt/src/org/jacoco/agent/rt/internal/CoverageTransformer.java8
-rw-r--r--org.jacoco.core.test/src/org/jacoco/core/matcher/IncludeExcludeMatcherTest.java75
-rw-r--r--org.jacoco.core.test/src/org/jacoco/core/matcher/WildcardMatcherTest.java44
-rw-r--r--org.jacoco.core/src/org/jacoco/core/matcher/ClassnameMatcher.java80
-rw-r--r--org.jacoco.core/src/org/jacoco/core/matcher/IncludeExcludeMatcher.java67
-rw-r--r--org.jacoco.core/src/org/jacoco/core/matcher/Predicate.java24
-rw-r--r--org.jacoco.core/src/org/jacoco/core/matcher/WildcardMatcher.java5
-rw-r--r--org.jacoco.report/src/org/jacoco/report/check/Rule.java2
8 files changed, 30 insertions, 275 deletions
diff --git a/org.jacoco.agent.rt/src/org/jacoco/agent/rt/internal/CoverageTransformer.java b/org.jacoco.agent.rt/src/org/jacoco/agent/rt/internal/CoverageTransformer.java
index cbd6a62b..2cb16fed 100644
--- a/org.jacoco.agent.rt/src/org/jacoco/agent/rt/internal/CoverageTransformer.java
+++ b/org.jacoco.agent.rt/src/org/jacoco/agent/rt/internal/CoverageTransformer.java
@@ -120,14 +120,16 @@ public class CoverageTransformer implements ClassFileTransformer {
if (!inclNoLocationClasses && !hasSourceLocation(protectionDomain)) {
return false;
}
- if (exclClassloader.apply(loader.getClass().getName())) {
+ if (exclClassloader.matches(loader.getClass().getName())) {
return false;
}
}
return !classname.startsWith(AGENT_PREFIX) &&
- includes.apply(classname) &&
- !excludes.apply(classname);
+
+ includes.matches(classname) &&
+
+ !excludes.matches(classname);
}
/**
diff --git a/org.jacoco.core.test/src/org/jacoco/core/matcher/IncludeExcludeMatcherTest.java b/org.jacoco.core.test/src/org/jacoco/core/matcher/IncludeExcludeMatcherTest.java
deleted file mode 100644
index e0268956..00000000
--- a/org.jacoco.core.test/src/org/jacoco/core/matcher/IncludeExcludeMatcherTest.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2017 Mountainminds GmbH & Co. KG and Contributors
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Jeffry Gaston - initial API and implementation
- *
- *******************************************************************************/
-package org.jacoco.core.matcher;
-
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
-import org.junit.Test;
-
-public class IncludeExcludeMatcherTest {
-
- @Test
- public void testEmpty() {
- assertTrue(new IncludeExcludeMatcher<String>().apply("includeMe"));
- }
-
- @Test
- public void testSingleExclude() {
- IncludeExcludeMatcher<String> matcher = new IncludeExcludeMatcher<String>()
- .exclude(new WildcardMatcher("excluded"));
- assertTrue(matcher.apply("included"));
- assertFalse(matcher.apply("excluded"));
- }
-
- @Test
- public void testMultipleExcludes() {
- IncludeExcludeMatcher<String> matcher = new IncludeExcludeMatcher<String>().exclude(
- new WildcardMatcher("excluded"))
- .exclude(new WildcardMatcher("excluded2"));
- assertTrue(matcher.apply("included"));
- assertFalse(matcher.apply("excluded"));
- assertFalse(matcher.apply("excluded2"));
- }
-
- @Test
- public void testSingleInclude() {
- IncludeExcludeMatcher<String> matcher = new IncludeExcludeMatcher<String>()
- .include(new WildcardMatcher("include me"));
- assertTrue(matcher.apply("include me"));
- assertFalse(matcher.apply("not me"));
- }
-
- @Test
- public void testIncludesAndExcludes() {
- IncludeExcludeMatcher<String> matcher = new IncludeExcludeMatcher<String>()
- .include(new WildcardMatcher("inclusion1"))
- .include(new WildcardMatcher("me too"))
- .exclude(new WildcardMatcher("not me"))
- .exclude(new WildcardMatcher("nope"));
- assertTrue(matcher.apply("inclusion1"));
- assertTrue(matcher.apply("me too"));
- assertFalse(matcher.apply("not me"));
- assertFalse(matcher.apply("nope"));
- assertFalse(matcher.apply("other"));
- }
-
- @Test
- public void testExcludedInclusion() {
- IncludeExcludeMatcher<String> matcher = new IncludeExcludeMatcher<String>()
- .include(new WildcardMatcher("a"))
- .exclude(new WildcardMatcher("a"));
- assertFalse(matcher.apply("a"));
- assertFalse(matcher.apply("b"));
- }
-
-}
diff --git a/org.jacoco.core.test/src/org/jacoco/core/matcher/WildcardMatcherTest.java b/org.jacoco.core.test/src/org/jacoco/core/matcher/WildcardMatcherTest.java
index baf1dc2b..0d0a9c0a 100644
--- a/org.jacoco.core.test/src/org/jacoco/core/matcher/WildcardMatcherTest.java
+++ b/org.jacoco.core.test/src/org/jacoco/core/matcher/WildcardMatcherTest.java
@@ -20,53 +20,53 @@ public class WildcardMatcherTest {
@Test
public void testEmpty() {
- assertTrue(new WildcardMatcher("").apply(""));
- assertFalse(new WildcardMatcher("").apply("abc"));
+ assertTrue(new WildcardMatcher("").matches(""));
+ assertFalse(new WildcardMatcher("").matches("abc"));
}
@Test
public void testExact() {
- assertTrue(new WildcardMatcher("abc/def.txt").apply("abc/def.txt"));
+ assertTrue(new WildcardMatcher("abc/def.txt").matches("abc/def.txt"));
}
@Test
public void testCaseSensitive() {
- assertFalse(new WildcardMatcher("abcdef").apply("abcDef"));
- assertFalse(new WildcardMatcher("ABCDEF").apply("AbCDEF"));
+ assertFalse(new WildcardMatcher("abcdef").matches("abcDef"));
+ assertFalse(new WildcardMatcher("ABCDEF").matches("AbCDEF"));
}
@Test
public void testQuote() {
- assertFalse(new WildcardMatcher("rst.xyz").apply("rstAxyz"));
- assertTrue(new WildcardMatcher("(x)+").apply("(x)+"));
+ assertFalse(new WildcardMatcher("rst.xyz").matches("rstAxyz"));
+ assertTrue(new WildcardMatcher("(x)+").matches("(x)+"));
}
@Test
public void testWildcards() {
- assertTrue(new WildcardMatcher("*").apply(""));
- assertTrue(new WildcardMatcher("*").apply("java/lang/Object"));
- assertTrue(new WildcardMatcher("*Test").apply("jacoco/MatcherTest"));
- assertTrue(new WildcardMatcher("Matcher*").apply("Matcher"));
- assertTrue(new WildcardMatcher("Matcher*").apply("MatcherTest"));
- assertTrue(new WildcardMatcher("a*b*a").apply("a-b-b-a"));
- assertFalse(new WildcardMatcher("a*b*a").apply("alaska"));
- assertTrue(new WildcardMatcher("Hello?orld").apply("HelloWorld"));
- assertFalse(new WildcardMatcher("Hello?orld").apply("HelloWWWorld"));
- assertTrue(new WildcardMatcher("?aco*").apply("jacoco"));
+ assertTrue(new WildcardMatcher("*").matches(""));
+ assertTrue(new WildcardMatcher("*").matches("java/lang/Object"));
+ assertTrue(new WildcardMatcher("*Test").matches("jacoco/MatcherTest"));
+ assertTrue(new WildcardMatcher("Matcher*").matches("Matcher"));
+ assertTrue(new WildcardMatcher("Matcher*").matches("MatcherTest"));
+ assertTrue(new WildcardMatcher("a*b*a").matches("a-b-b-a"));
+ assertFalse(new WildcardMatcher("a*b*a").matches("alaska"));
+ assertTrue(new WildcardMatcher("Hello?orld").matches("HelloWorld"));
+ assertFalse(new WildcardMatcher("Hello?orld").matches("HelloWWWorld"));
+ assertTrue(new WildcardMatcher("?aco*").matches("jacoco"));
}
@Test
public void testMultiExpression() {
- assertTrue(new WildcardMatcher("Hello:World").apply("World"));
- assertTrue(new WildcardMatcher("Hello:World").apply("World"));
- assertTrue(new WildcardMatcher("*Test:*Foo").apply("UnitTest"));
+ assertTrue(new WildcardMatcher("Hello:World").matches("World"));
+ assertTrue(new WildcardMatcher("Hello:World").matches("World"));
+ assertTrue(new WildcardMatcher("*Test:*Foo").matches("UnitTest"));
}
@Test
public void testDollar() {
- assertTrue(new WildcardMatcher("*$*").apply("java/util/Map$Entry"));
+ assertTrue(new WildcardMatcher("*$*").matches("java/util/Map$Entry"));
assertTrue(new WildcardMatcher("*$$$*")
- .apply("org/example/Enity$$$generated123"));
+ .matches("org/example/Enity$$$generated123"));
}
}
diff --git a/org.jacoco.core/src/org/jacoco/core/matcher/ClassnameMatcher.java b/org.jacoco.core/src/org/jacoco/core/matcher/ClassnameMatcher.java
deleted file mode 100644
index 939bd5fe..00000000
--- a/org.jacoco.core/src/org/jacoco/core/matcher/ClassnameMatcher.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2017 Mountainminds GmbH & Co. KG and Contributors
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Jeffry Gaston - initial API and implementation
- *
- *******************************************************************************/
-
-package org.jacoco.core.matcher;
-
-import java.util.List;
-
-import org.objectweb.asm.ClassReader;
-
-/**
- * A ClassnameMatcher matches ClassReader objects based on their class name
- */
-public class ClassnameMatcher implements Predicate<ClassReader> {
- private IncludeExcludeMatcher<String> matcher = new IncludeExcludeMatcher<String>();
-
- /**
- * Includes the given pattern from the matches of this matcher
- * @param pattern to include
- * @return this object (for chaining)
- */
- public ClassnameMatcher include(String pattern) {
- matcher.include(new WildcardMatcher(pattern));
- return this;
- }
-
- /**
- * Adds the given patterns as inclusions for this matcher
- * @param patterns patterns to include
- * @return this object (for chaining)
- */
- public ClassnameMatcher include(List<String> patterns) {
- for (String pattern : patterns) {
- include(pattern);
- }
- return this;
- }
-
- /**
- * As the given pattern as an exclusion for this matcher
- * @param pattern pattern to exclude
- * @return this object (for chaining)
- */
- public ClassnameMatcher exclude(String pattern) {
- matcher.exclude(new WildcardMatcher(pattern));
- return this;
- }
-
- /**
- * As the given patterns as exclusions for this matcher
- * @param patterns patterns to include
- * @return this object (for chaining)
- */
- public ClassnameMatcher exclude(List<String> patterns) {
- for (String pattern : patterns) {
- exclude(pattern);
- }
- return this;
- }
-
-
- /**
- * Tells whether this matcher matches this class reader
- * @param classReader the reader to match
- * @return whether this matcher matches
- */
- @Override
- public boolean apply(ClassReader classReader) {
- return matcher.apply(classReader.getClassName().replaceAll("/", "."));
- }
-
-}
diff --git a/org.jacoco.core/src/org/jacoco/core/matcher/IncludeExcludeMatcher.java b/org.jacoco.core/src/org/jacoco/core/matcher/IncludeExcludeMatcher.java
deleted file mode 100644
index 50f1d886..00000000
--- a/org.jacoco.core/src/org/jacoco/core/matcher/IncludeExcludeMatcher.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2017 Mountainminds GmbH & Co. KG and Contributors
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Jeffry Gaston - initial API and implementation
- *
- *******************************************************************************/
-package org.jacoco.core.matcher;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * An IncludeExcludeMatcher matches a given input if
- * at least one inclusion matches and no exclusions match.
- */
-public class IncludeExcludeMatcher<T> implements Predicate<T> {
- private List<Predicate<T>> inclusions = new ArrayList<Predicate<T>>();
- private List<Predicate<T>> exclusions = new ArrayList<Predicate<T>>();
-
- /**
- * Includes the given matcher
- * @param inclusion new matcher to include
- * @return this object (for chaining several calls)
- */
- public IncludeExcludeMatcher include(Predicate<T> inclusion) {
- inclusions.add(inclusion);
- return this;
- }
-
- /**
- * Excludes a given matcher
- * @param exclusion
- * @return this object (for chaining several calls)
- */
- public IncludeExcludeMatcher exclude(Predicate<T> exclusion) {
- exclusions.add(exclusion);
- return this;
- }
-
- /**
- * Tells whether this matcher matches this string
- * @param input the string match
- * @return whether the matcher matches
- */
- @Override
- public boolean apply(T input) {
- // doesn't match if an exclusion matches
- for (Predicate<T> exclusion : exclusions) {
- if (exclusion.apply(input)) {
- return false;
- }
- }
- // does match if an inclusion matches
- for (Predicate<T> inclusion : inclusions) {
- if (inclusion.apply(input)) {
- return true;
- }
- }
- // no match; choose a default based on whether any includes were given
- return (inclusions.size() == 0);
- }
-}
diff --git a/org.jacoco.core/src/org/jacoco/core/matcher/Predicate.java b/org.jacoco.core/src/org/jacoco/core/matcher/Predicate.java
deleted file mode 100644
index 14d084b1..00000000
--- a/org.jacoco.core/src/org/jacoco/core/matcher/Predicate.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2017 Mountainminds GmbH & Co. KG and Contributors
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Jeffry Gaston - initial API and implementation
- *
- *******************************************************************************/
-package org.jacoco.core.matcher;
-
-/**
- * A simple interface telling whether a predicate matches an input.
- * Once the minimum supported version of Java is Java 1.8, then this can be replaced with the
- * built-in Java predicate.
- * While it could work to add a dependency on a library providing a similar interface, we prefer
- * to keep the number of dependencies low, to avoid forcing other dependencies onto
- * any builds that depend on Jacoco.
- */
-public interface Predicate<T> {
- boolean apply(final T s);
-}
diff --git a/org.jacoco.core/src/org/jacoco/core/matcher/WildcardMatcher.java b/org.jacoco.core/src/org/jacoco/core/matcher/WildcardMatcher.java
index 6ae20c4f..9e7bd871 100644
--- a/org.jacoco.core/src/org/jacoco/core/matcher/WildcardMatcher.java
+++ b/org.jacoco.core/src/org/jacoco/core/matcher/WildcardMatcher.java
@@ -18,7 +18,7 @@ import java.util.regex.Pattern;
* Multiple expressions can be separated with a colon (:). In this case the
* expression matches if at least one part matches.
*/
-public class WildcardMatcher implements Predicate<String> {
+public class WildcardMatcher {
private final Pattern pattern;
@@ -67,8 +67,7 @@ public class WildcardMatcher implements Predicate<String> {
* string to test
* @return <code>true</code>, if the expression matches
*/
- @Override
- public boolean apply(final String s) {
+ public boolean matches(final String s) {
return pattern.matcher(s).matches();
}
diff --git a/org.jacoco.report/src/org/jacoco/report/check/Rule.java b/org.jacoco.report/src/org/jacoco/report/check/Rule.java
index f424e81f..acf90586 100644
--- a/org.jacoco.report/src/org/jacoco/report/check/Rule.java
+++ b/org.jacoco.report/src/org/jacoco/report/check/Rule.java
@@ -116,7 +116,7 @@ public final class Rule {
}
boolean matches(final String name) {
- return includesMatcher.apply(name) && !excludesMatcher.apply(name);
+ return includesMatcher.matches(name) && !excludesMatcher.matches(name);
}
}