/* Ċ Ġ* ĠCopyright Ġ 2 0 1 6 Ġthe Ġoriginal Ġauthor Ġor Ġauthors . Ċ Ġ* Ċ Ġ* Ġ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 . Ċ Ġ*/ Ċ Ċ import Ġorg . gradle . cleanup . Clean Up Caches Ċ import Ġorg . gradle . cleanup . Clean Up Da em ons Ċ import Ġorg . gradle . process . Kill Le aking Java Processes Ċ import Ġorg . gradle . testing . Distribution Test Ċ Ċ tasks . with Type < Distribution Test > Ġ{ ĊĊĠĠĠ Ġval Ġdistribution Test Ġ= Ġthis ĊĊĠĠĠ Ġdepends On (": tool ing Api : tool ing Api Sh aded Jar ") ĊĠĠĠ Ġdepends On (": clean Up Caches ") ĊĠĠĠ Ġfinal ized By (": clean Up Da em ons ") ĊĠĠĠ Ġshould Run After (" test ") ĊĊĠĠĠ Ġj vm Args ("- X mx 5 1 2 m ", Ġ"- XX :+ Heap Dump On OutOf Memory Error ") ĊĠĠĠ Ġif Ġ(! java Version . is Java 8 Compatible ) Ġ{ ĊĠĠĠĠĠĠĠ Ġj vm Args ("- XX : Max Perm Size = 7 6 8 m ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreports . junit Xml . destination Ġ= ĠFile ( the < Java Plugin Convention >(). test Results Dir , Ġname ) ĊĊĠĠĠ Ġ// Ġuse Ġ- P test Versions = all Ġor Ġ- P test Versions = 1 . 2 , 1 . 3 âĢ¦ ĊĠĠĠ Ġval Ġinte g Test Versions Sys Prop Ġ= Ġ" org . gradle . inte gtest . versions " ĊĠĠĠ Ġif Ġ( project . has Property (" test Versions ")) Ġ{ ĊĠĠĠĠĠĠĠ Ġsystem Properties [ inte g Test Versions Sys Prop ] Ġ= Ġproject . property (" test Versions ") ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( inte g Test Versions Sys Prop Ġ! in Ġsystem Properties ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsystem Properties [ inte g Test Versions Sys Prop ] Ġ= Ġ" latest " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠProject . if Property ( name : ĠString , Ġthen : ĠString ): ĠString ? Ġ= ĊĠĠĠĠĠĠĠ Ġthen . take If Ġ{ Ġfind Property ( name ) Ġ== Ġtrue Ġ} ĊĊĠĠĠ Ġsystem Properties [" org . gradle . inte gtest . native . tool Ch ains "] Ġ= ĊĠĠĠĠĠĠĠ Ġif Property (" test All Platforms ", Ġ" all ") Ġ?: Ġ" default " ĊĊĠĠĠ Ġsystem Properties [" org . gradle . inte gtest . mult iv ersion "] Ġ= ĊĠĠĠĠĠĠĠ Ġif Property (" test All Versions ", Ġ" all ") Ġ?: Ġ" default " ĊĊĠĠĠ Ġval Ġmirror Urls Ġ= Ġcollect Mirror Urls () ĊĠĠĠ Ġval Ġmir rors Ġ= ĠlistOf (" mav encent ral ", Ġ" j center ", Ġ" light b end maven ", Ġ" lig th b end ivy ", Ġ" google ") ĊĠĠĠ Ġmir rors . forEach Ġ{ Ġmirror Ġ-> ĊĠĠĠĠĠĠĠ Ġsystem Properties [" org . gradle . inte gtest . mir rors .$ mirror "] Ġ= Ġmirror Urls [ mirror ] Ġ?: Ġ"" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdepends On ( ĊĠĠĠĠĠĠĠ Ġtask (" configure ${ distribution Test . name . capitalize () }") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdo Last Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdistribution Test . apply Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreports . html . destination Ġ= Ġfile ("${ the < Reporting Extension >(). base Dir }/ $ name ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġint Test Image : ĠSync Ġby Ġtasks ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgradle Home Dir Ġ= Ġint Test Image . destination Dir ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgradle User Home Dir Ġ= Ġroot Project . file (" int Test Home Dir ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtool ing Api Sh aded Jar : ĠZip Ġby Ġroot Project . project (": tool ing Api "). tasks ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtool ing Api Sh aded Jar Dir Ġ= Ġtool ing Api Sh aded Jar . destination Dir ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( requires Lib s Repo ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlibs Repo Ġ= Ġroot Project . file (" build / repo ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( requires D ists ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdist s Dir Ġ= Ġroot Project . the < Base Plugin Convention >(). dists Dir ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsystem Properties [" inte g Test . dist Zip Version "] Ġ= Ġversion ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( requires Bin Zip ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbin Zip : ĠZip Ġby Ġproject (": distributions "). tasks ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . bin Zip Ġ= Ġbin Zip . archive Path ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdaemon Registry Ġ= Ġfile ("${ root Project . build Dir }/ daemon ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠ Ġlateinit Ġvar Ġdaemon Listener : ĠAny ĊĊĠĠĠ Ġdo First Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġclean Up Da em ons : ĠClean Up Da em ons Ġby Ġroot Project . tasks ĊĠĠĠĠĠĠĠ Ġdaemon Listener Ġ= Ġclean Up Da em ons . new Daemon Listener () ĊĠĠĠĠĠĠĠ Ġgradle . addListener ( daemon Listener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdo Last Ġ{ ĊĠĠĠĠĠĠĠ Ġgradle . remove Listener ( daemon Listener ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ project (": ") Ġ{ ĊĊĠĠĠ Ġif Ġ( tasks . find ByName (" clean Up Caches ") Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn @ project ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtasks Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ" clean Up Caches "( Clean Up Caches :: class ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdepends On (": create Build Receipt ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" clean Up Da em ons "( Clean Up Da em ons :: class ) ĊĊĠĠĠĠĠĠĠ Ġval Ġkill Existing Processes Started By Gradle Ġby Ġcreating ( Kill Le aking Java Processes :: class ) ĊĊĠĠĠĠĠĠĠ Ġval Ġis Ci Server : ĠBoolean Ġby Ġroot Project . extra ĊĠĠĠĠĠĠĠ Ġif Ġ( is Ci Server ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" clean " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdepends On ( kill Existing Processes Started By Gradle ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsub projects Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtasks . all Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmust Run After ( kill Existing Processes Started By Gradle ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġcollect Mirror Urls (): ĠMap < String , ĠString > Ġ= ĊĠĠĠ Ġ// Ġexpected Ġenv Ġvar Ġformat : Ġrepo 1 _ id : repo 1 _ url , repo 2 _ id : repo 2 _ url ,... ĊĠĠĠ ĠSystem . getenv (" REPO _ MIR ROR _ URL S ") ?. split (',') ?. associate Ġ{ Ġname To Url Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ( name , Ġurl ) Ġ= Ġname To Url . split (' :', Ġlimit Ġ= Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġto Ġurl ĊĠĠĠĠĠĠĠ Ġ} Ġ?: Ġempty Map () Ċ