Open Source Repository

Home /junit/junit-4.8.2 | Repository Home



org/junit/internal/requests/FilterRequest.java
/**
 
 */
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())));
    }
  }
}