package Ġcom . ps w iders k . gradle . terraform Ċ Ċ import Ġorg . gradle . api . Project Ċ import Ġorg . gradle . test fixtures . Project Builder Ċ import Ġorg . gradle . test kit . runner . Gradle Runner Ċ import Ġorg . gradle . test kit . runner . Task Outcome Ċ import Ġorg . junit . jupiter . api . Assertions Ċ import Ġorg . junit . jupiter . api . Assertions . assertEquals Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . junit . jupiter . api . io . TempDir Ċ import Ġjava . io . File Ċ Ċ internal Ġclass ĠTerraform Plugin Test Ġ{ ĊĊĠĠĠ Ġ@ TempDir ĊĠĠĠ Ġlateinit Ġvar Ġtemp Dir : ĠFile ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` test Ġif Ġmain Ġexternal Ġplugins Ġwere Ġsuccessfully Ġapplied `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġproject : ĠProject Ġ= ĠProject Builder . builder (). build () ĊĠĠĠĠĠĠĠ Ġproject . plugin Manager . apply ( T erraform Plugin :: class . java ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġproject . plugins . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġproject . tasks . size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` test Ġif Ġterraform Ġsetup Ġand Ġversion Ġcheck Ġwas Ġsuccessful `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġgiven ĊĠĠĠĠĠĠĠ Ġval Ġexpected Output Msg Ġ= Ġ" T erraform Ġv 0 . 1 2 . 2 8 " ĊĠĠĠĠĠĠĠ Ġval Ġbuild File Ġ= ĠFile ( temp Dir , Ġ" build . gradle . k ts ") ĊĠĠĠĠĠĠĠ Ġbuild File . write Text (""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġcom . ps w iders k . gradle . terraform . T erraform Task ĊĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠ Ġplugins Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid (" com . ps w iders k . terraform - plugin ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠ Ġtasks Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġregister < T erraform Task >(" run T erraform Version Check ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargs ("-- version ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent ()) ĊĠĠĠĠĠĠĠ Ġval Ġrunner Ġ= ĠGradle Runner . create () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Plugin Classpath () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Project Dir ( temp Dir ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. forward Output () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Arguments (": run T erraform Version Check ") ĊĊĠĠĠĠĠĠĠ Ġ// Ġwhen ĊĠĠĠĠĠĠĠ Ġval Ġfirst Run Result Ġ= Ġrunner . build () ĊĠĠĠĠĠĠĠ Ġval Ġsecond Run Result Ġ= Ġrunner . build () ĊĊĠĠĠĠĠĠĠ Ġ// Ġthen ĊĠĠĠĠĠĠĠ Ġwith ( first Run Result ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( Task Outcome . SUCCESS , Ġtask (": terraform Setup ") !!. outcome ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( Task Outcome . SUCCESS , Ġtask (": run T erraform Version Check ") !!. outcome ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssertions . assertTrue Ġ{ Ġoutput . contains ( expected Output Msg ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġwith ( second Run Result ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( Task Outcome . SKIP PED , Ġtask (": terraform Setup ") !!. outcome ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( Task Outcome . SUCCESS , Ġtask (": run T erraform Version Check ") !!. outcome ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssertions . assertTrue Ġ{ Ġoutput . contains ( expected Output Msg ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }