package Ġcom . jak ew h art on . w orm hole . gradle Ċ Ċ import Ġcom . google . common . truth . Truth . assertThat Ċ import Ġorg . gradle . test kit . runner . Gradle Runner Ċ import Ġorg . junit . Test Ċ import Ġjava . io . File Ċ import Ġjava . util . Properties Ċ Ċ class ĠAndroid W orm hole Test Ġ{ ĊĠ Ġprivate Ġval Ġfixtures Dir Ġ= ĠFile (" src / test / fixture ") ĊĊĠ Ġ@ Test Ġfun Ġlibrary () Ġ{ ĊĠĠĠ Ġval Ġfixture Dir Ġ= ĠFile ( fixtures Dir , Ġ" library - groovy ") ĊĠĠĠ ĠFile ( fixture Dir , Ġ" local . properties "). write Text (" sdk . dir =$ android Home \ n ") ĊĠĠĠ Ġval Ġgradle Root Ġ= ĠFile ( fixture Dir , Ġ" gradle "). apply Ġ{ ĊĠĠĠĠĠ Ġmkdir () ĊĠĠĠ Ġ} ĊĠĠĠ ĠFile ("../ gradle / wrapper "). copy Re cursively ( File ( gradle Root , Ġ" wrapper "), Ġtrue ) ĊĊĠĠĠ Ġval Ġresult Ġ= ĠGradle Runner . create () ĊĠĠĠĠĠĠĠ Ġ. with Project Dir ( fixture Dir ) ĊĠĠĠĠĠĠĠ Ġ. with Plugin Classpath () ĊĠĠĠĠĠĠĠ Ġ. with Arguments (" clean ", Ġ" assemble Debug ", Ġ" lint Debug ", Ġ"-- stack trace ") ĊĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ ĠassertThat ( result . output ). contains (" BUILD ĠSUCCESS FUL ") ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġlibrary K ts () Ġ{ ĊĠĠĠ Ġval Ġfixture Dir Ġ= ĠFile ( fixtures Dir , Ġ" library - k ts ") ĊĠĠĠ ĠFile ( fixture Dir , Ġ" local . properties "). write Text (" sdk . dir =$ android Home \ n ") ĊĠĠĠ Ġval Ġgradle Root Ġ= ĠFile ( fixture Dir , Ġ" gradle "). apply Ġ{ ĊĠĠĠĠĠ Ġmkdir () ĊĠĠĠ Ġ} ĊĠĠĠ ĠFile ("../ gradle / wrapper "). copy Re cursively ( File ( gradle Root , Ġ" wrapper "), Ġtrue ) ĊĊĠĠĠ Ġval Ġresult Ġ= ĠGradle Runner . create () ĊĠĠĠĠĠĠĠ Ġ. with Project Dir ( fixture Dir ) ĊĠĠĠĠĠĠĠ Ġ. with Plugin Classpath () ĊĠĠĠĠĠĠĠ Ġ. with Arguments (" clean ", Ġ" assemble Debug ", Ġ" lint Debug ", Ġ"-- stack trace ") ĊĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ ĠassertThat ( result . output ). contains (" BUILD ĠSUCCESS FUL ") ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġlibrary Invalid Type () Ġ{ ĊĠĠĠ Ġval Ġfixture Dir Ġ= ĠFile ( fixtures Dir , Ġ" library - invalid - type ") ĊĠĠĠ ĠFile ( fixture Dir , Ġ" local . properties "). write Text (" sdk . dir =$ android Home \ n ") ĊĠĠĠ Ġval Ġgradle Root Ġ= ĠFile ( fixture Dir , Ġ" gradle "). apply Ġ{ ĊĠĠĠĠĠ Ġmkdir () ĊĠĠĠ Ġ} ĊĠĠĠ ĠFile ("../ gradle / wrapper "). copy Re cursively ( File ( gradle Root , Ġ" wrapper "), Ġtrue ) ĊĊĠĠĠ Ġval Ġresult Ġ= ĠGradle Runner . create () ĊĠĠĠĠĠĠĠ Ġ. with Project Dir ( fixture Dir ) ĊĠĠĠĠĠĠĠ Ġ. with Plugin Classpath () ĊĠĠĠĠĠĠĠ Ġ. with Arguments (" clean ", Ġ"-- stack trace ") ĊĠĠĠĠĠĠĠ Ġ. build And Fail () ĊĠĠĠ ĠassertThat ( result . output ). apply Ġ{ ĊĠĠĠĠĠ Ġcontains (" BUILD ĠFAILED ") ĊĠĠĠĠĠ Ġcontains (" Compilation Ġplatform Ġmust Ġbe Ġspecified Ġas Ġinteger Ġor Ġstring ") ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġval Ġandroid Home : ĠString Ġget () Ġ{ ĊĠĠĠ Ġval Ġenv Ġ= ĠSystem . getenv (" ANDROID _ HOME ") ĊĠĠĠ Ġif Ġ( env Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġenv . with Invariant Path Separ ators () ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġlocal Prop Ġ= ĠFile ( File ( System . getProperty (" user . dir ")). parent File , Ġ" local . properties ") ĊĠĠĠ Ġif Ġ( local Prop . exists ()) Ġ{ ĊĠĠĠĠĠ Ġval Ġprop Ġ= ĠProperties () ĊĠĠĠĠĠ Ġlocal Prop . inputStream (). use Ġ{ ĊĠĠĠĠĠĠĠ Ġprop . load ( it ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġval Ġsdk Home Ġ= Ġprop . getProperty (" sdk . dir ") ĊĠĠĠĠĠ Ġif Ġ( sdk Home Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġsdk Home . with Invariant Path Separ ators () ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġthrow ĠIllegalStateException ( ĊĠĠĠĠĠĠĠ Ġ" Missing Ġ' ANDROID _ HOME ' Ġenvironment Ġvariable Ġor Ġlocal . properties Ġwith Ġ' sdk . dir '") ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun ĠString . with Invariant Path Separ ators () Ġ= Ġreplace ("\\ ", Ġ"/") Ċ } Ċ