package Ġcom . example Ċ Ċ import Ġcom . nat pr y ce . ham k rest . assertion .* Ċ import Ġcom . nat pr y ce . ham k rest .* Ċ import Ġorg . gradle . test kit . runner .* Ċ import Ġorg . junit . jupiter . api .* Ċ import Ġorg . junit . jupiter . api . Test Ċ Ċ import Ġjava . nio . file .* Ċ import Ġkotlin . test .* Ċ Ċ internal Ġclass ĠHello Plugin Test Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtemp Dir : ĠPath ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtest Project Dir : ĠPath ĊĊĠĠĠ Ġ@ BeforeEach ĊĠĠĠ Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ Ġtemp Dir Ġ= ĠFiles . create Temp Directory ( java Class . name ) ĊĠĠĠĠĠĠĠ Ġtest Project Dir Ġ= ĠFiles . create Directory ( temp Dir . resolve (" test - proj ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ After Each ĊĠĠĠ Ġfun ĠtearDown () Ġ{ ĊĠĠĠĠĠĠĠ Ġrecursive Delete ( temp Dir ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrecursive Delete ( path : ĠPath ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Files . isDirectory ( path )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFiles . list ( path ). forEach Ġ{ Ġrecursive Delete ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠFiles . delete ( path ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġdont Change ClassName () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals (" com . example . Hello Plugin ", ĠHello Plugin :: class . java . canonical Name ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġhello _ happy _ path () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbuild File Bytes : ĠByteArray Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplugins Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ' java ' ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ' com . example . hello ' ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent (). toByteArray ( Charsets . UTF _ 8 ) ĊĠĠĠĠĠĠĠ Ġval Ġbuild File Ġ= ĠFiles . create File ( test Project Dir . resolve (" build . gradle ")) ĊĠĠĠĠĠĠĠ ĠFiles . write ( build File , Ġbuild File Bytes ) ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠGradle Runner . create () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Project Dir ( test Project Dir . to File ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Debug ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Arguments (" hello ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Plugin Classpath () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ ĠassertThat ( result . output , Ġcontains Substring (" BUILD ĠSUCCESS FUL ")) ĊĠĠĠ Ġ} Ċ } Ċ