@Test public void testprunedPattern() throws Exception { ApiSurface apiSurface = ApiSurface.ofClass(NotPruned.class).pruningClass(PrunedPattern.class); assertThat(apiSurface.getExposedClasses(), containsInAnyOrder((Class) NotPruned.class)); }
private boolean verifyNoDisallowed( final ApiSurface checkedApiSurface, final Set<Matcher<Class<?>>> allowedClasses, final Description mismatchDescription) { /* <helper_lambdas> */ final Function<Class<?>, List<Class<?>>> toExposure = checkedApiSurface::getAnyExposurePath; final Maps.EntryTransformer<Class<?>, List<Class<?>>, String> toMessage = (aClass, exposure) -> aClass + " exposed via:\n\t\t" + Joiner.on("\n\t\t").join(exposure); final Predicate<Class<?>> disallowed = aClass -> !classIsAllowed(aClass, allowedClasses); /* </helper_lambdas> */ final FluentIterable<Class<?>> disallowedClasses = FluentIterable.from(checkedApiSurface.getExposedClasses()).filter(disallowed); final ImmutableMap<Class<?>, List<Class<?>>> exposures = Maps.toMap(disallowedClasses, toExposure); final ImmutableList<String> messages = FluentIterable.from(Maps.transformEntries(exposures, toMessage).values()) .toSortedList(Ordering.natural()); if (!messages.isEmpty()) { mismatchDescription.appendText( "The following disallowed classes appeared on the API surface:\n\t" + Joiner.on("\n\t").join(messages)); } return messages.isEmpty(); }
@Test public void testIgnoreAll() throws Exception { ApiSurface apiSurface = ApiSurface.ofClass(ExposedWildcardBound.class) .includingClass(Object.class) .includingClass(ApiSurface.class) .pruningPattern(".*"); assertThat(apiSurface.getExposedClasses(), emptyIterable()); }
FluentIterable.from(checkedApiSurface.getExposedClasses()) .anyMatch(classMatcher::matches);