/* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 ĠTar CV Ċ Ġ* ĠCopyright Ġ 2 0 1 4 ĠSh az am ĠEnter tain ment ĠLimited Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ċ Ġ* Ġthe ĠLicense . Ċ Ġ* Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ċ Ġ* Ġan Ġ" AS ĠIS " ĠBASIS , ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . ĠSee Ġthe ĠLicense Ġfor Ġthe Ċ Ġ* Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġcom . github . tar cv . t ongs Ċ Ċ import Ġcom . github . tar cv . t ongs . api . run . Run Configuration Ċ import Ġcom . github . tar cv . t ongs . api . run . Run Rule Ċ import Ġcom . github . tar cv . t ongs . api . run . Run RuleContext Ċ import Ġcom . github . tar cv . t ongs . api . run . Run Rule Factory Ċ import Ġcom . github . tar cv . t ongs . injector . Gson Injector Ċ import Ġcom . github . tar cv . t ongs . injector . Rule ManagerFactory Ċ import Ġcom . github . tar cv . t ongs . injector . accumulator Module Ċ import Ġcom . github . tar cv . t ongs . injector . device Geometry Module Ċ import Ġcom . github . tar cv . t ongs . injector . device Module Ċ import Ġcom . github . tar cv . t ongs . injector . listeners Module Ċ import Ġcom . github . tar cv . t ongs . injector . modules CreatedAt Start Ċ import Ġcom . github . tar cv . t ongs . injector . pool ing Module Ċ import Ġcom . github . tar cv . t ongs . injector . runner Module Ċ import Ġcom . github . tar cv . t ongs . injector . summary . html Generator Summary Module Ċ import Ġcom . github . tar cv . t ongs . injector . summary . summary Module Ċ import Ġcom . github . tar cv . t ongs . injector . summary . summary Printer Module Ċ import Ġcom . github . tar cv . t ongs . injector . system Module Ċ import Ġcom . github . tar cv . t ongs . injector . test Loading Module Ċ import Ġcom . github . tar cv . t ongs . injector . with Rules Ċ import Ġcom . github . tar cv . t ongs . runner . Android D dm Run Rule Factory Ċ import Ġcom . google . gson . Gson Ċ import Ġorg . apache . commons . io . FileUtils Ċ import Ġorg . apache . commons . lang 3 . time . Duration Format Utils Ċ import Ġorg . k oin . core . K oin Ċ import Ġorg . k oin . core . context . K oin Context Handler Ċ import Ġorg . k oin . core . context . start K oin Ċ import Ġorg . k oin . core . context . stop K oin Ċ import Ġorg . k oin . dsl . module Ċ import Ġorg . slf 4 j . LoggerFactory Ċ import Ġjava . io . File Ċ Ċ class ĠT ongs ( private Ġval Ġconfiguration : ĠConfiguration ) Ġ{ ĊĠĠĠ Ġ@ Jvm Over loads ĊĠĠĠ Ġfun Ġrun ( allow Throws : ĠBoolean Ġ= Ġfalse ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġinject All ( configuration ) ĊĊĠĠĠĠĠĠĠ Ġval Ġt ongs Runner Ġby ĠK oin Context Handler . get (). inject < T ongs Runner >() ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstart Of Tests Ms Ġ= ĠSystem . nano Time () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpredefined Rules Factories Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPrepare Output Directory Rule Factory (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAndroid D dm Run Rule Factory () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrule ManagerFactory Ġby ĠK oin Context Handler . get (). inject < Rule ManagerFactory >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrun Rules Ġ= Ġrule ManagerFactory ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. create < Run RuleContext , ĠRun Rule , ĠRun Rule Factory < Run Rule >>( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRun Rule Factory :: class . java , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpredefined Rules Factories ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ Ġrun Rule Factory : ĠRun Rule Factory < Run Rule >, Ġrun RuleContext : ĠRun RuleContext Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun Rule Factory . run Rules ( run RuleContext ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. create Rules From Ġ{ Ġconfiguration : ĠRun Configuration Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRun RuleContext ( configuration ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Rules ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" while Ġexecuting Ġa Ġrun Ġrule ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" while Ġrunning ĠT ongs ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun Rules , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġit . before () Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġit , Ġret Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . after () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġret ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( allow Throws ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt ongs Runner . throw ing Run () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt ongs Runner . run () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( allow Throws ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġe ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration Ġ= ĠUtils . millis Since Nano Time ( start Of Tests Ms ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . info ( Duration Format Utils . format Period ( 0 , Ġduration , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"' Total Ġtime Ġtaken :' ĠH Ġ' hours ' Ġm Ġ' minutes ' Ġs Ġ' seconds ' ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstop K oin () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠPrepare Output Directory Rule Factory (): ĠRun Rule Factory < Prepare Output Directory Rule > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġrun Rules ( context : ĠRun RuleContext ): ĠArray < out ĠPrepare Output Directory Rule > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠarrayOf ( Prepare Output Directory Rule ( context . configuration . output )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠPrepare Output Directory Rule ( private Ġval Ġoutput : ĠFile ): ĠRun Rule Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbefore () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFileUtils . delete Directory ( output ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// no inspection ĠResult Of MethodCall Ignored ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoutput . mkdir s () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġafter () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġno - op ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġlogger Ġ= ĠLoggerFactory . getLogger ( T ongs :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġfun Ġinject All ( configuration : ĠConfiguration ): ĠK oin Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstart Module Ġ= Ġmodule ( createdAt Start Ġ= Ġmodules CreatedAt Start ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsingle Ġ{ Ġconfiguration Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsingle Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconf Ġ= Ġget < Configuration >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRule ManagerFactory ( conf , Ġconf . plugins Instances ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsingle < Gson > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGson Injector . gson () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġstart K oin Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodules ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Module , ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhtml Generator Summary Module , Ġ// Ġneeds Ġnothing ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaccumulator Module , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdevice Module , Ġ// Ġneeds ĠConfiguration ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpooling Module , Ġ// Ġneeds ĠConfiguration , ĠRule ManagerFactory ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtest Loading Module , Ġ// Ġneeds ĠRule ManagerFactory ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdevice Geometry Module , Ġ// Ġneeds ĠCommand Output Logger Ġfrom Ġpooling Module ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsystem Module , Ġ// Ġneeds ĠConfiguration ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrunner Module , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlisteners Module , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsummary Printer Module , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsummary Module ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. k oin ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }