/* Ċ Ġ* ĠCopyright Ġ 2 0 1 0 - 2 0 1 9 ĠJetBrains Ġs . r . o . Ġ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 . idea . filters Ċ Ċ import Ġcom . intellij . execution . filters . File Hyper link Info Ċ import Ġcom . intellij . openapi . file Editor . File Document Manager Ċ import Ġcom . intellij . openapi . vfs . Virtual File Ċ import Ġcom . intellij . psi . search . Global Search Scope Ċ import Ġcom . intellij . test Framework . Light Project Descriptor Ċ import Ġorg . jetbrains . kotlin . idea . refactor ing . to Virtual File Ċ import Ġorg . jetbrains . kotlin . idea . test . Kotlin Light Code Insight Fixture TestCase Ċ import Ġorg . junit . Assert Ċ import Ġjava . io . File Ċ Ċ private Ġdata Ġclass ĠS uffix Option ( val Ġsuffix : ĠString , Ġval Ġexpected Line : ĠInt , Ġval Ġexpected Column : ĠInt ) Ċ Ċ class ĠKotlin Exception Filter Test Ġ: ĠKotlin Light Code Insight Fixture TestCase () Ġ{ ĊĠĠĠ Ġprivate Ġval Ġmy Suffix Plug Ġ= Ġ"< suffix >" ĊĠĠĠ Ġprivate Ġval Ġmy Path Plug Ġ= Ġ"< path >" ĊĊĠĠĠ Ġprivate Ġval Ġmy Templates Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠ Ġ"\ tat Ġ 1 ĠĠ Ġmain . k exe \ t \ t Ġ 0 x 0 0 0 0 0 0 0 1 0 d 7 cdb 4 c Ġk fun : package . function ( kotlin . Int ) Ġ+ Ġ 1 0 8 Ġ($ my Path Plug :$ my Suffix Plug )\ n " ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġvar Ġmy Files Ġ= ĠHashMap < String , ĠVirtual File >() ĊĠĠĠ Ġprivate Ġvar Ġmy Exception Line : ĠString Ġ= Ġ"" ĊĊĠĠĠ Ġprivate Ġval Ġmy Suffix Options Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠ ĠS uffix Option (" 1 0 : 1 ", Ġ 1 0 , Ġ 1 ), ĊĠĠĠĠĠĠĠ ĠS uffix Option (" 1 4 : 1 1 ", Ġ 1 4 , Ġ 1 1 ), ĊĠĠĠĠĠĠĠ ĠS uffix Option ("< unknown >", Ġ 0 , Ġ 0 ) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġfun ĠerrorMessage ( detail : ĠString ) Ġ= Ġ" Failed Ġto Ġparse ĠKotlin ĠNative Ġexception Ġ'$ my Exception Line ': Ġ$ detail " ĊĊĠĠĠ Ġoverride Ġfun Ġget Project Descriptor () Ġ= ĠLight Project Descriptor . EMPTY _ PROJECT _ DESCRIPTOR ĊĊĠĠĠ Ġoverride Ġfun Ġget TestData Path () Ġ= Ġ"" ĊĊĠĠĠ Ġoverride Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . setUp () ĊĠĠĠĠĠĠĠ Ġval Ġroot Dir Ġ= ĠFile (" idea / testData / debugger / native Exceptions /") ĊĠĠĠĠĠĠĠ Ġroot Dir . list Files (). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvirtual File Ġ= Ġit . to Virtual File () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( virtual File Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmy Files [ it . absolute Path ] Ġ= Ġvirtual File ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtest Different Locations () Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( template Ġin Ġmy Templates ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( suffix Option Ġin Ġmy Suffix Options ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtemplate With Suffix Ġ= Ġtemplate . replace ( my Suffix Plug , Ġsuffix Option . suffix ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdo Test ( template With Suffix , Ġsuffix Option . expected Line , Ġsuffix Option . expected Column ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdo Test ( template : ĠString , Ġexpected Line : ĠInt , Ġexpected Column : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfilter Ġ= ĠKotlin Exception Filter Factory (). create ( Global Search Scope . all Scope ( project )) ĊĊĠĠĠĠĠĠĠ Ġfor Ġ(( absolute Path , Ġvirtual File ) Ġin Ġmy Files ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmy Exception Line Ġ= Ġtemplate . replace ( my Path Plug , Ġabsolute Path ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfilter Result Ġ= Ġfilter . apply Filter ( my Exception Line , Ġmy Exception Line . length ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertNotNull ( errorMessage (" filename Ġis Ġnot Ġfound Ġby Ġparser "), Ġfilter Result ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Hyper link Info Ġ= Ġfilter Result ?. first Hyper link Info Ġas ĠFile Hyper link Info ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdocument Ġ= ĠFile Document Manager . getInstance (). getDocument ( virtual File ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertNotNull ( errorMessage (" test Ġfile Ġ$ absolute Path Ġcould Ġnot Ġbe Ġfound Ġin Ġrepository "), Ġdocument ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexpected Offset Ġ= Ġdocument !!. getLine Start Offset ( expected Line ) Ġ+ Ġexpected Column ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdescriptor Ġ= Ġfile Hyper link Info . descriptor ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertNotNull ( errorMessage (" found Ġfile Ġhyper link Ġwith Ġnull Ġdescriptor "), Ġdescriptor ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertEquals ( errorMessage (" different Ġfilename Ġparsed "), Ġvirtual File . canonical Path , Ġdescriptor ?. file ?. canonical Path ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertEquals ( errorMessage (" different Ġoffset Ġparsed "), Ġexpected Offset , Ġdescriptor ?. offset ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }