package Ġcom . h end ra angg rian . resp ath Ċ Ċ import Ġorg . gradle . test kit . runner . Gradle Runner Ċ import Ġorg . gradle . test kit . runner . Task Outcome Ċ import Ġorg . junit . Rule Ċ import Ġorg . junit . rules . Temporary Folder Ċ import Ġjava . io . File Ċ import Ġjava . io . IOException Ċ import Ġjava . util . Properties Ċ import Ġkotlin . test . Before Test Ċ import Ġkotlin . test . Test Ċ import Ġkotlin . test . assertEquals Ċ import Ġkotlin . test . assertTrue Ċ Ċ class ĠRes Path Task Test Ġ{ ĊĊĠĠĠ Ġ@ Rule Ġ@ Jvm Field Ġval Ġtest Project Dir Ġ= ĠTemporary Folder () ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġsettings File : ĠFile ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbuild File : ĠFile ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġrunner : ĠGradle Runner ĊĊĠĠĠ Ġ@ Before Test ĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġfun Ġsetup () Ġ{ ĊĠĠĠĠĠĠĠ Ġtest Project Dir . new Folder (" src ", Ġ" main ", Ġ" resources ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. resolve (" my . properties ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. output Stream () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. use Ġ{ Ġstream Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProperties (). apply Ġ{ Ġset Property (" key ", Ġ" value ") Ġ}. store ( stream , Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsettings File Ġ= Ġtest Project Dir . new File (" settings . gradle . k ts ") ĊĠĠĠĠĠĠĠ Ġsettings File . write Text ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġroot Project . name Ġ= Ġ" generate - test " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġbuild File Ġ= Ġtest Project Dir . new File (" build . gradle . k ts ") ĊĠĠĠĠĠĠĠ Ġrunner Ġ= ĠGradle Runner . create () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Plugin Classpath () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Project Dir ( test Project Dir . root ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Test Kit Dir ( test Project Dir . new Folder ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġno Configuration () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠTODO : Ġfind Ġout Ġwhy Ġgroup Ġand Ġversion Ġare Ġalways Ġnull ĊĠĠĠĠĠĠĠ Ġbuild File . write Text ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgroup Ġ= Ġ" com . example " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġversion Ġ= Ġ" 1 . 0 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplugins Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjava ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġidea ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid (" com . h end ra angg rian . resp ath ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtasks . get ByName < com . h end ra angg rian . resp ath . Res Path Task >(" generate R ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfigure Properties () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠpackageName . set (" com . example ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġrunner . with Arguments (" compile R "). build (). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( Task Outcome . SUCCESS , Ġit . task (": compile R ") !!. outcome ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlines Ġ= Ġtest Project Dir . root . resolve (" build ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. resolve (" generated ${ File . separator } r ${ File . separator } src ${ File . separator } main ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. resolve (" com ${ File . separator } example ${ File . separator } R . java ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. read Lines () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue (" package Ġcom . example ;" Ġin Ġlines , Ġ" invalid Ġpackage ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue (" public Ġfinal Ġclass ĠR Ġ{" Ġin Ġlines , Ġ" invalid Ġclass ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue (" Ġ Ġpublic Ġstatic Ġfinal ĠString Ġkey Ġ= Ġ\" key \"; " Ġin Ġlines , Ġ" invalid Ġproperties ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue (" Ġ Ġpublic Ġstatic Ġfinal ĠString Ġ_ my Ġ= Ġ\" / my . properties \"; " Ġin Ġlines , Ġ" invalid Ġpath ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġconfigure All () Ġ{ ĊĠĠĠĠĠĠĠ Ġbuild File . write Text ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgroup Ġ= Ġ" com . example " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġversion Ġ= Ġ" 1 . 0 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplugins Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjava ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġidea ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid (" com . h end ra angg rian . resp ath ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtasks . get ByName < com . h end ra angg rian . resp ath . Res Path Task >(" generate R ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfigure Properties () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠpackageName . set (" my package ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠclassName . set (" R 2 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshould Upper case Field . set ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshould Lower case Class . set ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġrunner . with Arguments (" compile R "). build (). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( Task Outcome . SUCCESS , Ġit . task (": compile R ") !!. outcome ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlines Ġ= Ġtest Project Dir . root . resolve (" build ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. resolve (" generated ${ File . separator } r ${ File . separator } src ${ File . separator } main ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. resolve (" my package ${ File . separator } R 2 . java ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. read Lines () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue (" package Ġmy package ;" Ġin Ġlines , Ġ" invalid Ġpackage ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue (" public Ġfinal Ġclass Ġr 2 Ġ{" Ġin Ġlines , Ġ" invalid Ġclass ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue (" Ġ Ġpublic Ġstatic Ġfinal ĠString ĠKEY Ġ= Ġ\" key \"; " Ġin Ġlines , Ġ" invalid Ġproperties ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue (" Ġ Ġpublic Ġstatic Ġfinal ĠString Ġ_ MY Ġ= Ġ\" / my . properties \"; " Ġin Ġlines , Ġ" invalid Ġpath ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }