package Ġcom . mal in sk iy . mar athon . gradle . extensions Ċ Ċ import Ġcom . android . build . gradle . api . A pk Variant Output Ċ import Ġcom . android . build . gradle . api . Library Variant Ċ import Ġcom . android . build . gradle . api . Library Variant Output Ċ import Ġcom . android . build . gradle . api . Test Variant Ċ import Ġcom . android . build . gradle . tasks . Package Android Artifact Ċ import Ġorg . apache . tools . ant . task defs . Zip Ċ import Ġorg . gradle . api . Gradle Exception Ċ import Ġjava . io . File Ċ Ċ fun ĠTest Variant . extract Test Application () Ġ= Ġexecute Gradle Compat ( ĊĠĠĠ Ġexec Ġ= Ġ{ ĊĠĠĠĠĠĠĠ Ġextract Test Application 3 _ 6 _ plus ( this ) ĊĠĠĠ Ġ}, ĊĠĠĠ Ġfallback s Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġextract Test Application 3 _ 3 _ to _ 3 _ 5 ( this ) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġextract Test Application Before 3 _ 3 ( this ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) Ċ ) Ċ Ċ fun Ġextract Test Application 3 _ 6 _ plus ( variant : ĠTest Variant ): ĠFile Ġ{ ĊĠĠĠ Ġval Ġoutput Ġ= Ġvariant . outputs . first () ĊĊĠĠĠ Ġreturn ĠFile ( ĊĠĠĠĠĠĠĠ Ġwhen Ġ( output ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠA pk Variant Output Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpackage Task Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvariant . package Application Provider . or Null Ġ?: Ġthrow ĠIllegalArgumentException (" Can 't Ġfind Ġpackage Ġapplication Ġprovider ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFile ( package Task . output Directory . as File . get (), Ġoutput . output FileName ). path ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠLibrary Variant Output Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoutput . outputFile . path ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠRuntimeException (" Can 't Ġfind Ġinstrument ation A pk ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) Ċ } Ċ Ċ private Ġfun Ġextract Test Application Before 3 _ 3 ( variant : ĠTest Variant ): ĠFile Ġ{ ĊĠĠĠ Ġval Ġoutput Ġ= Ġvariant . outputs . first () ĊĊĠĠĠ Ġreturn ĠFile ( ĊĠĠĠĠĠĠĠ Ġwhen Ġ( output ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠA pk Variant Output Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvariant . package Application Provider ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFile ( variant . package Application . output Directory . as File . get (), Ġoutput . output FileName ). path ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠLibrary Variant Output Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoutput . outputFile . path ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠRuntimeException (" Can 't Ġfind Ġinstrument ation A pk ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) Ċ } Ċ Ċ private Ġfun Ġextract Test Application 3 _ 3 _ to _ 3 _ 5 ( output : ĠTest Variant ): ĠFile Ġ{ ĊĠĠĠ Ġval Ġtest Package Android Artifact Ġ= Ġwhen Ġ( output ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠTest Variant Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoutput . package Application Provider ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġis ĠLibrary Variant Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoutput . package Library Provider ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠRuntimeException (" Can 't Ġfind Ġtest Ġapplication Ġprovider . ĠOutput Ġis Ġ${ output . java Class . canonical Name }") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}. get () ĊĊĊĠĠĠ Ġreturn Ġwhen Ġ( test Package Android Artifact ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠPackage Android Artifact Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( test Package Android Artifact . variant Outputs . get (). size Ġ== Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFile ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtest Package Android Artifact . output Directory . as File . get (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtest Package Android Artifact . variant Outputs . get (). first (). output FileName . get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġis ĠZip Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Package Android Artifact . dest File ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠGradle Exception (" Unknown Ġartifact Ġpackage Ġtype ") ĊĠĠĠ Ġ} Ċ } Ċ