/** * */ package org.junit.internal.requests; import org.junit.internal.runners.ErrorReportingRunner; import org.junit.runner.Request; import org.junit.runner.Runner; import org.junit.runner.manipulation.Filter; import org.junit.runner.manipulation.NoTestsRemainException; /** * A filtered {@link Request}. */ public final class FilterRequest extends Request { private final Request fRequest; private final Filter fFilter; /** * Creates a filtered Request * @param classRequest a {@link Request} describing your Tests * @param filter {@link Filter} to apply to the Tests described in * classRequest */ public FilterRequest(Request classRequest, Filter filter) { fRequest= classRequest; fFilter= filter; } @Override public Runner getRunner() { try { Runner runner= fRequest.getRunner(); fFilter.apply(runner); return runner; } catch (NoTestsRemainException e) { return new ErrorReportingRunner(Filter.class, new Exception(String .format("No tests found matching %s from %s", fFilter .describe(), fRequest.toString()))); } } }