package Ġcom . cd sap . bag an . experiments Ċ Ċ import Ġcom . cd sap . bag an . utils . Test Folder Ċ import Ġcom . cd sap . bag an . utils . Test Pod Logger Ċ Ċ import Ġio . kot lint est . matchers . have Substring Ċ import Ġio . kot lint est . matchers . start With Ċ import Ġio . kot lint est . should Ċ import Ġio . kot lint est . should Throw Ċ import Ġio . kot lint est . specs . Behavior Spec Ċ import Ġjava . io . File Ċ import Ġjava . io . FileNotFoundException ĊĊ Ċ class ĠT al ai ot Injector Test Ġ: ĠBehavior Spec ({ ĊĠĠĠ ĠTest Folder . recursive Delete ( File (" tmp ")) ĊĠĠĠ Ġgiven (" T al ai ot Injector Ġinstance ") Ġ{ ĊĠĠĠĠĠĠĠ Ġ` when ` (" build Ġgradle Ġdoesn 't Ġex iss ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtest Logger Ġ= ĠTest Pod Logger () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFile (" tmp "). mkdir () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtal ai ot Injector Ġ= ĠT al ai ot Injector (" tmp ", Ġtest Logger ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexception Ġ= Ġshould Throw < FileNotFoundException > Ġ{ Ġtal ai ot Injector . init () Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġthen (" error Ġmessage ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexception . message Ġshould Ġstart With (" Main ĠBuild ĠGradle Ġnot Ġfound ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTest Folder . recursive Delete ( File (" tmp ")) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ` when ` (" build . gradle . k ts Ġexists ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtest Logger Ġ= ĠTest Pod Logger () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFile (" tmp "). mkdir () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFile (" tmp / build . gradle . k ts "). createNew File () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtal ai ot Injector Ġ= ĠT al ai ot Injector (" tmp ", Ġtest Logger ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtal ai ot Injector . init () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthen (" the Ġimport Ġof Ġtal ai ot . gradle . k ts Ġmatches Ġwith Ġthe Ġk ts Ġformat ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( test Logger . contains Log (" Mode ĠK TS ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠFile (" tmp / build . gradle . k ts ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile . read Text () Ġshould Ġhave Substring (" apply ( from Ġ= Ġ\" tal ai ot . gradle . k ts \" ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTest Folder . recursive Delete ( File (" tmp ")) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ` when ` (" build . gradle Ġexists ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtest Logger Ġ= ĠTest Pod Logger () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFile (" tmp "). mkdir () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFile (" tmp / build . gradle "). createNew File () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtal ai ot Injector Ġ= ĠT al ai ot Injector (" tmp ", Ġtest Logger ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtal ai ot Injector . init () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthen (" the Ġimport Ġof Ġtal ai ot . gradle . k ts Ġmatches Ġwith Ġthe Ġgro ovy Ġformat ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( test Logger . contains Log (" Mode ĠGRO OV Y ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠFile (" tmp / build . gradle ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile . read Text () Ġshould Ġhave Substring (" apply Ġfrom Ġ: Ġ\" tal ai ot . gradle . k ts \" ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTest Folder . recursive Delete ( File (" tmp ")) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ` when ` (" tal ai ot . gradle . k ts Ġhas Ġbeen Ġcreated ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtest Logger Ġ= ĠTest Pod Logger () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFile (" tmp "). mkdir () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFile (" tmp / build . gradle "). createNew File () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtal ai ot Injector Ġ= ĠT al ai ot Injector (" tmp ", Ġtest Logger ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtal ai ot Injector . init () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthen (" the Ġimport Ġof Ġtal ai ot . gradle . k ts Ġmatches Ġwith Ġthe Ġgro ovy Ġformat ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠFile (" tmp / tal ai ot . gradle . k ts ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontent Ġ= Ġ""" Ċ build script Ġ{ ĊĠ Ġrepositories Ġ{ ĊĠĠĠ Ġmaven Ġ{ ĊĠĠĠĠĠĠ Ġurl Ġ= Ġuri (" https :// plugins . gradle . org / m 2 /") ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġdependencies Ġ{ ĊĠĠĠĠĠĠĠ Ġclasspath (" io . github . cd sap : tal ai ot : 1 . 5 . 1 ") ĊĠĠĠ Ġ} Ċ } Ċ Ċ apply < io . github . cd sap . tal ai ot . plugin . T al ai ot Plugin >() Ċ Ċ configure < io . github . cd sap . tal ai ot . plugin . T al ai ot Plugin Extension >() Ġ{ ĊĠĠĠ Ġlogger Ġ= Ġio . github . cd sap . tal ai ot . logger . Log Tracker . Mode . INFO ĊĠĠĠ Ġmetrics Ġ{ ĊĠĠĠĠĠĠĠ Ġcustom Build Metrics (" experiment " Ġto Ġ Ġ" null ") ĊĠĠĠĠĠĠĠ Ġcustom Task Metrics (" experiment " Ġto Ġ Ġ" null ") ĊĠĠĠ Ġ} ĊĠĠĠ Ġpublish ers Ġ{ ĊĊĠĠĠĠĠĠĠ Ġin flux Db Publisher Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb Name Ġ= Ġ" tracking " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġurl Ġ= Ġ" http :// bag an - influxdb . default : 8 0 8 6 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtask Metric Name Ġ= Ġ" tasks " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuild Metric Name Ġ= Ġ" build " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ """. trim Indent () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile . read Text () Ġshould Ġhave Substring ( content ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTest Folder . recursive Delete ( File (" tmp ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ} Ċ }) Ċ