Class 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<?>...)
    • 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 type Path or File 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 type Path or File 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 the Parameter in the supplied ParameterContext.
      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 the Parameter in the supplied ParameterContext is annotated with @TempDir.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • 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 type Path or File that are annotated with @TempDir.
        Specified by:
        beforeAll in interface org.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 type Path or File that are annotated with @TempDir.
        Specified by:
        beforeEach in interface org.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 the Parameter in the supplied ParameterContext is annotated with @TempDir.
        Specified by:
        supportsParameter in interface org.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 the Parameter in the supplied ParameterContext.
        Specified by:
        resolveParameter in interface org.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)