/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 7 ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* Ġ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 . android . build . gradle . integration . native build Ċ Ċ import Ġcom . android . build . gradle . integration . common . fixture . Gradle Test Project Ċ import Ġcom . android . build . gradle . integration . common . fixture . Gradle Test Project . Companion . DEFAULT _ N DK _ SIDE _ BY _ SIDE _ VERSION Ċ import Ġcom . android . build . gradle . integration . common . fixture . app . HelloWorld J ni App Ċ import Ġcom . android . build . gradle . integration . common . fixture . app . Multi Module Test Project Ċ import Ġcom . android . build . gradle . integration . common . fixture . app . Simple Native Lib Ċ import Ġcom . android . build . gradle . integration . common . fixture . model . cart esian Of Ċ import Ġcom . android . build . gradle . integration . common . truth . Truth Helper . assertThat Ċ import Ġcom . android . build . gradle . internal . cxx . configure . DEFAULT _ CMAKE _ SDK _ DOWNLOAD _ VERSION Ċ import Ġcom . android . build . gradle . internal . cxx . configure . DEFAULT _ CMAKE _ VERSION Ċ import Ġcom . android . build . gradle . internal . cxx . configure . OFF _ STAGE _ CMAKE _ VERSION Ċ import Ġcom . android . build . gradle . options . Boolean Option Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Rule Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ import Ġorg . junit . runners . Parameterized Ċ Ċ /** Ċ Ġ* ĠC make Ġtest Ġwith Ġmultiple Ġmodules . Ċ Ġ*/ Ċ @ RunWith ( Parameterized :: class ) Ċ class ĠC make Multi Module Test ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġcmake Version In Dsl : ĠString , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġhas Fold able Variants : ĠBoolean Ċ ) Ġ{ ĊĊĠĠĠ Ġ@ get : Rule ĊĠĠĠ Ġval Ġproject Ġ= ĊĠĠĠĠĠ ĠGradle Test Project . builder () ĊĠĠĠĠĠĠĠ Ġ. from Test App ( ĊĠĠĠĠĠĠĠĠĠ ĠMulti Module Test Project ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" app " Ġto ĠHello World J ni App . builder (). with C make (). build (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" lib " Ġto ĠSimple Native Lib () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ. set C make Version ( DEFAULT _ CMAKE _ SDK _ DOWNLOAD _ VERSION ) ĊĠĠĠĠĠĠĠ Ġ. set Side By Side N dk Version ( DEFAULT _ N DK _ SIDE _ BY _ SIDE _ VERSION ) ĊĠĠĠĠĠĠĠ Ġ. set With C make Dir In Local Prop ( true ) ĊĠĠĠĠĠĠĠ Ġ. create () ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Parameterized . Parameters ( name Ġ= Ġ" version ={ 0 } Ġhas Fold able Variants ={ 1 } Ġenable Configuration Fold ing ={ 2 }") ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġdata () Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcart esian Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf (" 3 . 6 . 0 ", ĠOFF _ STAGE _ CMAKE _ VERSION , ĠDEFAULT _ CMAKE _ VERSION ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( true , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ Ġproject . getSub project (": app "). build File . append Text ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" Ċ apply Ġplugin : Ġ' com . android . application ' Ċ Ċ android Ġ{ ĊĠĠĠ Ġcompile Sdk Version Ġ${ Gradle Test Project . DEFAULT _ COMPILE _ SDK _ VERSION } ĊĠĠĠ Ġn dk Path Ġ"${ project . nd k Path }" ĊĠĠĠ Ġdefault Config Ġ{ ĊĠĠĠĠĠĠĠ Ġn dk Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġabi Filters Ġ" x 8 6 " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġexternal Native Build Ġ{ ĊĠĠĠĠĠĠĠ Ġcmake Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpath Ġ" CMake Lists . txt " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġversion Ġ"$ cmake Version In Dsl " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } ĊĊ Ċ dependencies Ġ{ ĊĠĠĠ Ġimplementation Ġproject (": lib ") Ċ } Ċ Ċ // ĠThis Ġmake Ġthe Ġbuild Ġtask Ġin Ġlib Ġrun Ġafter Ġthe Ġtask Ġin Ġapp Ġif Ġthe Ġtask Ġdependency Ġis Ġnot Ġset Ġup Ċ // Ġproperly . Ċ after Evaluate Ġ{ ĊĠĠĠ Ġtasks . getBy Path (": lib : external Native Build Debug ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. should Run After ( tasks . getBy Path (": app : external Native Build Debug ")) Ċ } Ċ Ċ """) ĊĊĠĠĠĠĠĠĠ Ġ// ĠLimit ĠABI Ġto Ġimprove Ġrunning Ġtime . ĊĠĠĠĠĠĠĠ Ġproject . getSub project (": lib "). build File . append Text ( Ċ """ Ċ android Ġ{ ĊĠĠĠ Ġdefault Config Ġ{ ĊĠĠĠĠĠĠĠ Ġn dk Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġabi Filters Ġ" x 8 6 " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ """) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( has Fold able Variants ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproject . getSub project (": app "). build File . append Text (""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġandroid Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuild Types Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsecond Debug Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproject . getSub project (": lib "). build File . append Text (""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġandroid Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuild Types Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsecond Debug Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġcheck Task Execution Order () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġproject . executor (). run (" clean ", Ġ": app : assemble Debug ") ĊĠĠĠĠĠĠĠ ĠassertThat ( result . get Task (": lib : external Native Build Debug ")). did Work () ĊĠĠĠĠĠĠĠ ĠassertThat ( result . get Task (": app : external Native Build Debug ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. ran After (": lib : external Native Build Debug ") ĊĠĠĠ Ġ} Ċ } Ċ