Class TempDirectory
- java.lang.Object
-
- org.junit.jupiter.engine.extension.TempDirectory
-
- All Implemented Interfaces:
org.junit.jupiter.api.extension.BeforeAllCallback
,org.junit.jupiter.api.extension.BeforeEachCallback
,org.junit.jupiter.api.extension.Extension
,org.junit.jupiter.api.extension.ParameterResolver
class TempDirectory extends java.lang.Object implements org.junit.jupiter.api.extension.BeforeAllCallback, org.junit.jupiter.api.extension.BeforeEachCallback, org.junit.jupiter.api.extension.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.- Since:
- 5.4
- See Also:
TempDir
,Files.createTempDirectory(java.nio.file.Path, java.lang.String, java.nio.file.attribute.FileAttribute<?>...)
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description (package private) static class
TempDirectory.CloseablePath
private static class
TempDirectory.FieldContext
(package private) static interface
TempDirectory.FileOperations
(package private) static class
TempDirectory.Scope
-
Field Summary
Fields Modifier and Type Field 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 org.junit.jupiter.api.extension.ExtensionContext.Namespace
NAMESPACE
-
Constructor Summary
Constructors Constructor Description TempDirectory(JupiterConfiguration configuration)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private void
assertNonFinalField(java.lang.reflect.Field field)
private void
assertSupportedType(java.lang.String target, java.lang.Class<?> type)
void
beforeAll(org.junit.jupiter.api.extension.ExtensionContext context)
Perform field injection for non-private,static
fields (i.e., class fields) of typePath
orFile
that are annotated with@TempDir
.void
beforeEach(org.junit.jupiter.api.extension.ExtensionContext context)
Perform field injection for non-private, non-static fields (i.e., instance fields) of typePath
orFile
that are annotated with@TempDir
.(package private) static TempDirectory.CloseablePath
createTempDir(org.junit.jupiter.api.io.TempDirFactory factory, org.junit.jupiter.api.io.CleanupMode cleanupMode, org.junit.jupiter.api.extension.AnnotatedElementContext elementContext, org.junit.jupiter.api.extension.ExtensionContext extensionContext)
private org.junit.jupiter.api.io.CleanupMode
determineCleanupMode(org.junit.jupiter.api.io.TempDir tempDir)
private org.junit.jupiter.api.io.CleanupMode
determineCleanupModeForField(java.lang.reflect.Field field)
private org.junit.jupiter.api.io.CleanupMode
determineCleanupModeForParameter(org.junit.jupiter.api.extension.ParameterContext parameterContext)
private org.junit.jupiter.api.io.TempDirFactory
determineTempDirFactory(org.junit.jupiter.api.io.TempDir tempDir, TempDirectory.Scope scope)
private org.junit.jupiter.api.io.TempDirFactory
determineTempDirFactoryForField(java.lang.reflect.Field field, TempDirectory.Scope scope)
private org.junit.jupiter.api.io.TempDirFactory
determineTempDirFactoryForParameter(org.junit.jupiter.api.extension.ParameterContext parameterContext, TempDirectory.Scope scope)
private java.lang.Object
getPathOrFile(org.junit.jupiter.api.extension.AnnotatedElementContext elementContext, java.lang.Class<?> type, org.junit.jupiter.api.io.TempDirFactory factory, org.junit.jupiter.api.io.CleanupMode cleanupMode, TempDirectory.Scope scope, org.junit.jupiter.api.extension.ExtensionContext extensionContext)
private TempDirectory.Scope
getScope(org.junit.jupiter.api.extension.ExtensionContext context)
private void
injectFields(org.junit.jupiter.api.extension.ExtensionContext context, java.lang.Object testInstance, java.lang.Class<?> testClass, java.util.function.Predicate<java.lang.reflect.Field> predicate)
private void
injectInstanceFields(org.junit.jupiter.api.extension.ExtensionContext context, java.lang.Object instance)
private void
injectStaticFields(org.junit.jupiter.api.extension.ExtensionContext context, java.lang.Class<?> testClass)
private static void
installFailureTracker(org.junit.jupiter.api.extension.ExtensionContext context)
java.lang.Object
resolveParameter(org.junit.jupiter.api.extension.ParameterContext parameterContext, org.junit.jupiter.api.extension.ExtensionContext extensionContext)
Resolve the current temporary directory for theParameter
in the suppliedParameterContext
.private static boolean
selfOrChildFailed(org.junit.jupiter.api.extension.ExtensionContext context)
boolean
supportsParameter(org.junit.jupiter.api.extension.ParameterContext parameterContext, org.junit.jupiter.api.extension.ExtensionContext extensionContext)
Determine if theParameter
in the suppliedParameterContext
is annotated with@TempDir
.
-
-
-
Field Detail
-
NAMESPACE
static final org.junit.jupiter.api.extension.ExtensionContext.Namespace NAMESPACE
-
KEY
private static final java.lang.String KEY
- See Also:
- Constant Field Values
-
FAILURE_TRACKER
private static final java.lang.String FAILURE_TRACKER
- See Also:
- Constant Field Values
-
CHILD_FAILED
private static final java.lang.String CHILD_FAILED
- See Also:
- Constant Field Values
-
FILE_OPERATIONS_KEY
static final java.lang.String FILE_OPERATIONS_KEY
- See Also:
- Constant Field Values
-
configuration
private final JupiterConfiguration configuration
-
-
Constructor Detail
-
TempDirectory
public TempDirectory(JupiterConfiguration configuration)
-
-
Method Detail
-
beforeAll
public void beforeAll(org.junit.jupiter.api.extension.ExtensionContext context)
Perform field injection for non-private,static
fields (i.e., class fields) of typePath
orFile
that are annotated with@TempDir
.- Specified by:
beforeAll
in interfaceorg.junit.jupiter.api.extension.BeforeAllCallback
-
beforeEach
public void beforeEach(org.junit.jupiter.api.extension.ExtensionContext context)
Perform field injection for non-private, non-static fields (i.e., instance fields) of typePath
orFile
that are annotated with@TempDir
.- Specified by:
beforeEach
in interfaceorg.junit.jupiter.api.extension.BeforeEachCallback
-
installFailureTracker
private static void installFailureTracker(org.junit.jupiter.api.extension.ExtensionContext context)
-
injectStaticFields
private void injectStaticFields(org.junit.jupiter.api.extension.ExtensionContext context, java.lang.Class<?> testClass)
-
injectInstanceFields
private void injectInstanceFields(org.junit.jupiter.api.extension.ExtensionContext context, java.lang.Object instance)
-
injectFields
private void injectFields(org.junit.jupiter.api.extension.ExtensionContext context, java.lang.Object testInstance, java.lang.Class<?> testClass, java.util.function.Predicate<java.lang.reflect.Field> predicate)
-
supportsParameter
public boolean supportsParameter(org.junit.jupiter.api.extension.ParameterContext parameterContext, org.junit.jupiter.api.extension.ExtensionContext extensionContext)
Determine if theParameter
in the suppliedParameterContext
is annotated with@TempDir
.- Specified by:
supportsParameter
in interfaceorg.junit.jupiter.api.extension.ParameterResolver
-
resolveParameter
public java.lang.Object resolveParameter(org.junit.jupiter.api.extension.ParameterContext parameterContext, org.junit.jupiter.api.extension.ExtensionContext extensionContext)
Resolve the current temporary directory for theParameter
in the suppliedParameterContext
.- Specified by:
resolveParameter
in interfaceorg.junit.jupiter.api.extension.ParameterResolver
-
determineCleanupModeForField
private org.junit.jupiter.api.io.CleanupMode determineCleanupModeForField(java.lang.reflect.Field field)
-
determineCleanupModeForParameter
private org.junit.jupiter.api.io.CleanupMode determineCleanupModeForParameter(org.junit.jupiter.api.extension.ParameterContext parameterContext)
-
determineCleanupMode
private org.junit.jupiter.api.io.CleanupMode determineCleanupMode(org.junit.jupiter.api.io.TempDir tempDir)
-
getScope
private TempDirectory.Scope getScope(org.junit.jupiter.api.extension.ExtensionContext context)
-
determineTempDirFactoryForField
private org.junit.jupiter.api.io.TempDirFactory determineTempDirFactoryForField(java.lang.reflect.Field field, TempDirectory.Scope scope)
-
determineTempDirFactoryForParameter
private org.junit.jupiter.api.io.TempDirFactory determineTempDirFactoryForParameter(org.junit.jupiter.api.extension.ParameterContext parameterContext, TempDirectory.Scope scope)
-
determineTempDirFactory
private org.junit.jupiter.api.io.TempDirFactory determineTempDirFactory(org.junit.jupiter.api.io.TempDir tempDir, TempDirectory.Scope scope)
-
assertNonFinalField
private void assertNonFinalField(java.lang.reflect.Field field)
-
assertSupportedType
private void assertSupportedType(java.lang.String target, java.lang.Class<?> type)
-
getPathOrFile
private java.lang.Object getPathOrFile(org.junit.jupiter.api.extension.AnnotatedElementContext elementContext, java.lang.Class<?> type, org.junit.jupiter.api.io.TempDirFactory factory, org.junit.jupiter.api.io.CleanupMode cleanupMode, TempDirectory.Scope scope, org.junit.jupiter.api.extension.ExtensionContext extensionContext)
-
createTempDir
static TempDirectory.CloseablePath createTempDir(org.junit.jupiter.api.io.TempDirFactory factory, org.junit.jupiter.api.io.CleanupMode cleanupMode, org.junit.jupiter.api.extension.AnnotatedElementContext elementContext, org.junit.jupiter.api.extension.ExtensionContext extensionContext)
-
selfOrChildFailed
private static boolean selfOrChildFailed(org.junit.jupiter.api.extension.ExtensionContext context)
-
-