package Ġio . kot est . runner . junit . platform Ċ Ċ import Ġio . kot est . mpp . log Ċ import Ġio . kot est . core . config . Project Ċ import Ġio . kot est . core . spec . Spec Ċ import Ġio . kot est . core . engine . Isolation Test Engine Listener Ċ import Ġio . kot est . core . engine . K ot est Engine Ċ import Ġio . kot est . core . engine . Synchron ized Test Engine Listener Ċ import Ġio . kot est . core . engine . discovery . Discovery Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġorg . junit . platform . engine . Engine Discovery Request Ċ import Ġorg . junit . platform . engine . Execution Request Ċ import Ġorg . junit . platform . engine . Test Engine Ċ import Ġorg . junit . platform . engine . UniqueId Ċ import Ġorg . junit . platform . engine . discovery . Method Selector Ċ import Ġorg . junit . platform . engine . support . descriptor . Engine Descriptor Ċ import Ġorg . junit . platform . launcher . Launcher Discovery Request Ċ import Ġjava . util .* Ċ import Ġkotlin . reflect . K Class Ċ Ċ /** Ċ Ġ* ĠA ĠK ot est Ġimplementation Ġof Ġa ĠJ unit ĠPlatform Ġ[ Test Engine ]. Ċ Ġ*/ Ċ class ĠK ot est J unit Platform Test Engine Ġ: ĠTest Engine Ġ{ ĊĊĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠ Ġconst Ġval ĠEngine Id Ġ= Ġ" kot est " ĊĠĠ Ġ} ĊĊĠĠ Ġoverride Ġfun ĠgetId (): ĠString Ġ= ĊĠĠĠĠĠ ĠEngine Id ĊĊĠĠ Ġoverride Ġfun Ġget GroupId (): ĠOptional < String > Ġ= ĠOptional . of (" io . kot est ") ĊĊĠĠ Ġoverride Ġfun Ġexecute ( request : ĠExecution Request ) Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠ Ġlog (" JUnit ĠExecution Request [ ${ request :: class . java . name }] Ġ[ configuration Parameters =${ request . configuration Parameters }; Ġroot Test Descriptor =${ request . root Test Descriptor }] ") ĊĠĠĠĠĠ Ġval Ġroot Ġ= Ġrequest . root Test Descriptor Ġas ĠK ot est Engine Descriptor ĊĠĠĠĠĠ Ġval Ġlistener Ġ= ĠSynchron ized Test Engine Listener ( ĊĠĠĠĠĠĠĠĠ ĠI sol ation Test Engine Listener ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJ UnitTest Engine Listener ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSynchron ized Engine Execution Listener ( request . engine Execution Listener ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroot ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġval Ġrunner Ġ= ĠK ot est Engine ( ĊĠĠĠĠĠĠĠĠ Ġroot . classes , ĊĠĠĠĠĠĠĠĠ Ġempty List (), ĊĠĠĠĠĠĠĠĠ ĠProject . parallel ism (), ĊĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠ Ġlistener ĊĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġrunner . execute () ĊĠĠ Ġ} ĊĊĠĠ Ġoverride Ġfun Ġdiscover ( ĊĠĠĠĠĠ Ġrequest : ĠEngine Discovery Request , ĊĠĠĠĠĠ Ġunique Id : ĠUnique Id ĊĠĠ Ġ): ĠK ot est Engine Descriptor Ġ{ ĊĠĠĠĠĠ Ġlog (" unique Id =$ unique Id ") ĊĠĠĠĠĠ Ġlog ( request . string ()) ĊĊĠĠĠĠĠ Ġ// Ġif Ġwe Ġare Ġexcluded Ġfrom Ġthe Ġengines Ġthen Ġwe Ġsay Ġgood night ĊĠĠĠĠĠ Ġval Ġis K ot est Ġ= Ġrequest . engine Filters (). all Ġ{ Ġit . to Predicate (). test ( this ) Ġ} ĊĠĠĠĠĠ Ġif Ġ(! is K ot est ) ĊĠĠĠĠĠĠĠĠ Ġreturn ĠK ot est Engine Descriptor ( unique Id , Ġempty List ()) ĊĊĠĠĠĠĠ Ġval Ġpost Filters Ġ= Ġrequest . post Filters () ĊĠĠĠĠĠ Ġval Ġspec Filters Ġ= Ġpost Filters . map Ġ{ ĊĠĠĠĠĠĠĠĠ ĠClass Method Ad ap ting Filter ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġunique Id ĊĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġ// Ġa Ġmethod Ġselector Ġis Ġpassed Ġby Ġint ellij Ġto Ġrun Ġjust Ġa Ġsingle Ġmethod Ġinside Ġa Ġtest Ġfile ĊĠĠĠĠĠ Ġ// Ġthis Ġhappens Ġfor Ġexample , Ġwhen Ġtrying Ġto Ġrun Ġa Ġjunit Ġtest Ġalong side Ġk ot est Ġtests , ĊĠĠĠĠĠ Ġ// Ġand Ġk ot est Ġwill Ġthen Ġrun Ġall Ġother Ġtests . ĊĠĠĠĠĠ Ġ// Ġtherefore , Ġthe Ġpresence Ġof Ġa ĠMethod Selector Ġmeans Ġwe Ġmust Ġrun Ġno Ġtests Ġin ĠK T . ĊĠĠĠĠĠ Ġreturn Ġif Ġ( request . get Selectors ByType ( Method Selector :: class . java ). isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠDiscovery . discover ( create Discovery Request ( request )) ĊĠĠĠĠĠĠĠĠ Ġval Ġclasses Ġ= Ġresult . specs . filter Ġ{ Ġklass Ġ-> Ġspec Filters . isEmpty () Ġ|| Ġspec Filters . any Ġ{ Ġit . invoke ( klass ) Ġ} Ġ} ĊĠĠĠĠĠĠĠĠ ĠK ot est Engine Descriptor ( unique Id , Ġclasses ) ĊĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠ ĠK ot est Engine Descriptor ( unique Id , Ġempty List ()) ĊĠĠĠĠĠ Ġ} ĊĠĠ Ġ} Ċ } Ċ Ċ class ĠK ot est Engine Descriptor ( ĊĠĠ Ġid : ĠUnique Id , ĊĠĠ Ġval Ġclasses : ĠList < K Class < out ĠSpec >> Ċ ) Ġ: ĠEngine Descriptor ( id , Ġ" K ot est ") Ġ{ ĊĠĠ Ġoverride Ġfun Ġmay Register Tests (): ĠBoolean Ġ= Ġtrue Ċ } Ċ Ċ fun ĠEngine Discovery Request . engine Filters () Ġ= Ġwhen Ġ( this ) Ġ{ ĊĠĠ Ġis ĠLaunch er Discovery Request Ġ-> Ġengine Filters . toList () ĊĠĠ Ġelse Ġ-> Ġempty List () Ċ } Ċ Ċ fun ĠEngine Discovery Request . post Filters () Ġ= Ġwhen Ġ( this ) Ġ{ ĊĠĠ Ġis ĠLaunch er Discovery Request Ġ-> Ġpost Discovery Filters . toList () ĊĠĠ Ġelse Ġ-> Ġempty List () Ċ } Ċ