/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 1 . ĠChristian ĠGr ach Ġ< ch rist ian . gr ach @ cm g apps . com > Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . cm g apps . kotlin Ċ Ċ import Ġcom . tsch uch ort . compile testing . Kotlin Compilation Ċ import Ġcom . tsch uch ort . compile testing . SourceFile Ċ import Ġorg . hamcrest . Matcher Assert . assertThat Ċ import Ġorg . hamcrest . core . Is .` is ` Ċ import Ġorg . intellij . lang . annotations . Language Ċ import Ġorg . junit . jupiter . api . Test Ċ Ċ class ĠLog Tag Processor Integration Should Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` generate Ġextension Ġfor Ġkotlin Ġclass `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠSource File . kotlin ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" class . kt ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġc mg apps . test ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ com . cm g apps . Log Tag ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclass ĠTest Class ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ). compile () ĊĊĠĠĠĠĠĠĠ Ġ@ Language (" kotlin ") ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠ Ġ@ file : Suppress ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Spell Checking Inspection ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Red undant Visibility Modifier ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" unused " ĊĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠ Ġpackage Ġc mg apps . test ĊĊĠĠĠĠĠĠĠĠĠ Ġimport Ġkotlin . String ĊĠĠĠĠĠĠĠĠĠ Ġimport Ġkotlin . Suppress ĊĊĠĠĠĠĠĠĠĠĠ Ġpublic Ġval ĠTest Class . LOG _ TAG : ĠString ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinline Ġget () Ġ= Ġ" TestClass " ĊĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠ ĠassertThat ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . sources Generated By Annotation Processor . find Ġ{ Ġit . name Ġ== Ġ" TestClass Log Tag . kt " Ġ} ?. read Text (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ` is `( expected ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` not Ġgenerate Ġfor Ġprivate Ġclass `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠSource File . kotlin ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" object . kt ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġc mg apps . test ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ com . cm g apps . Log Tag ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġclass ĠTest Class ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ). compile () ĊĊĠĠĠĠĠĠĠ ĠassertThat ( result . exit Code , Ġ` is `( Kotlin Compilation . ExitCode . COMPI L ATION _ ERROR )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` generate Ġextension Ġfor Ġobject `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠSource File . kotlin ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" file 1 . kt ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġc mg apps . test ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ com . cm g apps . Log Tag ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobject ĠTest Object ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ). compile () ĊĊĠĠĠĠĠĠĠ Ġ@ Language (" kotlin ") ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠ Ġ@ file : Suppress ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Spell Checking Inspection ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Red undant Visibility Modifier ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" unused " ĊĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠ Ġpackage Ġc mg apps . test ĊĊĠĠĠĠĠĠĠĠĠ Ġimport Ġkotlin . String ĊĠĠĠĠĠĠĠĠĠ Ġimport Ġkotlin . Suppress ĊĊĠĠĠĠĠĠĠĠĠ Ġpublic Ġval ĠTest Object . LOG _ TAG : ĠString ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinline Ġget () Ġ= Ġ" Test Object " ĊĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠ ĠassertThat ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . sources Generated By Annotation Processor . find Ġ{ Ġit . name Ġ== Ġ" Test Object Log Tag . kt " Ġ} ?. read Text (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ` is `( expected ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` generate Ġclass Ġfor Ġjava Ġclass `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠclassName Ġ= Ġ" Test Java " ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠSource File . java ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ className . java ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġc mg apps . test ; ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ com . cm g apps . Log Tag ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġclass Ġ$ className {} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ). compile () ĊĊĠĠĠĠĠĠĠ Ġ@ Language (" Java ") ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġc mg apps . test ; ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġjava . lang . String ; ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġclass ĠTest Java Log Tag Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatic Ġfinal ĠString ĠLOG _ TAG Ġ= Ġ" Test Java "; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠĠĠĠĠ ĠassertThat ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . sources Generated By Annotation Processor . find Ġ{ Ġit . name Ġ== Ġ" Test Java Log Tag . java " Ġ} ?. read Text (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ` is `( expected ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` use Ġcustom Ġlog tag Ġfor Ġkotlin Ġclass `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠSource File . kotlin ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" class . kt ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġc mg apps . test ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ com . cm g apps . Log Tag (" My Custom Tag ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclass ĠTest Class ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ). compile () ĊĊĠĠĠĠĠĠĠ Ġ@ Language (" kotlin ") ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠ Ġ@ file : Suppress ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Spell Checking Inspection ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Red undant Visibility Modifier ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" unused " ĊĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠ Ġpackage Ġc mg apps . test ĊĊĠĠĠĠĠĠĠĠĠ Ġimport Ġkotlin . String ĊĠĠĠĠĠĠĠĠĠ Ġimport Ġkotlin . Suppress ĊĊĠĠĠĠĠĠĠĠĠ Ġpublic Ġval ĠTest Class . LOG _ TAG : ĠString ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinline Ġget () Ġ= Ġ" My Custom Tag " ĊĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠ ĠassertThat ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . sources Generated By Annotation Processor . find Ġ{ Ġit . name Ġ== Ġ" TestClass Log Tag . kt " Ġ} ?. read Text (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ` is `( expected ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` use Ġcustom Ġtag Ġfor Ġjava Ġclass `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠclassName Ġ= Ġ" Test Java " ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠSource File . java ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ className . java ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġc mg apps . test ; ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ com . cm g apps . Log Tag (" My Custom Tag ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġclass Ġ$ className {} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ). compile () ĊĊĠĠĠĠĠĠĠ Ġ@ Language (" Java ") ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġc mg apps . test ; ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġjava . lang . String ; ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġclass ĠTest Java Log Tag Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatic Ġfinal ĠString ĠLOG _ TAG Ġ= Ġ" My Custom Tag "; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠĠĠĠĠ ĠassertThat ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . sources Generated By Annotation Processor . find Ġ{ Ġit . name Ġ== Ġ" Test Java Log Tag . java " Ġ} ?. read Text (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ` is `( expected ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠSource File . compile () Ġ= ĠKotlin Compilation (). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġsources Ġ= ĠlistOf ( this @ compile ) ĊĠĠĠĠĠĠĠ Ġannotation Processors Ġ= ĠlistOf ( Log Tag Processor ()) ĊĠĠĠĠĠĠĠ Ġinherit Class Path Ġ= Ġtrue ĊĠĠĠ Ġ}. compile () Ċ } Ċ