All Downloads are FREE. Search and download functionalities are using the official Maven repository.

munit.internal.junitinterface.GlobFilter Maven / Gradle / Ivy

There is a newer version: 1.0.0
Show newest version
package munit.internal.junitinterface;

import java.util.ArrayList;
import java.util.regex.Pattern;

import org.junit.runner.Description;
import org.junit.runner.manipulation.Filter;

public final class GlobFilter extends Filter
{
  private final ArrayList patterns = new ArrayList();
  private final RunSettings settings;

  public GlobFilter(RunSettings settings, Iterable globPatterns)
  {
    this.settings = settings;
    for(String p : globPatterns) patterns.add(compileGlobPattern(p));
  }

  @Override
  public String describe() {
    return "Filters out all tests not matched by the glob patterns";
  }

  @Override
  public boolean shouldRun(Description d)
  {
    if(d.isSuite()) return true;
    String plainName = settings.buildPlainName(d);

    for(Pattern p : patterns)
      if(p.matcher(plainName).matches()) return true;

    return false;
  }

  private static Pattern compileGlobPattern(String expr) {
    String[] a = expr.split("\\*", -1);
    StringBuilder b = new StringBuilder();
    for(int i=0; i




© 2015 - 2024 Weber Informatics LLC | Privacy Policy