| /** |
| * |
| */ |
| 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 |
| * <code>classRequest</code> |
| */ |
| 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()))); |
| } |
| } |
| } |