package Ġcom . os ack y . fl ank . gradle . integration Ċ Ċ import Ġcom . google . common . truth . Truth . assertThat Ċ import Ġorg . gradle . test kit . runner . Gradle Runner Ċ import Ġorg . junit . Rule Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . rules . Temporary Folder Ċ Ċ class ĠFl ank Gradle Plugin IntegrationTest Ġ{ ĊĊĠ Ġ@ get : Rule ĊĠ Ġvar Ġtest Project Root Ġ= ĠTemporary Folder () ĊĊĠ Ġval Ġmin Support Gradle Version Ġ= Ġ" 5 . 5 " ĊĠ Ġval Ġold Version Ġ= Ġ" 5 . 3 . 1 " ĊĊĠ Ġfun Ġwrite Build Gradle ( build : ĠString ) Ġ{ ĊĠĠĠ Ġval Ġfile Ġ= Ġtest Project Root . new File (" build . gradle ") ĊĠĠĠ Ġfile . write Text ( build ) ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Low Gradle Version Fails Build () Ġ{ ĊĠĠĠ Ġwrite Build Gradle ( ĊĠĠĠĠĠĠĠ Ġ""" plugins Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ Ġid Ġ" com . os ack y . fl ad le " ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| } """. trim Margin () ĊĠĠĠ Ġ) ĊĠĠĠ Ġval Ġresult Ġ= ĠGradle Runner . create () ĊĠĠĠĠĠĠĠ Ġ. with Project Dir ( test Project Root . root ) ĊĠĠĠĠĠĠĠ Ġ. with Plugin Classpath () ĊĠĠĠĠĠĠĠ Ġ. with Gradle Version ( old Version ) ĊĠĠĠĠĠĠĠ Ġ. build And Fail () ĊĠĠĠ ĠassertThat ( result . output ). contains (" Fl ad le Ġrequires Ġat Ġminimum Ġversion ĠGradle Ġ 5 . 5 . ĠDet ected Ġversion ĠGradle Ġ 5 . 3 . 1 ") ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Gradle Six Zero () Ġ{ ĊĠĠĠ Ġwrite Build Gradle ( ĊĠĠĠĠĠĠĠ Ġ""" plugins Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ Ġid Ġ" com . os ack y . fl ad le " ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| } """. trim Margin () ĊĠĠĠ Ġ) ĊĠĠĠ Ġval Ġresult Ġ= ĠGradle Runner . create () ĊĠĠĠĠĠĠĠ Ġ. with Project Dir ( test Project Root . root ) ĊĠĠĠĠĠĠĠ Ġ. with Plugin Classpath () ĊĠĠĠĠĠĠĠ Ġ. with Gradle Version (" 6 . 0 ") ĊĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠ ĠassertThat ( result . output ). contains (" SUCCESS ") ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Min Supported Gradle Version Works () Ġ{ ĊĠĠĠ Ġwrite Build Gradle ( ĊĠĠĠĠĠĠĠ Ġ""" plugins Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ Ġid Ġ" com . os ack y . fl ad le " ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| } """. trim Margin () ĊĠĠĠ Ġ) ĊĠĠĠ ĠGradle Runner . create () ĊĠĠĠĠĠĠĠ Ġ. with Project Dir ( test Project Root . root ) ĊĠĠĠĠĠĠĠ Ġ. with Plugin Classpath () ĊĠĠĠĠĠĠĠ Ġ. with Gradle Version ( min Support Gradle Version ) ĊĠĠĠĠĠĠĠ Ġ. build () ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Missing ServiceAccount With ProjectId () Ġ{ ĊĠĠĠ Ġwrite Build Gradle ( ĊĠĠĠĠĠĠĠ Ġ""" plugins Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ Ġid Ġ" com . os ack y . fl ad le " ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| } ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| fl ad le Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ ĠprojectId Ġ= Ġ" foo - project " ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ Ġdebug A pk Ġ= Ġ" foo " ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ Ġinstrument ation A pk Ġ= Ġ" fake Instrument . apk " ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| } """. trim Margin () ĊĠĠĠ Ġ) ĊĠĠĠ ĠGradle Runner . create () ĊĠĠĠĠĠĠĠ Ġ. with Project Dir ( test Project Root . root ) ĊĠĠĠĠĠĠĠ Ġ. with Plugin Classpath () ĊĠĠĠĠĠĠĠ Ġ. with Gradle Version ( min Support Gradle Version ) ĊĠĠĠĠĠĠĠ Ġ. with Arguments (" print Y ml ") ĊĠĠĠĠĠĠĠ Ġ. build () ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Missing ServiceAccount Fails Build () Ġ{ ĊĠĠĠ Ġwrite Build Gradle ( ĊĠĠĠĠĠĠĠ Ġ""" plugins Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ Ġid Ġ" com . os ack y . fl ad le " ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| } ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| fl ad le Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ Ġdebug A pk Ġ= Ġ" foo " ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| } """. trim Margin () ĊĠĠĠ Ġ) ĊĠĠĠ Ġval Ġresult Ġ= ĠGradle Runner . create () ĊĠĠĠĠĠĠĠ Ġ. with Project Dir ( test Project Root . root ) ĊĠĠĠĠĠĠĠ Ġ. with Plugin Classpath () ĊĠĠĠĠĠĠĠ Ġ. with Gradle Version ( min Support Gradle Version ) ĊĠĠĠĠĠĠĠ Ġ. with Arguments (" print Y ml ") ĊĠĠĠĠĠĠĠ Ġ. build And Fail () ĊĠĠĠ ĠassertThat ( result . output ). contains (" ServiceAccount Credentials Ġin Ġfl ad le Ġextension Ġnot Ġset . Ġhttps :// github . com / running code / fl ad le # service account credentials ") ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Missing A pk Fails Build () Ġ{ ĊĠĠĠ Ġwrite Build Gradle ( ĊĠĠĠĠĠĠĠ Ġ""" plugins Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ Ġid Ġ" com . os ack y . fl ad le " ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| } ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| fl ad le Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ Ġservice Account Credentials Ġ= Ġproject . layout . project Directory . file (" foo ") ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| } ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| """. trim Margin () ĊĠĠĠ Ġ) ĊĠĠĠ Ġval Ġresult Ġ= ĠGradle Runner . create () ĊĠĠĠĠĠĠĠ Ġ. with Project Dir ( test Project Root . root ) ĊĠĠĠĠĠĠĠ Ġ. with Plugin Classpath () ĊĠĠĠĠĠĠĠ Ġ. with Gradle Version ( min Support Gradle Version ) ĊĠĠĠĠĠĠĠ Ġ. with Arguments (" run Fl ank ") ĊĠĠĠĠĠĠĠ Ġ. build And Fail () ĊĠĠĠ ĠassertThat ( result . output ). contains (" debug A pk Ġmust Ġbe Ġspecified ") ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Missing Instrumentation A pk Fails Build () Ġ{ ĊĠĠĠ Ġwrite Build Gradle ( ĊĠĠĠĠĠĠĠ Ġ""" plugins Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ" com . os ack y . fl ad le " ĊĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠ Ġfl ad le Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġservice Account Credentials Ġ= Ġproject . layout . project Directory . file (" foo ") ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġdebug A pk Ġ= Ġ" test - debug . apk " ĊĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠ Ġ) ĊĠĠĠ Ġval Ġresult Ġ= ĠGradle Runner . create () ĊĠĠĠĠĠĠĠ Ġ. with Project Dir ( test Project Root . root ) ĊĠĠĠĠĠĠĠ Ġ. with Plugin Classpath () ĊĠĠĠĠĠĠĠ Ġ. with Gradle Version ( min Support Gradle Version ) ĊĠĠĠĠĠĠĠ Ġ. with Arguments (" run Fl ank ") ĊĠĠĠĠĠĠĠ Ġ. build And Fail () ĊĊĠĠĠ ĠassertThat ( result . output ). contains (" Either Ġinstrument ation A pk Ġfile Ġor Ġro bo Script Ġfile Ġmust Ġbe Ġspecified Ġbut Ġnot Ġboth .") ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Spec ifying Both Instr um enation And Rob os cript Fails Build () Ġ{ ĊĠĠĠ Ġwrite Build Gradle ( ĊĠĠĠĠĠĠĠ Ġ""" plugins Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ" com . os ack y . fl ad le " ĊĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠ Ġfl ad le Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġservice Account Credentials Ġ= Ġproject . layout . project Directory . file (" foo ") ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġdebug A pk Ġ= Ġ" test - debug . apk " ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġinstrument ation A pk Ġ= Ġ" instr um enation - debug . apk " ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġro bo Script Ġ= Ġ" foo . script " ĊĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠ Ġ) ĊĠĠĠ Ġval Ġresult Ġ= ĠGradle Runner . create () ĊĠĠĠĠĠĠĠ Ġ. with Project Dir ( test Project Root . root ) ĊĠĠĠĠĠĠĠ Ġ. with Plugin Classpath () ĊĠĠĠĠĠĠĠ Ġ. with Gradle Version ( min Support Gradle Version ) ĊĠĠĠĠĠĠĠ Ġ. with Arguments (" print Y ml ") ĊĠĠĠĠĠĠĠ Ġ. build And Fail () ĊĊĠĠĠ ĠassertThat ( result . output ). contains (" Either Ġinstrument ation A pk Ġfile Ġor Ġro bo Script Ġfile Ġmust Ġbe Ġspecified Ġbut Ġnot Ġboth .") ĊĠ Ġ} Ċ } Ċ