package Ġio . github . jan bar ari . gradle . analytics . scanner Ċ Ċ import Ġio . github . jan bar ari . gradle . analytics . Gradle Analytics Plugin Config Ċ import Ġio . github . jan bar ari . gradle . analytics . domain . model . Task Info Ċ import Ġio . github . jan bar ari . gradle . analytics . scanner . execution . Build Execution Injector Ċ import Ġio . github . jan bar ari . gradle . analytics . scanner . execution . provide Build Execution Logic Ċ import Ġio . github . jan bar ari . gradle . utils . Git Utils Ċ import Ġio . mock k . every Ċ import Ġio . mock k . mock k Object Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġkotlin . test . assertEquals Ċ Ċ class ĠBuild Execution Logic Test Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġinjector Ġ= ĠBuild Execution Injector ( ĊĠĠĠĠĠĠĠ Ġtracking Branches Ġ= ĠlistOf (" master "), ĊĠĠĠĠĠĠĠ Ġdatabase Config Ġ= ĠGradle Analytics Plugin Config . Database Config (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocal Ġ= Ġsqlite Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpath Ġ= Ġ"./ build " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġis CI Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġbranch Ġ= Ġ" master ", ĊĠĠĠĠĠĠĠ Ġrequested Tasks Ġ= ĠlistOf (" assemble Debug "), ĊĠĠĠĠĠĠĠ Ġtracking Tasks Ġ= ĠlistOf (" assemble Debug ") ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` check Ġis Branch Track able () Ġreturns Ġcorrect Ġresult `() Ġ{ ĊĠĠĠĠĠĠĠ Ġmock k Object ( Git Utils ) ĊĠĠĠĠĠĠĠ Ġevery Ġ{ ĠGit Utils . current Branch () Ġ} Ġreturns Ġ" master " ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( true , Ġinjector . provide Build Execution Logic (). is Branch Track able ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` check Ġis Task Track able () Ġreturns Ġcorrect Ġresult `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( true , Ġinjector . provide Build Execution Logic (). is Task Track able ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` check Ġis Forbidden Tasks Requested () Ġreturns Ġcorrect Ġresult `() Ġ{ ĊĠĠĠĠĠĠĠ Ġinjector . requested Tasks Ġ= ĠlistOf (" report Analytics ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( true , Ġinjector . provide Build Execution Logic (). is Forbidden Tasks Requested ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` check Ġis Database Configuration Valid () Ġreturns Ġtrue Ġwhen Ġran Ġon ĠLocal `() Ġ{ ĊĠĠĠĠĠĠĠ Ġinjector . database Config Ġ= ĠGradle Analytics Plugin Config . Database Config (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocal Ġ= Ġsqlite Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpath Ġ= Ġ"./ build " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals ( true , Ġinjector . provide Build Execution Logic (). is Database Configuration Valid ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` check Ġis Database Configuration Valid () Ġreturns Ġtrue Ġwhen Ġran Ġon ĠCI `() Ġ{ ĊĠĠĠĠĠĠĠ Ġinjector . is CI Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġinjector . database Config Ġ= ĠGradle Analytics Plugin Config . Database Config (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġci Ġ= Ġsqlite Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpath Ġ= Ġ"./ build " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals ( true , Ġinjector . provide Build Execution Logic (). is Database Configuration Valid ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` check Ġis Database Configuration Valid () Ġreturns Ġfalse Ġwhen Ġran Ġon ĠCI `() Ġ{ ĊĠĠĠĠĠĠĠ Ġinjector . is CI Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġinjector . database Config Ġ= ĠGradle Analytics Plugin Config . Database Config (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġci Ġ= Ġsqlite Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpath Ġ= Ġ"./ build " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals ( false , Ġinjector . provide Build Execution Logic (). is Database Configuration Valid ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` check Ġis Database Configuration Valid () Ġreturns Ġfalse Ġwhen Ġran Ġon ĠLocal `() Ġ{ ĊĠĠĠĠĠĠĠ Ġinjector . is CI Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġinjector . database Config Ġ= ĠGradle Analytics Plugin Config . Database Config (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocal Ġ= Ġsqlite Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpath Ġ= Ġ"./ build " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals ( false , Ġinjector . provide Build Execution Logic (). is Database Configuration Valid ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` check Ġon Execution Finished () Ġreturns Ġtrue `() Ġ{ ĊĠĠĠĠĠĠĠ Ġmock k Object ( Git Utils ) ĊĠĠĠĠĠĠĠ Ġevery Ġ{ ĠGit Utils . current Branch () Ġ} Ġreturns Ġ" master " ĊĊĠĠĠĠĠĠĠ Ġval Ġexecuted Tasks Ġ= ĠlistOf < Task Info >() ĊĠĠĠĠĠĠĠ Ġinjector . provide Build Execution Logic (). on Execution Finished ( executed Tasks ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` check Ġon Execution Finished () Ġreturns Ġfalse Ġwhen Ġbranch Ġis Ġnot Ġtrack able `() Ġ{ ĊĠĠĠĠĠĠĠ Ġmock k Object ( Git Utils ) ĊĠĠĠĠĠĠĠ Ġevery Ġ{ ĠGit Utils . current Branch () Ġ} Ġreturns Ġ" feature - 1 " ĊĊĠĠĠĠĠĠĠ Ġval Ġexecuted Tasks Ġ= ĠlistOf < Task Info >() ĊĠĠĠĠĠĠĠ Ġinjector . provide Build Execution Logic (). on Execution Finished ( executed Tasks ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` check Ġon Execution Finished () Ġreturns Ġfalse Ġwhen Ġtask Ġis Ġnot Ġtrack able `() Ġ{ ĊĠĠĠĠĠĠĠ Ġmock k Object ( Git Utils ) ĊĠĠĠĠĠĠĠ Ġevery Ġ{ ĠGit Utils . current Branch () Ġ} Ġreturns Ġ" master " ĊĠĠĠĠĠĠĠ Ġinjector . requested Tasks Ġ= ĠlistOf (" clean ") ĊĊĠĠĠĠĠĠĠ Ġval Ġexecuted Tasks Ġ= ĠlistOf < Task Info >() ĊĠĠĠĠĠĠĠ Ġinjector . provide Build Execution Logic (). on Execution Finished ( executed Tasks ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` check Ġon Execution Finished () Ġreturns Ġfalse Ġwhen Ġdatabase Ġis Ġnot Ġset `() Ġ{ ĊĠĠĠĠĠĠĠ Ġinjector . database Config Ġ= ĠGradle Analytics Plugin Config . Database Config () ĊĊĠĠĠĠĠĠĠ Ġval Ġexecuted Tasks Ġ= ĠlistOf < Task Info >() ĊĠĠĠĠĠĠĠ Ġinjector . provide Build Execution Logic (). on Execution Finished ( executed Tasks ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` check Ġon Execution Finished () Ġreturns Ġfalse Ġwhen Ġforbidden Ġtasks Ġrequested `() Ġ{ ĊĠĠĠĠĠĠĠ Ġinjector . requested Tasks Ġ= ĠlistOf (" report Analytics ") ĊĊĠĠĠĠĠĠĠ Ġval Ġexecuted Tasks Ġ= ĠlistOf < Task Info >() ĊĠĠĠĠĠĠĠ Ġinjector . provide Build Execution Logic (). on Execution Finished ( executed Tasks ) ĊĠĠĠ Ġ} Ċ Ċ }