package Ġorg . gradle . kotlin . dsl . fixtures Ċ Ċ import Ġorg . gradle . api . Unchecked IOException Ċ import Ġorg . gradle . util . G FileUtils Ċ Ċ import Ġorg . junit . rules . Temporary Folder Ċ import Ġorg . junit . runner . Description Ċ import Ġorg . junit . runners . model . Statement Ċ Ċ import Ġkotlin . annotation . Annotation Target . FUNCTION Ċ import Ġkotlin . annotation . Annotation Target . CLASS ĊĊ Ċ /** Ċ Ġ* ĠA Ġ[ Temporary Folder ] ĠJ Unit Ġrule Ġthat Ġfails Ġthe Ġtest Ġif Ġthe Ġtemporary Ġfolder Ġcannot Ġbe Ġdeleted Ċ Ġ* Ġwhen Ġthe Ġtest Ġfinishes Ġand Ġthe Ġtest Ġis Ġnot Ġannotated Ġwith Ġ[ Le aks File Handles ]. Ċ Ġ*/ Ċ open Ġclass ĠForce fully Deleted Temporary Folder Ġ: ĠTemporary Folder () Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġdelete () Ġ= ĠG FileUtils . force Delete ( root ) ĊĊĠĠĠ Ġoverride Ġfun Ġapply ( base : ĠStatement , Ġdescription : ĠDescription ) Ġ= Ġobject Ġ: ĠStatement () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġevaluate () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbefore () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbase . evaluate () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( allows Deletion ( description )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( le aks File Handles ( description )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġignoring Delete Error Cause d By ( description ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġafter () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġafter () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate ĊĠĠĠ Ġfun Ġignoring Delete Error Cause d By ( description : ĠDescription , Ġaction : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠUn checked IOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . err . println ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Couldn 't Ġdelete Ġtest Ġdir Ġfor Ġ`${ description . displayName }` Ġ( test Ġis Ġholding Ġfiles Ġopen ).\ n " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ" In Ġorder Ġto Ġfind Ġout Ġwhich Ġfiles Ġare Ġheld Ġopen Ġyou Ġmay Ġfind Ġhttp :// file - leak - detector . ko hs uke . org / Ġuseful .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate ĊĠĠĠ Ġfun Ġallows Deletion ( description : ĠDescription ): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠ Ġdescription . getAnnotation ( Dont Delete Temporary Folder :: class . java ) Ġ== Ġnull ĊĊĠĠĠ Ġprivate ĊĠĠĠ Ġfun Ġle aks File Handles ( description : ĠDescription ) Ġ= ĊĠĠĠĠĠĠĠ Ġdescription . getAnnotation ( Le aks File Handles :: class . java ) Ġ!= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġdescription . test Class . getAnnotation ( Le aks File Handles :: class . java ) Ġ!= Ġnull Ċ } ĊĊ Ċ /** Ċ Ġ* ĠDe cla res Ġthat Ġthe Ġtest Ġholds Ġfiles Ġopen Ġand Ġtherefore Ġnot Ġto Ġerror Ġif Ġthe Ġtemporary Ġtest Ġdirectory Ċ Ġ* Ġcan 't Ġbe Ġforce fully Ġdeleted . Ċ Ġ* Ċ Ġ* Ġ@ see ĠForce fully Deleted Temporary Folder Ċ Ġ*/ Ċ @ Target ( FUNCTION , ĠCLASS ) Ċ annotation Ġclass ĠLe aks File Handles ( val Ġwhy : ĠString Ġ= Ġ"") ĊĊ Ċ /** Ċ Ġ* ĠDe cla res Ġthat Ġthe Ġtemporary Ġfolder Ġused Ġby Ġthe Ġtest Ġshould Ġnot Ġbe Ġforce fully Ġdeleted . Ċ Ġ* Ċ Ġ* ĠUseful Ġduring Ġdebugging . Ċ Ġ*/ Ċ @ Target ( FUNCTION ) Ċ annotation Ġclass ĠD ont Delete Temporary Folder ( val Ġwhy : ĠString ) Ċ