Search in sources :

Example 26 with Filter

use of org.junit.runner.manipulation.Filter in project randomizedtesting by randomizedtesting.

the class SlaveMain method execute.

/**
 * Execute tests.
 */
private void execute(Iterator<String> classNames) throws Throwable {
    final RunNotifier fNotifier = new OrderedRunNotifier();
    final Result result = new Result();
    final Writer debug = debugMessagesFile == null ? new NullWriter() : new OutputStreamWriter(new FileOutputStream(debugMessagesFile), "UTF-8");
    fNotifier.addListener(result.createListener());
    fNotifier.addListener(new StreamFlusherDecorator(new NoExceptionRunListenerDecorator(new RunListenerEmitter(serializer)) {

        @Override
        protected void exception(Throwable t) {
            warn("Event serializer exception.", t);
        }
    }));
    fNotifier.addListener(new RunListener() {

        public void testRunFinished(Result result) throws Exception {
            debug(debug, "testRunFinished(T:" + result.getRunCount() + ";F:" + result.getFailureCount() + ";I:" + result.getIgnoreCount() + ")");
            serializer.flush();
        }

        @Override
        public void testRunStarted(Description description) throws Exception {
            debug(debug, "testRunStarted(" + description + ")");
            serializer.flush();
        }

        @Override
        public void testStarted(Description description) throws Exception {
            debug(debug, "testStarted(" + description + ")");
            serializer.flush();
        }

        public void testFinished(Description description) throws Exception {
            debug(debug, "testFinished(" + description + ")");
            serializer.flush();
        }

        @Override
        public void testIgnored(Description description) throws Exception {
            debug(debug, "testIgnored(T:" + description + ")");
        }

        @Override
        public void testFailure(Failure failure) throws Exception {
            debug(debug, "testFailure(T:" + failure + ")");
        }

        @Override
        public void testAssumptionFailure(Failure failure) {
            try {
                debug(debug, "testAssumptionFailure(T:" + failure + ")");
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
        }
    });
    /*
     * Instantiate method filter if any.
     */
    String methodFilterGlob = Strings.emptyToNull(System.getProperty(SysGlobals.SYSPROP_TESTMETHOD()));
    Filter methodFilter = Filter.ALL;
    if (methodFilterGlob != null) {
        methodFilter = new MethodGlobFilter(methodFilterGlob);
    }
    /*
     * Important. Run each class separately so that we get separate 
     * {@link RunListener} callbacks for the top extracted description.
     */
    debug(debug, "Entering main suite loop.");
    try {
        while (classNames.hasNext()) {
            final String clName = classNames.next();
            debug(debug, "Instantiating: " + clName);
            Class<?> clazz = instantiate(clName);
            if (clazz == null)
                continue;
            Request request = Request.aClass(clazz);
            try {
                Runner runner = request.getRunner();
                methodFilter.apply(runner);
                // New RunListener instances should be added per class and then removed from the RunNotifier
                ArrayList<RunListener> runListenerInstances = instantiateRunListeners();
                for (RunListener runListener : runListenerInstances) {
                    fNotifier.addListener(runListener);
                }
                fNotifier.fireTestRunStarted(runner.getDescription());
                debug(debug, "Runner.run(" + clName + ")");
                runner.run(fNotifier);
                debug(debug, "Runner.done(" + clName + ")");
                fNotifier.fireTestRunFinished(result);
                for (RunListener runListener : runListenerInstances) {
                    fNotifier.removeListener(runListener);
                }
            } catch (NoTestsRemainException e) {
            // Don't complain if all methods have been filtered out.
            // I don't understand the reason why this exception has been
            // built in to filters at all.
            }
        }
    } catch (Throwable t) {
        debug(debug, "Main suite loop error: " + t);
        throw t;
    } finally {
        debug(debug, "Leaving main suite loop.");
        debug.close();
    }
}
Also used : RandomizedRunner(com.carrotsearch.randomizedtesting.RandomizedRunner) Runner(org.junit.runner.Runner) Description(org.junit.runner.Description) MethodGlobFilter(com.carrotsearch.randomizedtesting.MethodGlobFilter) NoTestsRemainException(org.junit.runner.manipulation.NoTestsRemainException) Result(org.junit.runner.Result) Failure(org.junit.runner.notification.Failure) RunNotifier(org.junit.runner.notification.RunNotifier) Request(org.junit.runner.Request) IOException(java.io.IOException) IOException(java.io.IOException) NoTestsRemainException(org.junit.runner.manipulation.NoTestsRemainException) RunListener(org.junit.runner.notification.RunListener) MethodGlobFilter(com.carrotsearch.randomizedtesting.MethodGlobFilter) Filter(org.junit.runner.manipulation.Filter) FileOutputStream(java.io.FileOutputStream) OutputStreamWriter(java.io.OutputStreamWriter) OutputStreamWriter(java.io.OutputStreamWriter) Writer(java.io.Writer)

Example 27 with Filter

use of org.junit.runner.manipulation.Filter in project junit4 by junit-team.

the class FilterFactoriesTest method shouldCreateFilterWithArguments.

@Test
public void shouldCreateFilterWithArguments() throws Exception {
    Filter filter = FilterFactories.createFilterFromFilterSpec(createSuiteRequest(), ExcludeCategories.class.getName() + "=" + DummyCategory.class.getName());
    assertThat(filter.describe(), startsWith("excludes "));
}
Also used : Filter(org.junit.runner.manipulation.Filter) ExcludeCategories(org.junit.experimental.categories.ExcludeCategories) Test(org.junit.Test)

Example 28 with Filter

use of org.junit.runner.manipulation.Filter in project junit4 by junit-team.

the class FilterFactoriesTest method shouldCreateFilter.

@Test
public void shouldCreateFilter() throws Exception {
    Filter filter = FilterFactories.createFilter(FilterFactoryStub.class, new FilterFactoryParams(Description.createSuiteDescription(testName.getMethodName()), ""));
    assertThat(filter, instanceOf(DummyFilter.class));
}
Also used : Filter(org.junit.runner.manipulation.Filter) Test(org.junit.Test)

Example 29 with Filter

use of org.junit.runner.manipulation.Filter in project junit4 by junit-team.

the class FilterFactoriesTest method shouldPassOnDescriptionToFilterFactory.

@Test
public void shouldPassOnDescriptionToFilterFactory() throws Exception {
    Request request = createSuiteRequest();
    Description description = request.getRunner().getDescription();
    Filter filter = FilterFactories.createFilterFromFilterSpec(request, FilterFactoryStub.class.getName());
    // This assumption tested in shouldCreateFilterWithNoArguments()
    assumeThat(filter, instanceOf(DummyFilter.class));
    DummyFilter dummyFilter = (DummyFilter) filter;
    assertThat(dummyFilter.getTopLevelDescription(), is(description));
}
Also used : Filter(org.junit.runner.manipulation.Filter) Test(org.junit.Test)

Example 30 with Filter

use of org.junit.runner.manipulation.Filter in project junit4 by junit-team.

the class JUnitCommandLineParseResult method applyFilterSpecs.

private Request applyFilterSpecs(Request request) {
    try {
        for (String filterSpec : filterSpecs) {
            Filter filter = FilterFactories.createFilterFromFilterSpec(request, filterSpec);
            request = request.filterWith(filter);
        }
        return request;
    } catch (FilterNotCreatedException e) {
        return errorReport(e);
    }
}
Also used : Filter(org.junit.runner.manipulation.Filter) FilterNotCreatedException(org.junit.runner.FilterFactory.FilterNotCreatedException)

Aggregations

Filter (org.junit.runner.manipulation.Filter)34 Test (org.junit.Test)14 Description (org.junit.runner.Description)14 Runner (org.junit.runner.Runner)8 Request (org.junit.runner.Request)7 NoTestsRemainException (org.junit.runner.manipulation.NoTestsRemainException)7 Filterable (org.junit.runner.manipulation.Filterable)4 ArrayList (java.util.ArrayList)3 LinkedList (java.util.LinkedList)3 RunNotifier (org.junit.runner.notification.RunNotifier)3 RegExTestCaseFilter (com.google.testing.junit.junit4.runner.RegExTestCaseFilter)2 SuiteTrimmingFilter (com.google.testing.junit.junit4.runner.SuiteTrimmingFilter)2 IOException (java.io.IOException)2 Method (java.lang.reflect.Method)2 TestSelectionMatcher (org.gradle.api.internal.tasks.testing.filter.TestSelectionMatcher)2 Test (org.junit.jupiter.api.Test)2 JUnitCore (org.junit.runner.JUnitCore)2 Result (org.junit.runner.Result)2 RunListener (org.junit.runner.notification.RunListener)2 MethodGlobFilter (com.carrotsearch.randomizedtesting.MethodGlobFilter)1