class TempDirectory extends java.lang.Object implements BeforeAllCallback, BeforeEachCallback, ParameterResolver
TempDirectory is a JUnit Jupiter extension that creates and cleans
up temporary directories if field in a test class or a parameter in a
lifecycle method or test method is annotated with @TempDir.
Consult the Javadoc for TempDir for details on the contract.
TempDir,
Files.createTempDirectory(java.nio.file.Path, java.lang.String, java.nio.file.attribute.FileAttribute<?>...)| Modifier and Type | Class and Description |
|---|---|
(package private) static class |
TempDirectory.CloseablePath |
private static class |
TempDirectory.FieldContext |
(package private) static interface |
TempDirectory.FileOperations |
(package private) static class |
TempDirectory.Scope |
| Modifier and Type | Field and Description |
|---|---|
private static java.lang.String |
CHILD_FAILED |
private JupiterConfiguration |
configuration |
private static java.lang.String |
FAILURE_TRACKER |
(package private) static java.lang.String |
FILE_OPERATIONS_KEY |
private static java.lang.String |
KEY |
(package private) static ExtensionContext.Namespace |
NAMESPACE |
| Constructor and Description |
|---|
TempDirectory(JupiterConfiguration configuration) |
| Modifier and Type | Method and Description |
|---|---|
private void |
assertNonFinalField(java.lang.reflect.Field field) |
private void |
assertSupportedType(java.lang.String target,
java.lang.Class<?> type) |
void |
beforeAll(ExtensionContext context)
Perform field injection for non-private,
static fields (i.e.,
class fields) of type Path or File that are annotated with
@TempDir. |
void |
beforeEach(ExtensionContext context)
Perform field injection for non-private, non-static fields (i.e.,
instance fields) of type
Path or File that are annotated
with @TempDir. |
(package private) static TempDirectory.CloseablePath |
createTempDir(TempDirFactory factory,
CleanupMode cleanupMode,
AnnotatedElementContext elementContext,
ExtensionContext extensionContext) |
private CleanupMode |
determineCleanupMode(TempDir tempDir) |
private CleanupMode |
determineCleanupModeForField(java.lang.reflect.Field field) |
private CleanupMode |
determineCleanupModeForParameter(ParameterContext parameterContext) |
private TempDirFactory |
determineTempDirFactory(TempDir tempDir,
TempDirectory.Scope scope) |
private TempDirFactory |
determineTempDirFactoryForField(java.lang.reflect.Field field,
TempDirectory.Scope scope) |
private TempDirFactory |
determineTempDirFactoryForParameter(ParameterContext parameterContext,
TempDirectory.Scope scope) |
private java.lang.Object |
getPathOrFile(AnnotatedElementContext elementContext,
java.lang.Class<?> type,
TempDirFactory factory,
CleanupMode cleanupMode,
TempDirectory.Scope scope,
ExtensionContext extensionContext) |
private TempDirectory.Scope |
getScope(ExtensionContext context) |
private void |
injectFields(ExtensionContext context,
java.lang.Object testInstance,
java.lang.Class<?> testClass,
java.util.function.Predicate<java.lang.reflect.Field> predicate) |
private void |
injectInstanceFields(ExtensionContext context,
java.lang.Object instance) |
private void |
injectStaticFields(ExtensionContext context,
java.lang.Class<?> testClass) |
private static void |
installFailureTracker(ExtensionContext context) |
java.lang.Object |
resolveParameter(ParameterContext parameterContext,
ExtensionContext extensionContext)
Resolve the current temporary directory for the
Parameter in the
supplied ParameterContext. |
private static boolean |
selfOrChildFailed(ExtensionContext context) |
boolean |
supportsParameter(ParameterContext parameterContext,
ExtensionContext extensionContext)
|
static final ExtensionContext.Namespace NAMESPACE
private static final java.lang.String KEY
private static final java.lang.String FAILURE_TRACKER
private static final java.lang.String CHILD_FAILED
static final java.lang.String FILE_OPERATIONS_KEY
private final JupiterConfiguration configuration
public TempDirectory(JupiterConfiguration configuration)
public void beforeAll(ExtensionContext context)
static fields (i.e.,
class fields) of type Path or File that are annotated with
@TempDir.beforeAll in interface BeforeAllCallbackcontext - the current extension context; never nullpublic void beforeEach(ExtensionContext context)
Path or File that are annotated
with @TempDir.beforeEach in interface BeforeEachCallbackcontext - the current extension context; never nullprivate static void installFailureTracker(ExtensionContext context)
private void injectStaticFields(ExtensionContext context, java.lang.Class<?> testClass)
private void injectInstanceFields(ExtensionContext context, java.lang.Object instance)
private void injectFields(ExtensionContext context, java.lang.Object testInstance, java.lang.Class<?> testClass, java.util.function.Predicate<java.lang.reflect.Field> predicate)
public boolean supportsParameter(ParameterContext parameterContext, ExtensionContext extensionContext)
supportsParameter in interface ParameterResolverparameterContext - the context for the parameter for which an argument should
be resolved; never nullextensionContext - the extension context for the Executable
about to be invoked; never nulltrue if this resolver can resolve an argument for the parameterParameterResolver.resolveParameter(org.junit.jupiter.api.extension.ParameterContext, org.junit.jupiter.api.extension.ExtensionContext),
ParameterContextpublic java.lang.Object resolveParameter(ParameterContext parameterContext, ExtensionContext extensionContext)
Parameter in the
supplied ParameterContext.resolveParameter in interface ParameterResolverparameterContext - the context for the parameter for which an argument should
be resolved; never nullextensionContext - the extension context for the Executable
about to be invoked; never nullnull if the
parameter type is not a primitiveParameterResolver.supportsParameter(org.junit.jupiter.api.extension.ParameterContext, org.junit.jupiter.api.extension.ExtensionContext),
ParameterContextprivate CleanupMode determineCleanupModeForField(java.lang.reflect.Field field)
private CleanupMode determineCleanupModeForParameter(ParameterContext parameterContext)
private CleanupMode determineCleanupMode(TempDir tempDir)
private TempDirectory.Scope getScope(ExtensionContext context)
private TempDirFactory determineTempDirFactoryForField(java.lang.reflect.Field field, TempDirectory.Scope scope)
private TempDirFactory determineTempDirFactoryForParameter(ParameterContext parameterContext, TempDirectory.Scope scope)
private TempDirFactory determineTempDirFactory(TempDir tempDir, TempDirectory.Scope scope)
private void assertNonFinalField(java.lang.reflect.Field field)
private void assertSupportedType(java.lang.String target,
java.lang.Class<?> type)
private java.lang.Object getPathOrFile(AnnotatedElementContext elementContext, java.lang.Class<?> type, TempDirFactory factory, CleanupMode cleanupMode, TempDirectory.Scope scope, ExtensionContext extensionContext)
static TempDirectory.CloseablePath createTempDir(TempDirFactory factory, CleanupMode cleanupMode, AnnotatedElementContext elementContext, ExtensionContext extensionContext)
private static boolean selfOrChildFailed(ExtensionContext context)