/* Ċ Ġ* ĠCopyright Ġ 2 0 1 0 - 2 0 2 2 ĠJetBrains Ġs . r . o . Ġand ĠKotlin ĠProgramming ĠLanguage Ġcontributors . Ċ Ġ* ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe Ġlicense / LICENSE . txt Ġfile . Ċ Ġ*/ Ċ Ċ package Ġorg . jetbrains . kotlin . gradle Ċ Ċ import Ġorg . gradle . util . Gradle Version Ċ import Ġorg . jetbrains . kotlin . gradle . internal . build . metrics . Gradle Build Metrics Data Ċ import Ġorg . jetbrains . kotlin . gradle . report . Build Report Type Ċ import Ġorg . jetbrains . kotlin . gradle . test base .* Ċ import Ġorg . junit . jupiter . api . DisplayName Ċ import Ġjava . io . Object InputStream Ċ import Ġkotlin . test . assertEquals Ċ import Ġkotlin . test . assertNotNull Ċ import Ġkotlin . test . assertTrue Ċ Ċ @ DisplayName (" Build Ġreports ") Ċ @ Jvm Gradle Plugin Tests Ċ class ĠBuild Reports IT Ġ: ĠK GP Base Test () Ġ{ ĊĠĠĠ Ġoverride Ġval Ġdefault Build Options : ĠBuild Options ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġsuper . default Build Options . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuild Report Ġ= ĠlistOf ( Build Report Type . FILE ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ DisplayName (" Build Ġreport Ġis Ġcreated ") ĊĠĠĠ Ġ@ Gradle Test ĊĠĠĠ Ġfun Ġtest Build Report S moke Test ( gradle Version : ĠGradle Version ) Ġ{ ĊĠĠĠĠĠĠĠ Ġproject (" simple Project ", Ġgradle Version ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuild (" assemble ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert Output Contains (" Kotlin Ġbuild Ġreport Ġis Ġwritten Ġto ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuild (" clean ", Ġ" assemble ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert Output Contains (" Kotlin Ġbuild Ġreport Ġis Ġwritten Ġto ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ DisplayName (" Build Ġreport Ġoutput Ġproperty Ġaccepts Ġonly Ġcertain Ġvalues ") ĊĠĠĠ Ġ@ Gradle Test ĊĠĠĠ Ġfun Ġtest Build Report Output Property ( gradle Version : ĠGradle Version ) Ġ{ ĊĠĠĠĠĠĠĠ Ġproject (" simple Project ", Ġgradle Version ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuild And Fail (" assemble ", Ġ"- P kotlin . build . report . output = file , invalid ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert Output Contains (" Unknown Ġoutput Ġtype :") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ DisplayName (" Build Ġmetrics Ġproduces Ġvalid Ġreport ") ĊĠĠĠ Ġ@ Gradle Test ĊĠĠĠ Ġfun Ġtest Build Metrics S moke Test ( gradle Version : ĠGradle Version ) Ġ{ ĊĠĠĠĠĠĠĠ Ġproject (" simple Project ", Ġgradle Version ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuild (" assemble ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert Output Contains (" Kotlin Ġbuild Ġreport Ġis Ġwritten Ġto ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreport Folder Ġ= Ġproject Path . resolve (" build / reports / kotlin - build "). to File () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreports Ġ= Ġreport Folder . list Files () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertNotNull ( reports ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġreports . size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreport Ġ= Ġreports [ 0 ]. read Text () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Should Ġcontains Ġbuild Ġmetrics Ġfor Ġall Ġcompile Ġkotlin Ġtasks ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue Ġ{ Ġreport . contains (" Time Ġmetrics :") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue Ġ{ Ġreport . contains (" Run Ġcompilation :") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue Ġ{ Ġreport . contains (" Incremental Ġcompilation Ġin Ġdaemon :") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue Ġ{ Ġreport . contains (" Size Ġmetrics :") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue Ġ{ Ġreport . contains (" Total Ġsize Ġof Ġthe Ġcache Ġdirectory :") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue Ġ{ Ġreport . contains (" Total Ġcompiler Ġiteration :") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue Ġ{ Ġreport . contains (" ABI Ġsnapshot Ġsize :") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// for Ġnon - incremental Ġbuilds ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue Ġ{ Ġreport . contains (" Build Ġattributes :") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue Ġ{ Ġreport . contains (" RE BUILD _ REASON :") Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ DisplayName (" Compiler Ġbuild Ġmetrics Ġreport Ġis Ġproduced ") ĊĠĠĠ Ġ@ Gradle Test ĊĠĠĠ Ġfun Ġtest Compiler Build Metrics S moke Test ( gradle Version : ĠGradle Version ) Ġ{ ĊĠĠĠĠĠĠĠ Ġproject (" simple Project ", Ġgradle Version ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuild (" assemble ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert Output Contains (" Kotlin Ġbuild Ġreport Ġis Ġwritten Ġto ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreport Folder Ġ= Ġproject Path . resolve (" build / reports / kotlin - build "). to File () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreports Ġ= Ġreport Folder . list Files () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertNotNull ( reports ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġreports . size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreport Ġ= Ġreports [ 0 ]. read Text () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue Ġ{ Ġreport . contains (" Compiler Ġcode Ġanalysis :") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue Ġ{ Ġreport . contains (" Compiler Ġcode Ġgeneration :") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue Ġ{ Ġreport . contains (" Compiler Ġinitialization Ġtime :") Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ DisplayName ("") ĊĠĠĠ Ġ@ Gradle Test ĊĠĠĠ Ġfun Ġtest Single Build Metrics File S moke ( gradle Version : ĠGradle Version ) Ġ{ ĊĠĠĠĠĠĠĠ Ġproject (" simple Project ", Ġgradle Version ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmetrics File Ġ= Ġproject Path . resolve (" metrics . bin "). to File () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuild ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" compile Kotlin ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"- P kotlin . internal . single . build . metrics . file =${ metrics File . absolute Path }" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue Ġ{ Ġmetrics File . exists () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġtest Ġwhether Ġwe Ġcan Ġdeserialize Ġdata Ġfrom Ġthe Ġfile ĊĠĠĠĠĠĠĠĠĠĠĠ ĠObject InputStream ( metrics File . inputStream (). buffered ()). use Ġ{ Ġinput Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput . read Object () Ġas ĠGradle Build Metrics Data ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }