/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 3 Ġ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 . internal . dsl Ċ Ċ import Ġcom . android . build . api . dsl . Device Ċ import Ġcom . android . build . api . dsl . Device Group Ċ import Ġcom . android . build . gradle . internal . services . Dsl Services Ċ import Ġcom . android . builder . model . Test Options . Execution Ċ import Ġcom . android . utils . Help ful Enum Converter Ċ import Ġcom . google . common . base . Preconditions Ċ import Ġcom . google . common . base . Verify Ċ import Ġgro ovy . lang . Closure Ċ import Ġorg . gradle . api . Action Ċ import Ġorg . gradle . api . Ext ensible Pol ymorphic Domain Object Container Ċ import Ġorg . gradle . api . Named Domain Object Container Ċ import Ġorg . gradle . api . tasks . testing . Test Ċ import Ġorg . gradle . util . Configure Util Ċ import Ġjavax . inject . Inject Ċ Ċ open Ġclass ĠTest Options Ġ@ Inject Ġconstructor ( dsl Services : ĠD sl Services ) Ġ: ĊĠĠĠ Ġcom . android . build . api . dsl . Test Options Ġ{ ĊĠĠĠ Ġprivate Ġval Ġexecution Converter Ġ= ĠHelp ful Enum Converter < Execution >( Execution :: class . java ) ĊĊĠĠĠ Ġprivate Ġvar Ġ_ execution Ġ= ĠExecution . HOST ĊĊĠĠĠ Ġoverride Ġval Ġunit Tests : ĠUnit Test Options Ġ= ĊĠĠĠĠĠĠĠ Ġd sl Services . newInstance ( UnitTest Options :: class . java , Ġd sl Services ) ĊĊĠĠĠ Ġoverride Ġvar Ġresults Dir : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġoverride Ġvar Ġreport Dir : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġoverride Ġvar Ġanimations Disabled : ĠBoolean Ġ= Ġfalse ĊĊĠĠĠ Ġoverride Ġvar Ġdevices : ĠExt ensible Pol ymorphic Domain Object Container < Device > Ġ= ĊĠĠĠĠĠĠĠ Ġd sl Services . pol ymorphic Domain Object Container ( Device :: class . java ) ĊĊĠĠĠ Ġoverride Ġval Ġdevice Groups : ĠNamed Domain Object Container < Device Group > Ġ= ĊĠĠĠĠĠĠĠ Ġd sl Services . domain Object Container ( Device Group :: class . java , ĠDevice Group Factory ( dsl Services )) ĊĊĠĠĠ Ġoverride Ġvar Ġexecution : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠVerify . verify NotNull ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexecution Converter . reverse (). convert (_ execution ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" No Ġstring Ġrepresentation Ġfor Ġenum ." ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Suppress (" NULL ABILITY _ MIS MATCH _ BASE D _ ON _ JAVA _ AN NOT ATIONS ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ execution Ġ= ĠPreconditions . checkNotNull ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexecution Converter . convert ( value ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" The Ġvalue Ġof Ġ` execution ` Ġcannot Ġbe Ġnull ." ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) !! ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġemulator Snapshots : Ġcom . android . build . api . dsl . Em ulator Snapshots Ġ= ĊĠĠĠĠĠĠĠ Ġd sl Services . newInstance ( Em ulator Snapshots :: class . java , Ġd sl Services ) ĊĊĠĠĠ Ġ@ Deprecated (" Rename d Ġto Ġemulator Snapshots ", Ġreplace With Ġ= ĠReplace With (" emulator Snapshots ")) ĊĠĠĠ Ġoverride Ġval Ġfailure Retention : Ġcom . android . build . api . dsl . Failure Retention ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġemulator Snapshots Ġas Ġcom . android . build . api . dsl . Failure Retention ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġdevices . register Binding ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcom . android . build . api . dsl . Managed Virtual Device :: class . java , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠManaged Virtual Device :: class . java ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġdevices . configure Each Ġ{ Ġdevice Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdevice Groups . register ( device . name ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . target Devices . add ( device ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġunit Tests ( action : Ġcom . android . build . api . dsl . UnitTest Options . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġaction . invoke ( unit Tests ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConfig ures Ġunit Ġtest Ġoptions . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ since Ġ 1 . 2 . 0 ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġunit Tests ( closure : ĠClosure <* >) Ġ{ ĊĠĠĠĠĠĠĠ ĠConfigure Util . configure ( closure , Ġunit Tests ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġunit Tests ( action : ĠAction < UnitTest Options >) Ġ{ ĊĠĠĠĠĠĠĠ Ġaction . execute ( unit Tests ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Execution Enum (): ĠExecution Ġ= Ġ_ execution ĊĊĠĠĠ Ġopen Ġclass ĠUnit Test Options Ġ@ Inject Ġconstructor ( dsl Services : ĠD sl Services ) Ġ: ĊĠĠĠĠĠĠĠ Ġcom . android . build . api . dsl . UnitTest Options Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠUsed Ġby Ġtest Tasks . all Ġbelow , ĠDSL Ġdocs Ġgenerator Ġcan 't Ġhandle Ġdi amond Ġoperator . ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġtest Tasks Ġ= Ġd sl Services . domain Object Set ( Test :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġoverride Ġvar Ġis Return Default Values : ĠBoolean Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġoverride Ġvar Ġis Include Android Resources : ĠBoolean Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġfun Ġall ( config Closure : ĠClosure < Test >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Tasks . all Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfigure Util . configure ( config Closure , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġall ( config Action : Ġ( Test ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Tasks . all ( config Action ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠConfig ures Ġa Ġgiven Ġtest Ġtask . ĠThe Ġconfiguration Ġclo s ures Ġthat Ġwere Ġpassed Ġto Ġ{@ link ĊĠĠĠĠĠĠĠĠ Ġ* Ġ# all ( Closure )} Ġwill Ġbe Ġapplied Ġto Ġit . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ< p > Not Ġmeant Ġto Ġbe Ġcalled Ġfrom Ġbuild Ġscripts . ĠThe Ġreason Ġit Ġexists Ġis Ġthat Ġtasks Ġare ĊĠĠĠĠĠĠĠĠ Ġ* Ġcreated Ġafter Ġthe Ġbuild Ġscripts Ġare Ġevaluated , Ġso Ġusers Ġhave Ġto Ġ" register " Ġtheir ĊĠĠĠĠĠĠĠĠ Ġ* Ġconfiguration Ġclo s ures Ġfirst Ġand Ġwe Ġcan Ġonly Ġapply Ġthem Ġlater . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ since Ġ 1 . 2 . 0 ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġapply Configuration ( task : ĠTest ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Tasks . add ( task ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ( Implement ing Ġinterface Ġfor Ġkotlin ) ĊĠĠĠ Ġoverride Ġfun Ġemulator Snapshots ( action : Ġcom . android . build . api . dsl . Em ulator Snapshots . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġaction . invoke ( emulator Snapshots ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠRuntime Ġonly Ġfor Ġgro ovy Ġdecorator Ġto Ġgenerate Ġthe Ġclosure Ġbased Ġblock ĊĠĠĠ Ġfun Ġemulator Snapshots ( action : ĠAction < com . android . build . api . dsl . Em ulator Snapshots >) Ġ{ ĊĠĠĠĠĠĠĠ Ġaction . execute ( emulator Snapshots ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Deprecated (" Rename d Ġto Ġemulator Snapshots ", Ġreplace With Ġ= ĠReplace With (" emulator Snapshots ")) ĊĠĠĠ Ġoverride Ġfun Ġfailure Retention ( action : Ġcom . android . build . api . dsl . Failure Retention . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġaction . invoke ( failure Retention ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠRuntime Ġonly Ġfor Ġgro ovy Ġdecorator Ġto Ġgenerate Ġthe Ġclosure Ġbased Ġblock ĊĠĠĠ Ġ@ Deprecated (" Rename d Ġto Ġemulator Snapshots ", Ġreplace With Ġ= ĠReplace With (" emulator Snapshots ")) ĊĠĠĠ Ġfun Ġfailure Retention ( action : ĠAction < com . android . build . api . dsl . Failure Retention >) Ġ{ ĊĠĠĠĠĠĠĠ Ġaction . execute ( failure Retention ) ĊĠĠĠ Ġ} Ċ } Ċ