/* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 ĠGrab tax i ĠHold ings ĠP TE ĠL TE Ġ( GR AB ) Ċ Ġ* Ċ Ġ* Ġ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 . grab . gr azel . migrate Ċ Ċ import Ġcom . google . common . truth . Truth Ċ import Ġcom . grab . gr azel . Gr azel Extension Ċ import Ġcom . grab . gr azel . bazel . star l ark . asString Ċ import Ġcom . grab . gr azel . build Project Ċ import Ġcom . grab . gr azel . di . D agger Gr azel Component Ċ import Ġcom . grab . gr azel . gradle . ANDROID _ LIBRARY _ PLUGIN Ċ import Ġcom . grab . gr azel . gradle . K OT LIN _ ANDROID _ PLUGIN Ċ import Ġcom . grab . gr azel . migrate . internal . Root B azel File Builder Ċ import Ġorg . gradle . api . Project Ċ import Ġorg . gradle . kotlin . dsl . configure Ċ import Ġorg . gradle . kotlin . dsl . dependencies Ċ import Ġorg . gradle . kotlin . dsl . repositories Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ Ċ class ĠKotlin Root B azel Rules Test Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġroot Project : ĠProject ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġsub Project : ĠProject ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġroot B azel File Builder : ĠRoot B azel File Builder ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun Ġsetup () Ġ{ ĊĠĠĠĠĠĠĠ Ġroot Project Ġ= Ġbuild Project (" root ") ĊĠĠĠĠĠĠĠ Ġroot Project . extensions . add ( Gr azel Extension . GR AZ EL _ EXTENSION , ĠGr azel Extension ( root Project )) ĊĠĠĠĠĠĠĠ Ġroot B azel File Builder Ġ= ĠD agger Gr azel Component ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. factory () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. create ( root Project ). root B azel File Builder () ĊĊĠĠĠĠĠĠĠ Ġsub Project Ġ= Ġbuild Project (" sub project ", Ġroot Project ) ĊĠĠĠĠĠĠĠ Ġsub Project . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplugins . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapply ( ANDROID _ LIBRARY _ PLUGIN ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapply ( K OT LIN _ ANDROID _ PLUGIN ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepositories Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmaven Central () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgoogle () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġj center () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdependencies Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd (" implementation ", Ġ" com . google . d agger : d agger : 2 . 3 3 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` assert Ġby Ġdefault Ġcustom Ġtoolchain Ġis Ġnot Ġregistered Ġin Ġroot ĠBUILD `() Ġ{ ĊĠĠĠĠĠĠĠ Ġroot Project . configure < Gr azel Extension > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠDefault Ġsetup ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġroot B azel File Contents Ġ= Ġroot B azel File Builder . build (). asString () ĊĠĠĠĠĠĠĠ ĠTr uth . assertThat ( root B azel File Contents ). isEmpty () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` assert Ġcustom Ġtoolchain Ġparameters Ġare Ġreflected Ġin Ġroot ĠBUILD `() Ġ{ ĊĠĠĠĠĠĠĠ Ġroot Project . configure < Gr azel Extension > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrules Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkotlin Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoolchain Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġenabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġabi J ars Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠapiVersion Ġ= Ġ" 1 . 3 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlanguage Version Ġ= Ġ" 1 . 3 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġj vm Target Ġ= Ġ" 1 . 6 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmultip lex Workers Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreport Unused Deps Ġ= Ġ" warn " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstrict Kotlin Deps Ġ= Ġ" warn " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġroot B azel File Contents Ġ= Ġroot B azel File Builder . build (). asString () ĊĠĠĠĠĠĠĠ ĠTr uth . assertThat ( root B azel File Contents ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠKotlin Ġcompiler Ġoptions ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontains ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" kt _ kotlin c _ options ( ĊĠ Ġname Ġ= Ġ" kt _ kotlin c _ options ", ĊĠ Ġx _ use _ ir Ġ= ĠFalse Ċ ) """ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠJava Ġcompiler Ġoptions ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontains ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" kt _ kotlin c _ options ( ĊĠ Ġname Ġ= Ġ" kt _ kotlin c _ options ", ĊĠ Ġx _ use _ ir Ġ= ĠFalse Ċ ) """ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTool chain Ġparameters ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontains ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" define _ kt _ toolchain ( ĊĠ Ġname Ġ= Ġ" kotlin _ toolchain ", ĊĠ Ġapi _ version Ġ= Ġ" 1 . 3 ", ĊĠ Ġexperimental _ use _ abi _ j ars Ġ= ĠTrue , ĊĠ Ġexperimental _ multip lex _ workers Ġ= ĠTrue , ĊĠ Ġjav ac _ options Ġ= Ġ"// : kt _ javac _ options ", ĊĠ Ġj vm _ target Ġ= Ġ" 1 . 6 ", ĊĠ Ġkotlin c _ options Ġ= Ġ"// : kt _ kotlin c _ options ", ĊĠ Ġlanguage _ version Ġ= Ġ" 1 . 3 ", ĊĠ Ġexperimental _ report _ unused _ deps Ġ= Ġ" warn ", ĊĠ Ġexperimental _ strict _ kotlin _ deps Ġ= Ġ" warn " Ċ ) """ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }