package Ġcom . simple . gradle . test lab . internal Ċ Ċ import Ġcom . google . api . services . testing . model . Android Instrumentation Test Ċ import Ġcom . google . api . services . testing . model . App Bundle Ċ import Ġcom . google . api . services . testing . model . EnvironmentVariable Ċ import Ġcom . google . api . services . testing . model . Manual Sh arding Ċ import Ġcom . google . api . services . testing . model . Sh arding Option Ċ import Ġcom . google . api . services . testing . model . Test Setup Ċ import Ġcom . google . api . services . testing . model . Test Specification Ċ import Ġcom . google . api . services . testing . model . Test Targets For Shard Ċ import Ġcom . google . api . services . testing . model . Uniform Sh arding Ċ import Ġcom . simple . gradle . test lab . model . FileType Ċ import Ġcom . simple . gradle . test lab . model . Instrumentation Artifacts Handler Ċ import Ġcom . simple . gradle . test lab . model . Instrumentation Test Ċ import Ġcom . simple . gradle . test lab . model . Test Targets Handler Ċ import Ġorg . gradle . api . Action Ċ import Ġorg . gradle . api . model . ObjectFactory Ċ import Ġorg . gradle . api . provider . Provider Factory Ċ import Ġorg . gradle . kotlin . dsl . list Property Ċ import Ġorg . gradle . kotlin . dsl . map Property Ċ import Ġorg . gradle . kotlin . dsl . newInstance Ċ import Ġorg . gradle . kotlin . dsl . property Ċ import Ġjavax . inject . Inject Ċ Ċ @ Suppress (" Over riding Deprecated Member ", Ġ" Un stable Api Usage ") Ċ internal Ġopen Ġclass ĠDefault Instrumentation Test Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġname : ĠString , ĊĠĠĠ Ġobjects : ĠObject Factory , ĊĠĠĠ Ġproviders : ĠProvider Factory Ċ ) Ġ: ĠAbstract Test Config ( Test Type . INSTR UMENT ATION , Ġname , Ġobjects , Ġproviders ), ĊĠĠĠ ĠInstrument ation Test Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġartifacts Handler : ĠDefault Instrumentation Artifacts Handler Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠDefault Instrumentation Artifacts Handler ( artifacts ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġenvironment Variables Ġ= Ġobjects . map Property < String , ĠString >(). empty () ĊĠĠĠ Ġoverride Ġval Ġtest Runner Class Ġ= Ġobjects . property < String >() ĊĠĠĠ Ġoverride Ġval Ġuse Orche strator Ġ= Ġobjects . property < Boolean >() ĊĠĠĠ Ġoverride Ġval Ġtest Targets Ġ= Ġobjects . list Property < String >() ĊĊĠĠĠ Ġoverride Ġval Ġtargets : ĠDefault Test Targets Handler Ġ= Ġobjects . newInstance () ĊĊĠĠĠ Ġoverride Ġval Ġrequires Test A pk : ĠBoolean Ġ= Ġtrue ĊĊĠĠĠ Ġoverride Ġfun Ġartifacts ( configure : ĠAction < in ĠInstrument ation Artifacts Handler >) Ġ{ ĊĠĠĠĠĠĠĠ Ġconfigure . execute ( artifacts Handler ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġtargets ( configure : ĠAction < in ĠTest Targets Handler >) Ġ{ ĊĠĠĠĠĠĠĠ Ġconfigure . execute ( targets ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" De precation ") ĊĠĠĠ Ġoverride Ġfun Ġtarget Package ( packageName : ĠString ) Ġ= Ġtest Targets . add (" package Ġ$ packageName ") ĊĊĠĠĠ Ġ@ Suppress (" De precation ") ĊĠĠĠ Ġoverride Ġfun Ġtarget Class ( className : ĠString ) Ġ= Ġtest Targets . add (" class Ġ$ className ") ĊĊĠĠĠ Ġ@ Suppress (" De precation ") ĊĠĠĠ Ġoverride Ġfun Ġtarget Method ( className : ĠString , ĠmethodName : ĠString ) Ġ= ĊĠĠĠĠĠĠĠ Ġtest Targets . add (" class Ġ$ className #$ methodName ") ĊĊĠĠĠ Ġ@ Suppress (" De precation ") ĊĠĠĠ Ġoverride Ġfun ĠTest Specification . configure ( ĊĠĠĠĠĠĠĠ Ġfiles : ĠList < App File > ĊĠĠĠ Ġ): ĠTest Specification Ġ= Ġapply Ġ{ ĊĠĠĠĠĠĠĠ Ġenvironment Variables . finalize Value () ĊĠĠĠĠĠĠĠ Ġtest Runner Class . finalize Value () ĊĠĠĠĠĠĠĠ Ġuse Orche strator . finalize Value () ĊĠĠĠĠĠĠĠ Ġtest Targets . finalize Value () ĊĊĠĠĠĠĠĠĠ Ġandroid Instrumentation Test Ġ= ĠAndroid Instrumentation Test (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġapp A pk File Ġ= Ġfiles . first OrNull Ġ{ Ġit . type Ġ== ĠFile Type . APP _ AP K Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġapp Bundle File Ġ= Ġfiles . first OrNull Ġ{ Ġit . type Ġ== ĠFile Type . APP _ B UNDLE Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtest A pk File Ġ= Ġfiles . first OrNull Ġ{ Ġit . type Ġ== ĠFile Type . TEST _ AP K Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp A pk File Ġ!= Ġnull Ġ-> Ġapp A pk Ġ= Ġapp A pk File . path ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp Bundle File Ġ!= Ġnull Ġ-> Ġapp Bundle Ġ= ĠApp Bundle (). set Bundle Location ( app Bundle File . path ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalStateException (" The Ġapplication Ġ. apk Ġor Ġ. abb Ġfile Ġis Ġrequired Ġfor Ġtest Ġ'$ name '. ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest A pk Ġ= ĠcheckNotNull ( test A pk File ?. path ) Ġ{ Ġ" The Ġtest Ġ. apk Ġfile Ġis Ġrequired Ġfor Ġtest Ġ'$ name '. " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapp Package Id Ġ= Ġthis @ Default Instrumentation Test . app Package Id . or Null ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Runner Class Ġ= Ġthis @ Default Instrumentation Test . test Runner Class . or Null ĊĠĠĠĠĠĠĠĠĠĠĠ Ġorche strator Option Ġ= Ġwhen Ġ( use Orche strator . or Null ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull Ġ-> Ġ" OR CHE STR ATOR _ OPTION _ UNSPECIFIED " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse Ġ-> Ġ" DO _ NOT _ USE _ OR CHE STR ATOR " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue Ġ-> Ġ" USE _ OR CHE STR ATOR " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Targets Ġ= Ġthis @ Default Instrumentation Test . test Targets . get () Ġ+ Ġtargets . targets . get () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġshard Count Ġ= Ġtargets . shard Count . or Null ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsh ards Ġ= Ġtargets . shards . get (). take Unless Ġ{ Ġit . isEmpty () Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck ( shard Count Ġ== Ġnull Ġ|| Ġsh ards Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Cannot Ġset Ġboth Ġ' shard Count ' Ġand Ġ' shards ' Ġfor Ġtest Ġ'$ name '. " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġsh arding Option Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshard Count Ġ!= Ġnull Ġ-> ĠSh arding Option (). set Uniform Sh arding ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUniform Sh arding (). set Num Shards ( targets . shard Count . get ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsh ards Ġ!= Ġnull Ġ-> ĠSh arding Option (). set Manual Sh arding ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠManual Sh arding (). set Test Targets For Shard ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsh ards . map Ġ{ Ġshard Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTest Targets For Shard (). set Test Targets ( shard . targets . get ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠTest Setup . configure (): ĠTest Setup Ġ= ĊĠĠĠĠĠĠĠ Ġset Environment Variables ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Default Instrumentation Test . environment Variables . get () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġ( key , Ġvalue ) Ġ-> ĠEnvironment Variable (). set Key ( key ). setValue ( value ) Ġ} ĊĠĠĠĠĠĠĠ Ġ) Ċ } Ċ