package Ġpl . d roid son roid s . gradle . jac oco . test kit Ċ Ċ import Ġorg . assertj . core . api . Assertions . assertThat Ċ import Ġorg . gradle . testing . jac oco . plugins . J aco co Plugin Ċ import Ġorg . gradle . test kit . runner . Gradle Runner Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Rule Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . rules . Temporary Folder Ċ import Ġjava . io . File Ċ import Ġjava . util . Properties Ċ Ċ class ĠJ a Co Co Test Kit Plugin Functional Test Ġ{ ĊĠĠĠ Ġ@ get : Rule ĊĠĠĠ Ġval Ġtemporary Folder Ġ= ĠTemporary Folder () ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ Ġtemporary Folder . new File (" gradle . properties "). fill From Resource (" test kit - gradle . properties ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval Ġgenerate J aco co Test Kit Properties Ġ= Ġ" generate J aco co Test Kit Properties " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` gradle Ġproperties Ġfile Ġgenerated Ġwith Ġdefault Ġversion `() Ġ{ ĊĠĠĠĠĠĠĠ Ġtemporary Folder . new File (" build . gradle "). fill From Resource (" simple . gradle ") ĊĠĠĠĠĠĠĠ ĠGradle Runner . create () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Project Dir ( temporary Folder . root ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Test Kit Dir ( temporary Folder . new Folder ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Arguments ( generate J aco co Test Kit Properties ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Plugin Classpath () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ Ġval Ġargs Ġ= Ġread Args From Properties () ĊĠĠĠĠĠĠĠ ĠassertThat ( args ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. startsWith ("\" - java agent :") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. contains (" = dest file =") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. contains ( J aco co Plugin . DEFAULT _ J AC O CO _ VERSION ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. endsWith (" test . exec \" ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` gradle Ġproperties Ġfile Ġgenerated Ġwith Ġexplicit Ġversion `() Ġ{ ĊĠĠĠĠĠĠĠ Ġtemporary Folder . new File (" build . gradle "). fill From Resource (" extension . gradle ") ĊĠĠĠĠĠĠĠ ĠGradle Runner . create () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Project Dir ( temporary Folder . root ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Test Kit Dir ( temporary Folder . new Folder ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Arguments ( generate J aco co Test Kit Properties ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Plugin Classpath () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ Ġval Ġargs Ġ= Ġread Args From Properties () ĊĠĠĠĠĠĠĠ ĠassertThat ( args ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. startsWith ("\" - java agent :") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. contains (" = dest file =") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. contains (" 0 . 7 . 7 . 2 0 1 6 0 6 0 6 0 6 0 6 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. endsWith (". exec \" ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` gradle Ġproperties Ġfile Ġgenerated Ġdoesn 't Ġchange Ġbetween Ġbuilds `() Ġ{ ĊĠĠĠĠĠĠĠ Ġtemporary Folder . new File (" build . gradle "). fill From Resource (" extension . gradle ") ĊĠĠĠĠĠĠĠ Ġval Ġtest Kit Dir : ĠFile Ġ= Ġtemporary Folder . new Folder () ĊĠĠĠĠĠĠĠ Ġval Ġgradle Builder Ġ= ĠGradle Runner . create () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Project Dir ( temporary Folder . root ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Test Kit Dir ( test Kit Dir ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Arguments ( generate J aco co Test Kit Properties , Ġ"-- rer un - tasks ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Plugin Classpath () ĊĊĠĠĠĠĠĠĠ Ġgradle Builder . build () ĊĠĠĠĠĠĠĠ Ġval Ġfirst Build Properties Ġ= Ġread Lines From Properties () ĊĊĠĠĠĠĠĠĠ ĠThread . sleep ( 1 0 0 0 ) Ġ// Ġwe Ġneed Ġto Ġwait Ġfor Ġa Ġsecond Ġto Ġbe Ġsure Ġa Ġtimestamp Ġwould Ġhave Ġchanged ĊĠĠĠĠĠĠĠ Ġtest Kit Dir . list Files ()?. forEach Ġ{ Ġit . delete () Ġ} ĊĊĠĠĠĠĠĠĠ Ġgradle Builder . build () ĊĠĠĠĠĠĠĠ Ġval Ġsecond Build Properties Ġ= Ġread Lines From Properties () ĊĊĊĠĠĠĠĠĠĠ ĠassertThat ( second Build Properties ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. isEqualTo ( first Build Properties ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` plugin Ġcompatible Ġwith ĠGradle Ġ 4 _ 9 `() Ġ{ ĊĠĠĠĠĠĠĠ Ġtemporary Folder . new File (" build . gradle "). fill From Resource (" simple . gradle ") ĊĠĠĠĠĠĠĠ ĠGradle Runner . create () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Gradle Version (" 4 . 9 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Project Dir ( temporary Folder . root ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Test Kit Dir ( temporary Folder . new Folder ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Plugin Classpath () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` plugin Ġcompatible Ġwith ĠInstant ĠExecution `() Ġ{ ĊĠĠĠĠĠĠĠ Ġtemporary Folder . new File (" build . gradle "). fill From Resource (" simple . gradle ") ĊĠĠĠĠĠĠĠ ĠGradle Runner . create () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Gradle Version (" 6 . 4 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Project Dir ( temporary Folder . root ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Test Kit Dir ( temporary Folder . new Folder ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Arguments ( generate J aco co Test Kit Properties , Ġ"- D org . gradle . unsafe . instant - execution = true ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Plugin Classpath () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` gradle Ġproperties Ġfile Ġgenerated Ġwith Ġcustom Ġdestination Ġfile `() Ġ{ ĊĠĠĠĠĠĠĠ Ġtemporary Folder . new File (" build . gradle "). fill From Resource (" custom - destination . gradle ") ĊĠĠĠĠĠĠĠ ĠGradle Runner . create () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Project Dir ( temporary Folder . root ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Test Kit Dir ( temporary Folder . new Folder ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Arguments ( generate J aco co Test Kit Properties ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Plugin Classpath () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ Ġval Ġargs Ġ= Ġread Args From Properties () ĊĠĠĠĠĠĠĠ ĠassertThat ( args ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. endsWith (" integration . exec \" ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` gradle Ġproperties Ġfile Ġgenerated Ġfor Ġa Ġcustom Ġtask `() Ġ{ ĊĠĠĠĠĠĠĠ Ġtemporary Folder . new File (" build . gradle "). fill From Resource (" custom - task . gradle ") ĊĠĠĠĠĠĠĠ ĠGradle Runner . create () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Project Dir ( temporary Folder . root ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Test Kit Dir ( temporary Folder . new Folder ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Arguments (" generate J aco co IntegrationTest Kit Properties ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Plugin Classpath () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ Ġval Ġargs Ġ= Ġread Args From Properties (" integration Test ") ĊĠĠĠĠĠĠĠ ĠassertThat ( args ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. endsWith (" integration Test . exec \" ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġread Args From Properties ( task Name : ĠString Ġ= Ġ" test "): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġproperties File Ġ= ĠFile ( temporary Folder . root , Ġ" build / test kit /$ task Name / test kit - gradle . properties ") ĊĠĠĠĠĠĠĠ Ġval Ġproperties Ġ= ĠProperties () ĊĠĠĠĠĠĠĠ Ġproperties File . inputStream (). use Ġ{ ĠinputStream Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproperties . load ( inputStream ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġproperties . getProperty (" org . gradle . jvm args ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġread Lines From Properties ( task Name : ĠString Ġ= Ġ" test "): ĠList < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġproperties File Ġ= ĠFile ( temporary Folder . root , Ġ" build / test kit /$ task Name / test kit - gradle . properties ") ĊĠĠĠĠĠĠĠ Ġreturn Ġproperties File . inputStream (). use Ġ{ ĠinputStream Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠinputStream . reader (). read Lines () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }