/* Ċ Ġ* Ġ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 . api . internal . project . Project Internal Ċ import Ġorg . jetbrains . kotlin . gradle . internal . K apt 3 Gradle Sub plugin Ċ import Ġorg . jetbrains . kotlin . gradle . internal . K apt Without Kotlin c Task Ċ import Ġorg . jetbrains . kotlin . gradle . mpp . build Project Ċ import Ġorg . jetbrains . kotlin . gradle . plugin . Kotlin Base Api Plugin Ċ import Ġorg . jetbrains . kotlin . gradle . plugin . Kotlin Jvm Factory Ċ import Ġorg . jetbrains . kotlin . gradle . tasks . K apt Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Rule Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . rules . Temporary Folder Ċ import Ġkotlin . test . assertEquals Ċ Ċ class ĠK apt Api Test Ġ{ ĊĊĠĠĠ Ġ@ get : Rule ĊĠĠĠ Ġval Ġtmp Dir Ġ= ĠTemporary Folder () ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġproject : ĠProject Internal ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġplugin : ĠKotlin Jvm Factory ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTASK _ NAME Ġ= Ġ" k apt " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠGENER ATE _ ST UB S Ġ= Ġ" k apt Generate Stub s " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun ĠsetUp Project () Ġ{ ĊĠĠĠĠĠĠĠ Ġproject Ġ= Ġbuild Project Ġ{} ĊĠĠĠĠĠĠĠ Ġplugin Ġ= Ġproject . plugins . apply ( Kotlin Base Api Plugin :: class . java ) ĊĠĠĠĠĠĠĠ Ġproject . configurations . create ( K apt 3 Gradle Sub plugin . K AP T _ WORK ER _ DEPEND ENCI ES _ CONFIGURATION _ NAME ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Task Name () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtask Ġ= Ġconfigure K apt Ġ{} ĊĠĠĠĠĠĠĠ ĠassertEquals ( TASK _ NAME , Ġtask . name ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Sources () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsource Path Ġ= Ġtmp Dir . new Folder (). resolve (" foo . kt "). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . createNew File () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġtask Ġ= Ġconfigure K apt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsource . from ( source Path ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals ( set Of ( source Path ), Ġtask . source . files ) ĊĊĠĠĠĠĠĠĠ Ġval Ġsources Dir Ġ= Ġtmp Dir . new Folder (). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . resolve (" a . kt "). createNew File () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . resolve (" b . kt "). createNew File () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtask . source . from ( sources Dir ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( set Of ( source Path , Ġsources Dir ), Ġtask . source . files ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest K apt Classpath () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġk apt Classpath Ġ= Ġtmp Dir . new Folder () ĊĠĠĠĠĠĠĠ Ġval Ġexternal Classpath Ġ= Ġtmp Dir . new Folder () ĊĠĠĠĠĠĠĠ Ġval Ġconfiguration Names Ġ= ĠlistOf (" a ", Ġ" b ", Ġ" c ") ĊĠĠĠĠĠĠĠ Ġval Ġtask Ġ= Ġconfigure K apt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . k apt Classpath . from ( k apt Classpath ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġk apt External Classpath . from ( external Classpath ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġk apt Classpath Configuration Names . set ( configuration Names ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( set Of ( k apt Classpath ), Ġtask . k apt Classpath . files ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( set Of ( external Classpath ), Ġtask . k apt External Classpath . files ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( configuration Names , Ġtask . k apt Classpath Configuration Names . get ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest K apt Outputs () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinc A pt Cache Ġ= Ġtmp Dir . new Folder () ĊĠĠĠĠĠĠĠ Ġval Ġclasses Dir Ġ= Ġtmp Dir . new Folder () ĊĠĠĠĠĠĠĠ Ġval Ġdestination Dir Ġ= Ġtmp Dir . new Folder () ĊĠĠĠĠĠĠĠ Ġval Ġgenerated Kotlin Sources Ġ= Ġtmp Dir . new Folder () ĊĊĠĠĠĠĠĠĠ Ġval Ġtask Ġ= Ġconfigure K apt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . inc A pt Cache . file Value ( inc A pt Cache ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . classes Dir . file Value ( classes Dir ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . destination Dir . file Value ( destination Dir ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkotlin Sources Destination Dir . file Value ( generated Kotlin Sources ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( inc A pt Cache , Ġtask . inc A pt Cache . get (). as File ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( classes Dir , Ġtask . classes Dir . get (). as File ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( destination Dir , Ġtask . destination Dir . get (). as File ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( generated Kotlin Sources , Ġtask . kotlin Sources Destination Dir . get (). as File ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Classpath () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcompiled Sources Ġ= Ġtmp Dir . new Folder () ĊĠĠĠĠĠĠĠ Ġval Ġclasspath Ġ= Ġtmp Dir . new Folder () ĊĠĠĠĠĠĠĠ Ġval Ġinclude Compile Classpath Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġval Ġtask Ġ= Ġconfigure K apt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . compiled Sources . from ( compiled Sources ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . classpath . from ( classpath ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . include Compile Classpath . set ( include Compile Classpath ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( set Of ( compiled Sources ), Ġtask . compiled Sources . files ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( set Of ( classpath ), Ġtask . classpath . files ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( include Compile Classpath , Ġtask . include Compile Classpath . get ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Options () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsource Compatibility Ġ= Ġ" 1 1 " ĊĠĠĠĠĠĠĠ Ġval Ġadd J dk Classes To Missing Classpath Snapshot Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ Ġval Ġtask Ġ= Ġconfigure K apt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Java Source Compatibility . set ( source Compatibility ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd J dk Classes To Classpath . set ( add J dk Classes To Missing Classpath Snapshot ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( source Compatibility , Ġtask . default Java Source Compatibility . get ()) ĊĠĠĠĠĠĠĠ ĠassertEquals ( add J dk Classes To Missing Classpath Snapshot , Ġtask . add J dk Classes To Classpath . get ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest K apt Extension () Ġ{ ĊĠĠĠĠĠĠĠ Ġplugin . k apt Extension . use Build Cache Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġplugin . k apt Extension . include Compile Classpath Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ Ġval Ġtask Ġ= Ġconfigure K apt Ġ{} ĊĠĠĠĠĠĠĠ ĠassertEquals ( false , Ġtask . use Build Cache ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( true , Ġtask . include Compile Classpath . get ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Generate Stub s () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtask Ġ= Ġplugin . register K apt Generate Stub s Task ( GENER ATE _ ST UB S ). get () ĊĠĠĠĠĠĠĠ ĠassertEquals ( GENER ATE _ ST UB S , Ġtask . name ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Generate Stub s Options () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstub s Dir Ġ= Ġtmp Dir . new Folder () ĊĠĠĠĠĠĠĠ Ġval Ġk apt Classpath Ġ= Ġset Of ( tmp Dir . new Folder ()) ĊĠĠĠĠĠĠĠ Ġval Ġtask Ġ= Ġplugin . register K apt Generate Stub s Task ( GENER ATE _ ST UB S ). let Ġ{ Ġprovider Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprovider . configure Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . stubs Dir . file Value ( stubs Dir ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . k apt Classpath . from ( k apt Classpath ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprovider . get () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals ( stubs Dir , Ġtask . stubs Dir . get (). as File ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( k apt Classpath , Ġtask . k apt Classpath . files ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġconfigure K apt ( config Action : ĠK apt . () Ġ-> ĠUnit ): ĠK apt Without Kotlin c Task Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprovider Ġ= Ġplugin . register K apt Task ( TASK _ NAME ) ĊĠĠĠĠĠĠĠ Ġprovider . configure ( config Action ) ĊĠĠĠĠĠĠĠ Ġreturn Ġprovider . get () Ġas ĠK apt Without Kotlin c Task ĊĠĠĠ Ġ} Ċ }