Coverage Report - org.apache.maven.surefire.providerapi.SurefireProvider
 
Classes in this File Line Coverage Branch Coverage Complexity
SurefireProvider
N/A
N/A
1
 
 1  
 package org.apache.maven.surefire.providerapi;
 2  
 
 3  
 /*
 4  
  * Licensed to the Apache Software Foundation (ASF) under one
 5  
  * or more contributor license agreements.  See the NOTICE file
 6  
  * distributed with this work for additional information
 7  
  * regarding copyright ownership.  The ASF licenses this file
 8  
  * to you under the Apache License, Version 2.0 (the
 9  
  * "License"); you may not use this file except in compliance
 10  
  * with the License.  You may obtain a copy of the License at
 11  
  *
 12  
  *     http://www.apache.org/licenses/LICENSE-2.0
 13  
  *
 14  
  * Unless required by applicable law or agreed to in writing,
 15  
  * software distributed under the License is distributed on an
 16  
  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 17  
  * KIND, either express or implied.  See the License for the
 18  
  * specific language governing permissions and limitations
 19  
  * under the License.
 20  
  */
 21  
 
 22  
 import java.lang.reflect.InvocationTargetException;
 23  
 import java.util.Iterator;
 24  
 import org.apache.maven.surefire.report.ReporterException;
 25  
 import org.apache.maven.surefire.suite.RunResult;
 26  
 import org.apache.maven.surefire.testset.TestSetFailedException;
 27  
 
 28  
 /**
 29  
  * Interface to be implemented by all Surefire providers.
 30  
  * <p/>
 31  
  * NOTE: This class is part of the proposed public api for surefire providers for 2.7. It may
 32  
  * still be subject to changes, even for minor revisions.
 33  
  * <p/>
 34  
  * The api covers this interface and all the types reachable from it. And nothing else.
 35  
  * <p/>
 36  
  * <p/>
 37  
  * Called in one of three ways:
 38  
  * Forkmode = never: getSuites is not called, invoke is called with null parameter
 39  
  * Forkmode = once: getSuites is not called, invoke is called with null parameter
 40  
  * Forkmode anything else: getSuites is called, invoke is called on new provider instance for each item in getSuites
 41  
  * response.
 42  
  *
 43  
  * @author Kristian Rosenvold
 44  
  */
 45  
 public interface SurefireProvider
 46  
 {
 47  
     /**
 48  
      * Determines the number of forks.
 49  
      * <p/>
 50  
      * Called when forkmode is different from "never" or "always", allows the provider to define
 51  
      * how to behave for the fork.
 52  
      *
 53  
      * @return An iterator that will trigger one fork per item
 54  
      */
 55  
     Iterator getSuites();
 56  
 
 57  
     /**
 58  
      * Runs a forked test
 59  
      *
 60  
      * @param forkTestSet An item from the iterator in #getSuites. Will be null for forkmode never or always.
 61  
      *                    When this is non-null, the forked process will run only that test
 62  
      *                    and probably not scan the classpath
 63  
      * @return A result of the invocation
 64  
      * @throws org.apache.maven.surefire.report.ReporterException
 65  
      *          When reporting fails
 66  
      * @throws org.apache.maven.surefire.testset.TestSetFailedException
 67  
      *          When testset fails
 68  
      */
 69  
 
 70  
     RunResult invoke( Object forkTestSet )
 71  
         throws TestSetFailedException, ReporterException, InvocationTargetException;
 72  
 
 73  
     /**
 74  
      * Makes an attempt at cancelling the current run, giving the provider a chance to notify
 75  
      * reporting that the remaining tests have been cancelled due to timeout.
 76  
      * <p/>
 77  
      * If the provider thinks it can terminate properly it is the responsibility of
 78  
      * the invoke method to return a RunResult with a booter code of failure.
 79  
      * <p/>
 80  
      * It is up to the provider to find out how to implement this method properly.
 81  
      * A provider may also choose to not do anything at all in this method,
 82  
      * which means surefire will kill the forked process soon afterwards anyway.
 83  
      * <p/>
 84  
      * Will be called on a different thread than the one calling invoke.
 85  
      */
 86  
     // Todo: Need to think a lot closer about how/if this works and if there is a use case for it.
 87  
     // Killing a process is slightly non-deterministic
 88  
     // And it
 89  
     void cancel();
 90  
 }