package Ġcom . github . trip let . gradle . play . tasks . shared Ċ Ċ import Ġcom . github . trip let . gradle . common . utils . safe Create New File Ċ import Ġcom . github . trip let . gradle . play . helpers . Shared IntegrationTest Ċ import Ġcom . github . trip let . gradle . play . helpers . Shared IntegrationTest . Companion . DEFAULT _ TASK _ VARIANT Ċ import Ġcom . google . common . truth . Truth . assertThat Ċ import Ġorg . gradle . test kit . runner . Build Result Ċ import Ġorg . gradle . test kit . runner . Task Outcome . NO _ SOURCE Ċ import Ġorg . gradle . test kit . runner . Task Outcome . SUCCESS Ċ import Ġorg . gradle . test kit . runner . Task Outcome . UP _ TO _ DATE Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . junit . jupiter . params . Parameterized Test Ċ import Ġorg . junit . jupiter . params . provider . Csv Source Ċ import Ġorg . junit . jupiter . params . provider . Value Source Ċ import Ġjava . io . File Ċ Ċ interface ĠArtifact Integration Tests Ġ: ĠShared IntegrationTest Ġ{ ĊĠĠĠ Ġfun Ġcustom Artifact Name ( name : ĠString Ġ= Ġ" foo "): ĠString ĊĊĠĠĠ Ġfun Ġassert Custom Artifact Results ( result : ĠBuild Result , Ġexecuted : ĠBoolean Ġ= Ġtrue ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Re building Ġartifact Ġon - the - fly Ġuses Ġcached Ġbuild `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult 1 Ġ= Ġexecute ("", Ġtask Name ()) ĊĠĠĠĠĠĠĠ Ġval Ġresult 2 Ġ= Ġexecute ("", Ġtask Name ()) ĊĊĠĠĠĠĠĠĠ Ġresult 1 . require Task ( outcome Ġ= ĠSUCCESS ) ĊĠĠĠĠĠĠĠ Ġresult 2 . require Task ( outcome Ġ= ĠUP _ TO _ DATE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Using Ġnon - existent Ġcustom Ġartifact Ġskip s Ġbuild `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġlanguage = gradle ĊĠĠĠĠĠĠĠ Ġval Ġconfig Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplay Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġartifact Dir Ġ= Ġfile (' ${ playground Dir . escaped ()} ') ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġexecute ( config , Ġtask Name ()) ĊĊĠĠĠĠĠĠĠ Ġassert Custom Artifact Results ( result , Ġexecuted Ġ= Ġfalse ) ĊĠĠĠĠĠĠĠ Ġresult . require Task ( outcome Ġ= ĠNO _ SOURCE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Using Ġcustom Ġartifact Ġskip s Ġon - the - fly Ġbuild `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġlanguage = gradle ĊĠĠĠĠĠĠĠ Ġval Ġconfig Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplay Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġartifact Dir Ġ= Ġfile (' ${ playground Dir . escaped ()} ') ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĊĠĠĠĠĠĠĠ ĠFile ( playground Dir , Ġcustom Artifact Name ()). safe Create New File () ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġexecute ( config , Ġtask Name ()) ĊĊĠĠĠĠĠĠĠ Ġresult . require Task ( outcome Ġ= ĠSUCCESS ) ĊĠĠĠĠĠĠĠ ĠassertThat ( result . output ). contains ( playground Dir . name ) ĊĠĠĠĠĠĠĠ ĠassertThat ( result . output ). contains ( custom Artifact Name ()) ĊĠĠĠĠĠĠĠ Ġassert Custom Artifact Results ( result ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Using Ġcustom Ġartifact Ġfile Ġskip s Ġon - the - fly Ġbuild `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġapp Ġ= ĠFile ( playground Dir , Ġcustom Artifact Name ()). safe Create New File () ĊĠĠĠĠĠĠĠ Ġ// Ġlanguage = gradle ĊĠĠĠĠĠĠĠ Ġval Ġconfig Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplay Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġartifact Dir Ġ= Ġfile (' ${ app . escaped ()} ') ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġexecute ( config , Ġtask Name ()) ĊĊĠĠĠĠĠĠĠ Ġresult . require Task ( outcome Ġ= ĠSUCCESS ) ĊĠĠĠĠĠĠĠ ĠassertThat ( result . output ). contains ( playground Dir . name ) ĊĠĠĠĠĠĠĠ ĠassertThat ( result . output ). contains ( custom Artifact Name ()) ĊĠĠĠĠĠĠĠ Ġassert Custom Artifact Results ( result ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Parameterized Test ĊĠĠĠ Ġ@ Csv Source ( value Ġ= Ġ[ ĊĠĠĠĠĠĠĠ Ġ" false , false ,", ĊĠĠĠĠĠĠĠ Ġ" false , true ,", ĊĠĠĠĠĠĠĠ Ġ" true , false ,", ĊĠĠĠĠĠĠĠ Ġ" true , true ,", ĊĠĠĠĠĠĠĠ Ġ" false , false ,$ DEFAULT _ TASK _ VARIANT ", ĊĠĠĠĠĠĠĠ Ġ" false , true ,$ DEFAULT _ TASK _ VARIANT ", ĊĠĠĠĠĠĠĠ Ġ" true , false ,$ DEFAULT _ TASK _ VARIANT ", ĊĠĠĠĠĠĠĠ Ġ" true , true ,$ DEFAULT _ TASK _ VARIANT " ĊĠĠĠ Ġ]) ĊĠĠĠ Ġfun Ġ` Using Ġcustom Ġartifact Ġfile Ġwith Ġsupported Ġ 3 P Ġdep Ġskip s Ġon - the - fly Ġbuild `( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġeager : ĠBoolean , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcli Param : ĠBoolean , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtask Variant : ĠString ?, ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġapp Ġ= ĠFile ( playground Dir , Ġcustom Artifact Name ()). safe Create New File () ĊĠĠĠĠĠĠĠ Ġ// Ġlanguage = gradle ĊĠĠĠĠĠĠĠ ĠFile ( app Dir , Ġ" build . gradle "). write Text (""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuild script Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepositories . google () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdependencies . classpath Ġ' com . google . firebase : firebase - crash ly t ics - gradle : 2 . 4 . 1 ' ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġplugins Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ' com . android . application ' ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ' com . github . trip let . play ' ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapply Ġplugin : Ġ' com . google . firebase . crash ly t ics ' ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġandroid Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcompile Sdk Ġ 3 1 ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Config Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapplication Id Ġ" com . super c ile x . test " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmin Sdk Ġ 3 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Sdk Ġ 3 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġversion Code Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġversion Name Ġ" 1 . 0 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuild Types . release Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshrink Resources Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmin ify Enabled Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpro guard Files ( getDefault Pro guard File (" pro guard - android . txt ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġplay Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġservice Account Credentials Ġ= Ġfile (' creds . json ') ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ${ if Ġ( cli Param ) Ġ"" Ġelse Ġ" artifact Dir Ġ= Ġfile (' ${ app . escaped ()} ') "} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ${ if Ġ( e ager ) Ġ" tasks . all Ġ{} " Ġelse Ġ"" } ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ$ factory Installer Statement ĊĠĠĠĠĠĠĠ Ġ"" ") ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġexecute Gradle ( expect Failure Ġ= Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Arguments ( task Name ( task Variant . or Empty ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cli Param ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Arguments ( arguments Ġ+ ĠlistOf ("-- artifact - dir =${ app } ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġresult . require Task ( outcome Ġ= ĠSUCCESS ) ĊĠĠĠĠĠĠĠ ĠassertThat ( result . output ). contains ( playground Dir . name ) ĊĠĠĠĠĠĠĠ ĠassertThat ( result . output ). contains ( custom Artifact Name ()) ĊĠĠĠĠĠĠĠ Ġassert Custom Artifact Results ( result ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Re using Ġcustom Ġartifact Ġuses Ġcached Ġbuild `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġlanguage = gradle ĊĠĠĠĠĠĠĠ Ġval Ġconfig Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplay Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġartifact Dir Ġ= Ġfile (' ${ playground Dir . escaped ()} ') ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĊĠĠĠĠĠĠĠ ĠFile ( playground Dir , Ġcustom Artifact Name ()). safe Create New File () ĊĠĠĠĠĠĠĠ Ġval Ġresult 1 Ġ= Ġexecute ( config , Ġtask Name ()) ĊĠĠĠĠĠĠĠ Ġval Ġresult 2 Ġ= Ġexecute ( config , Ġtask Name ()) ĊĊĠĠĠĠĠĠĠ Ġresult 1 . require Task ( outcome Ġ= ĠSUCCESS ) ĊĠĠĠĠĠĠĠ Ġresult 2 . require Task ( outcome Ġ= ĠUP _ TO _ DATE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Using Ġcustom Ġartifact Ġcorrectly Ġtracks Ġdependencies `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġlanguage = gradle ĊĠĠĠĠĠĠĠ Ġval Ġconfig Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġabstract Ġclass ĠCustom Task Ġextends ĠDefault Task Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Output Directory ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġabstract ĠDirectory Property Ġget App Dir () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Task Action ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvoid Ġdo Stuff () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp Dir . get (). file ("${ custom Artifact Name ()} "). as File . createNew File () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdef Ġc Ġ= Ġtasks . register (" my Custom Task ", ĠCustom Task ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp Dir . set ( layout . project Directory . dir (' ${ playground Dir . escaped ()} ')) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġplay Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġartifact Dir Ġ= Ġc . flatMap Ġ{ Ġit . app Dir Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġexecute ( config , Ġtask Name ()) ĊĊĠĠĠĠĠĠĠ Ġresult . require Task (": my Custom Task ", Ġoutcome Ġ= ĠSUCCESS ) ĊĠĠĠĠĠĠĠ Ġresult . require Task ( outcome Ġ= ĠSUCCESS ) ĊĠĠĠĠĠĠĠ ĠassertThat ( result . output ). contains ( playground Dir . name ) ĊĠĠĠĠĠĠĠ ĠassertThat ( result . output ). contains ( custom Artifact Name ()) ĊĠĠĠĠĠĠĠ Ġassert Custom Artifact Results ( result ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Parameterized Test ĊĠĠĠ Ġ@ Value Source ( strings Ġ= Ġ[" ", ĠDEFAULT _ TASK _ VARIANT ]) ĊĠĠĠ Ġfun Ġ` Using Ġcustom Ġartifact ĠCLI Ġarg Ġskip s Ġon - the - fly Ġbuild `( task Variant : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠFile ( playground Dir , Ġcustom Artifact Name ()). safe Create New File () ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġexecute ("", Ġtask Name ( task Variant ), Ġ"-- artifact - dir =${ playground Dir }") ĊĊĠĠĠĠĠĠĠ Ġresult . require Task ( outcome Ġ= ĠSUCCESS ) ĊĠĠĠĠĠĠĠ ĠassertThat ( result . output ). contains ( playground Dir . name ) ĊĠĠĠĠĠĠĠ ĠassertThat ( result . output ). contains ( custom Artifact Name ()) ĊĠĠĠĠĠĠĠ Ġassert Custom Artifact Results ( result ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` E ager ly Ġevaluated Ġglobal ĠCLI Ġartifact - dir Ġparam Ġskip s Ġon - the - fly Ġbuild `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġlanguage = gradle ĊĠĠĠĠĠĠĠ Ġval Ġconfig Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtasks . all Ġ{} ĊĠĠĠĠĠĠĠ Ġ""" ĊĊĠĠĠĠĠĠĠ ĠFile ( playground Dir , Ġcustom Artifact Name ()). safe Create New File () ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġexecute ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfig , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtask Name (/* ĠNo Ġvariant : Ġ*/ Ġ""), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"-- artifact - dir =$ playground Dir " ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġresult . require Task ( outcome Ġ= ĠSUCCESS ) ĊĠĠĠĠĠĠĠ ĠassertThat ( result . output ). contains ( playground Dir . name ) ĊĠĠĠĠĠĠĠ Ġassert Custom Artifact Results ( result ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Using Ġcustom Ġartifact Ġwith Ġmultiple Ġfiles Ġuploads Ġeach Ġone `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġlanguage = gradle ĊĠĠĠĠĠĠĠ Ġval Ġconfig Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplay Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġartifact Dir Ġ= Ġfile (' ${ playground Dir . escaped ()} ') ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĊĠĠĠĠĠĠĠ ĠFile ( playground Dir , Ġcustom Artifact Name (" 1 ")). safe Create New File () ĊĠĠĠĠĠĠĠ ĠFile ( playground Dir , Ġcustom Artifact Name (" 2 ")). safe Create New File () ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġexecute ( config , Ġtask Name ()) ĊĊĠĠĠĠĠĠĠ Ġresult . require Task ( outcome Ġ= ĠSUCCESS ) ĊĠĠĠĠĠĠĠ ĠassertThat ( result . output ). contains ( custom Artifact Name (" 1 ")) ĊĠĠĠĠĠĠĠ ĠassertThat ( result . output ). contains ( custom Artifact Name (" 2 ")) ĊĠĠĠ Ġ} Ċ } Ċ