/* Ċ Ġ* ĠĠĠ ĠCopyright Ġ 2 0 1 9 ĠT rev or ĠJ ones Ċ Ġ* Ċ Ġ* ĠĠĠ Ġ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 . tre vj one z . github Ċ Ċ import Ġcom . tre vj one z . github . statuses . Status Ċ import Ġgro ovy . util . Xml Sl ur per Ċ import Ġgro ovy . util . sl ur pers upport . G Path Result Ċ import Ġgro ovy . util . sl ur pers upport . Node Child Ċ import Ġorg . gradle . api . provider . Provider Ċ import Ġjava . io . File Ċ Ċ class ĠTest Result Parser ( report Dir : ĠProvider < File >) Ġ{ ĊĊĠ Ġprivate Ġval Ġresults : ĠProvider < Total Results > Ġ= ĊĠĠĠ Ġreport Dir . map Ġ{ Ġdir Ġ-> ĊĠĠĠĠĠ Ġval Ġfile Results Ġ= ĊĠĠĠĠĠĠĠ Ġdir . list Files () ĊĠĠĠĠĠĠĠĠĠ Ġ? . filter Ġ{ Ġit . name . endsWith (". xml ") Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ? . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtest Suite Ġ= ĠXml Sl ur per (). parse ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFile Results ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtest Suite [" tests "]. to Long (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtest Suite [" skipped "]. to Long (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtest Suite [" failures "]. to Long (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtest Suite [" errors "]. to Long () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ ĠTotal Results ( file Results Ġ?: Ġempty List ()) ĊĠĠĠ Ġ} ĊĊĠ Ġprivate Ġinterface ĠResults Ġ{ ĊĠĠĠ Ġval Ġtests : ĠLong ĊĠĠĠ Ġval Ġskipped : ĠLong ĊĠĠĠ Ġval Ġfailures : ĠLong ĊĠĠĠ Ġval Ġerrors : ĠLong ĊĊĠĠĠ Ġval Ġpassed : ĠLong ĊĠĠĠĠĠ Ġget () Ġ= Ġtests Ġ- Ġskipped Ġ- Ġfailures Ġ- Ġerrors ĊĠ Ġ} ĊĊĠ Ġprivate Ġdata Ġclass ĠFile Results ( ĊĠĠĠ Ġoverride Ġval Ġtests : ĠLong , ĊĠĠĠ Ġoverride Ġval Ġskipped : ĠLong , ĊĠĠĠ Ġoverride Ġval Ġfailures : ĠLong , ĊĠĠĠ Ġoverride Ġval Ġerrors : ĠLong ĊĠ Ġ) Ġ: ĠResults ĊĊĠ Ġprivate Ġclass ĠTotal Results ( val Ġfiles : ĠList < File Results >) Ġ: ĠResults Ġ{ ĊĠĠĠ Ġoverride Ġval Ġtests : ĠLong Ġby Ġsum Of Ġ{ Ġtests Ġ} ĊĠĠĠ Ġoverride Ġval Ġskipped : ĠLong Ġby Ġsum Of Ġ{ Ġskipped Ġ} ĊĠĠĠ Ġoverride Ġval Ġfailures : ĠLong Ġby Ġsum Of Ġ{ Ġfailures Ġ} ĊĠĠĠ Ġoverride Ġval Ġerrors : ĠLong Ġby Ġsum Of Ġ{ Ġerrors Ġ} ĊĊĠĠĠ Ġprivate Ġinline Ġfun Ġsum Of ( cross inline Ġgetter : ĠFile Results . () Ġ-> ĠLong ) Ġ= Ġlazy Ġ{ ĊĠĠĠĠĠ Ġfiles . fold ( 0 L ) Ġ{ Ġacc , Ġfile Ġ-> Ġacc Ġ+ Ġfile . getter () Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġfun Ġstate Provider (): ĠProvider < Status . State > Ġ{ ĊĠĠĠ Ġreturn Ġresults . map Ġ{ ĊĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠ Ġit . failures Ġ> Ġ 0 Ġ-> ĠStatus . State . FAILURE ĊĠĠĠĠĠĠĠ Ġit . errors Ġ> Ġ 0 Ġ-> ĠStatus . State . ERROR ĊĠĠĠĠĠĠĠ Ġelse Ġ-> ĠStatus . State . SUCCESS ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġfun Ġdescription Provider (): ĠProvider < String > Ġ{ ĊĠĠĠ Ġreturn Ġresults . map Ġ{ ĊĠĠĠĠĠ Ġit . run Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( tests ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠ 0 L Ġ-> Ġ" No Ġtest Ġresults Ġfound ." ĊĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ"$ passed /$ tests ĠP assed ." Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( if Ġ( failures Ġ> Ġ 0 ) Ġ" Ġ$ failures ĠFailed ." Ġelse Ġ"") Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( if Ġ( errors Ġ> Ġ 0 ) Ġ" Ġ$ errors ĠEr rored ." Ġelse Ġ"") Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( if Ġ( skipped Ġ> Ġ 0 ) Ġ" Ġ$ skipped ĠSk ipped ." Ġelse Ġ"") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ Ċ private Ġoperator Ġfun ĠG Path Result . get ( property : ĠString ): ĠString Ġ{ ĊĠ Ġthis Ġas ĠNode Child ĊĠ Ġreturn Ġattributes ()[ property ] Ġas ĠString Ċ } Ċ