Package groovy.junit6.plugin

# Class ForkedJvmExtension

java.lang.Object
groovy.junit6.plugin.ForkedJvmExtension

All Implemented Interfaces:
  `Extension`, `InvocationInterceptor`, `TestInstantiationAwareExtension`

public class ForkedJvmExtension extends Object implements InvocationInterceptor
JUnit 5 `InvocationInterceptor` backing the `ForkedJvm` annotation. When applied, the test method is skipped in the current JVM and re-run in a freshly forked JVM via `ForkedJvmTestRunner`, with any declared system properties and JVM args.

Recursion is avoided by setting the system property `ForkedJvmTestRunner.FORKED_FLAG` on the child; when the extension sees that flag set in the current JVM it just proceeds with the normal invocation (i.e. the child JVM actually runs the test body).

Since:
  6.0.0

- ## Nested Class Summary

  ## Nested classes/interfaces inherited from interface org.junit.jupiter.api.extension.InvocationInterceptor

  `InvocationInterceptor.Invocation<T extends Object>`

  ## Nested classes/interfaces inherited from interface org.junit.jupiter.api.extension.TestInstantiationAwareExtension

  `TestInstantiationAwareExtension.ExtensionContextScope`

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final String`
  `EXCLUDE_CLASSPATH_PROP`
  System property naming a comma-separated list of regular expressions to exclude from the parent's `java.class.path` when building the forked JVM's classpath.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `ForkedJvmExtension()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static String`
  `filterClasspath(String classpath, List<Pattern> excludes)`
  Filters `classpath` (a `File.pathSeparator`-separated list) by dropping entries that match any of the supplied regular expressions via `Matcher.find()`.
  `void`
  `interceptTestMethod(InvocationInterceptor.Invocation<Void> invocation, ReflectiveInvocationContext<Method> invocationContext, ExtensionContext extensionContext)`

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

  ### Methods inherited from interface org.junit.jupiter.api.extension.InvocationInterceptor

  `interceptAfterAllMethod, interceptAfterEachMethod, interceptBeforeAllMethod, interceptBeforeEachMethod, interceptDynamicTest, interceptTestClassConstructor, interceptTestFactoryMethod, interceptTestTemplateMethod`

  ### Methods inherited from interface org.junit.jupiter.api.extension.TestInstantiationAwareExtension

  `getTestInstantiationExtensionContextScope`

- ## Field Details

  - ### EXCLUDE_CLASSPATH_PROP

    public static final String EXCLUDE_CLASSPATH_PROP
    System property naming a comma-separated list of regular expressions to exclude from the parent's `java.class.path` when building the forked JVM's classpath. Augments `ForkedJvm.excludeFromClasspath()`.
    See Also:
      - Constant Field Values

- ## Constructor Details

  - ### ForkedJvmExtension

    public ForkedJvmExtension()

- ## Method Details

  - ### interceptTestMethod

    public void interceptTestMethod(InvocationInterceptor.Invocation<Void> invocation, ReflectiveInvocationContext<Method> invocationContext, ExtensionContext extensionContext) throws Throwable
    Specified by:
      `interceptTestMethod` in interface `InvocationInterceptor`
    Throws:
      `Throwable`

  - ### filterClasspath

    public static String filterClasspath(String classpath, List<Pattern> excludes)
    Filters `classpath` (a `File.pathSeparator`-separated list) by dropping entries that match any of the supplied regular expressions via `Matcher.find()`. Visible for testing.
    Parameters:
      `classpath` - the original classpath string
      `excludes` - regex patterns; an empty list returns `classpath` unchanged
    Returns:
      the filtered classpath string