package Ġorg . gradle . kotlin . dsl . samples Ċ Ċ import Ġorg . gradle . kotlin . dsl . embedded Kotlin Version Ċ import Ġorg . gradle . kotlin . dsl . fixtures . Abstract IntegrationTest Ċ Ċ import Ġorg . hamcrest . Core Matchers . contains String Ċ Ċ import Ġorg . junit . Assert . assertThat Ċ import Ġorg . junit . Ass ume . assume True Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ import Ġorg . junit . runners . Parameterized Ċ Ċ import Ġjava . io . File ĊĊ Ċ @ RunWith ( Parameterized :: class ) Ċ class ĠSamples S moke Test ( ĊĠĠĠ Ġprivate Ġval Ġsample Name : ĠString , ĊĠĠĠ Ġprivate Ġval Ġsample Dir : ĠFile Ċ ) Ġ: ĠAbstract IntegrationTest () Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Parameterized . Parameters ( name Ġ= Ġ"{ 0 }") ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġtest Cases (): ĠIterable < Array < Any >> Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsamples Root Dir . list Files (). filter Ġ{ Ġit . isDirectory Ġ}. map Ġ{ ĠarrayOf ( it . name , Ġit ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun Ġpopulate Project Root With Sample () Ġ{ ĊĠĠĠĠĠĠĠ Ġignore Android Sample Unless Android Home IsSet () ĊĠĠĠĠĠĠĠ Ġcopy Sample Project ( from Ġ= Ġsample Dir , Ġto Ġ= Ġproject Root ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` tasks Ġtask Ġsucceeds Ġon Ġ` () Ġ{ ĊĠĠĠĠĠĠĠ Ġbuild (" tasks ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` uses Ġthe Ġright ĠKotlin ĠGradle ĠPlugin Ġversion Ġon Ġ` () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġproject Paths Ġ= ĠlistOf (": ") Ġ+ Ġlist Sub Project Paths (). map Ġ{ Ġ"$ it :" Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġproject Build s Ġ= Ġproject Paths . map Ġ{ Ġbuild Spec ("${ it } build Environment ") Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġbuilds ToCheck Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( File ( sample Dir , Ġ" build Src "). isDirectory ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproject Build s Ġ+ ĠlistOf ( build Spec ("- p ", Ġ" build Src ", Ġ" build Environment ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproject Build s ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġfound Kotlin Gradle Plugin Ġ= Ġbuilds ToCheck . map (:: assert Kotlin Gradle Plugin Version ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠMark Ġthat Ġtest Ġas Ġignored Ġif Ġnot Ġusing Ġthe Ġkotlin - gradle - plugin ĊĠĠĠĠĠĠĠ Ġassume True ( found Kotlin Gradle Plugin . any Ġ{ Ġit Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate ĊĠĠĠ Ġfun Ġignore Android Sample Unless Android Home IsSet () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( sample Name . contains (" android ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassume Android Home IsSet () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate ĊĠĠĠ Ġfun Ġbuild Spec ( var arg Ġarguments : ĠString ) Ġ= Ġarguments ĊĊĠĠĠ Ġprivate ĊĠĠĠ Ġfun Ġassert Kotlin Gradle Plugin Version ( build Spec : ĠArray < out ĠString >): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠ Ġbuild ("- q ", Ġ* build Spec ). run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( output . contains (": kotlin - gradle - plugin :" )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( output , Ġcontains String (": kotlin - gradle - plugin :$ embedded Kotlin Version ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate ĊĠĠĠ Ġval Ġextract Sub Project Paths Ġ= ĠRegex (""" Project Ġ' (: .* )' """) ĊĊĠĠĠ Ġprivate ĊĠĠĠ Ġfun Ġlist Sub Project Paths () Ġ= ĊĠĠĠĠĠĠĠ Ġbuild (" projects ", Ġ"- q "). output . lines () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map NotNull Ġ{ Ġextract Sub Project Paths . find ( it )?. run Ġ{ Ġgroup Values [ 1 ] Ġ} Ġ} Ċ } Ċ