01: /**
02: *
03: */package org.junit.internal.requests;
04:
05: import org.junit.runner.Request;
06: import org.junit.runner.Runner;
07: import org.junit.runner.manipulation.Filter;
08: import org.junit.runner.manipulation.NoTestsRemainException;
09:
10: /**
11: * A filtered {@link Request}.
12: */
13: public final class FilterRequest extends Request {
14: private final Request fRequest;
15: private final Filter fFilter;
16:
17: /**
18: * Creates a filtered Request
19: * @param classRequest a {@link Request} describing your Tests
20: * @param filter {@link Filter} to apply to the Tests described in
21: * <code>classRequest</code>
22: */
23: public FilterRequest(Request classRequest, Filter filter) {
24: fRequest = classRequest;
25: fFilter = filter;
26: }
27:
28: /** @inheritDoc */
29: @Override
30: public Runner getRunner() {
31: try {
32: Runner runner = fRequest.getRunner();
33: fFilter.apply(runner);
34: return runner;
35: } catch (NoTestsRemainException e) {
36: return Request.errorReport(
37: Filter.class,
38: new Exception(String.format(
39: "No tests found matching %s from %s",
40: fFilter.describe(), fRequest.toString())))
41: .getRunner();
42: }
43: }
44: }
|