aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/junit/internal/requests/FilterRequest.java
blob: e5d98d18d454c0b4a153f9b2da6ff396f978f7cd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
/**
 * 
 */
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())));
		}
	}
}