/* Ċ Ġ* ĠCopyright Ġ 2 0 1 0 - 2 0 1 4 ĠJetBrains Ġs . r . o . Ċ Ġ* Ċ Ġ* Ġ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 Ġorg . jetbrains . jet . plugin . code Insight Ċ Ċ import Ġjava . io . File Ċ import Ġorg . jetbrains . jet . In Text Directives Utils Ċ import Ġcom . intellij . openapi . util . io . File Util Ċ import Ġcom . intellij . code Inspection . Local Inspection Tool Ċ import Ġcom . intellij . test Framework . fixtures . Light Code Insight Fixture TestCase Ċ import Ġcom . intellij . test Framework . Light Project Descriptor Ċ import Ġorg . jetbrains . jet . plugin . Jet Light Project Descriptor Ċ import Ġcom . intellij . code Inspection . ex . Local Inspection Tool Wrapper Ċ import Ġcom . intellij . analysis . Analysis Scope Ċ import Ġcom . intellij . code Inspection . ex . Inspection Manager Ex Ċ import Ġcom . intellij . test Framework . Inspection TestUtil Ċ import Ġcom . intellij . code Inspection . Inspection Manager Ċ import Ġcom . intellij . test Framework . fixtures . impl . Code Insight TestFixture Impl Ċ import Ġorg . jetbrains . jet . Jet TestCase Builder Ċ import Ġorg . jetbrains . jet . testing . Config Library Util Ċ import Ġcom . intellij . test Framework . Ide a TestUtil Ċ import Ġcom . intellij . openapi . project Roots . Java Sdk Ċ import Ġcom . intellij . openapi . project Roots . Sdk Ċ import Ġorg . apache . commons . lang . System Utils ; Ċ Ċ public Ġabstract Ġclass ĠAbstract Jet Inspection Test : ĠLight Code Insight Fixture TestCase () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġget Project Descriptor (): ĠLight Project Descriptor Ġ= ĠJet Light Project Descriptor . INSTANCE ĊĊĠĠĠ Ġprotected Ġfun Ġdo Test ( path : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġoptions File Ġ= ĠFile ( path ) ĊĠĠĠĠĠĠĠ Ġval Ġoptions Ġ= ĠFile Util . load File ( options File , Ġtrue ) ĊĊĠĠĠĠĠĠĠ Ġval Ġinspection Class Ġ= ĠClass . forName ( In Text Directives Utils . find String With Prefixes ( options , Ġ"// ĠIN SPE CTION _ CLASS : Ġ") !! ) ĊĠĠĠĠĠĠĠ Ġval Ġtool Wrapper Ġ= ĠLocal Inspection Tool Wrapper ( inspection Class . newInstance () Ġas ĠLocal Inspection Tool ) ĊĊĠĠĠĠĠĠĠ Ġval Ġins pe ctions Test Dir Ġ= Ġoptions File . getParent File () !! ĊĠĠĠĠĠĠĠ Ġval Ġsrc Dir Ġ= Ġins pe ctions Test Dir . getParent File () !! ĊĊĠĠĠĠĠĠĠ Ġwith ( my Fixture ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset TestData Path ("${ Jet TestCase Builder . get Home Directory () }/ $ src Dir ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpsi Files Ġ= Ġsrc Dir ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. list Files Ġ{ Ġit . getName (). endsWith (". kt ") Ġ} !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext Ġ= ĠFile Util . load File ( file , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Text Ġ= Ġif Ġ( text . startsWith (" package ")) Ġtext Ġelse Ġ" package Ġ${ file . getName (). trim Trailing (". kt ") }; $ text " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfigure By Text ( file . getName (), Ġfile Text ) !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis With Runtime Ġ= Ġpsi Files . any ({ Ġfile Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIn Text Directives Utils . find String With Prefixes ( file . getText (), Ġ"// ĠWITH _ RUNTIME ") Ġ!= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is With Runtime ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfig Library Util . configure Kotlin Runtime ( my Fixture . getModule (), Ġget Full Java JDK ()); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġscope Ġ= ĠAnalysis Scope ( getProject (), Ġpsi Files . map Ġ{ Ġit . get Virtual File () !! Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscope . invalidate () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinspection Manager Ġ= Ġ( Inspection Manager . getInstance ( getProject ()) Ġas ĠIns pection Manager Ex ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġglobal Context Ġ= ĠCode Insight TestFixture Impl . create Global Context For Tool ( scope , Ġget Project (), Ġinspection Manager , Ġtool Wrapper ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIns pection TestUtil . run Tool ( tool Wrapper , Ġscope , Ġglobal Context , Ġinspection Manager ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIns pection TestUtil . compare Tool Results ( global Context , Ġtool Wrapper , Ġfalse , Ġins pe ctions Test Dir . getPath ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is With Runtime ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfig Library Util . un Configure Kotlin Runtime ( my Fixture . getModule (), ĠIde a TestUtil . getMock J dk 1 7 ()); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġget Full Java JDK (): ĠS dk Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġjava Path Ġ= ĠcheckNotNull ( System Utils . get Java Home ()?. getAbsolutePath (), Ġ" JDK ĠPath Ġmust Ġnot Ġbe Ġnull ") ĊĠĠĠĠĠĠĠ Ġval Ġj dk Ġ= ĠJava Sdk . getInstance ()?. create J dk (" JDK ", Ġjava Path ); ĊĠĠĠĠĠĠĠ Ġreturn ĠcheckNotNull ( jdk , Ġ" Could Ġnot Ġobtain ĠJDK Ġinstance ") ĊĠĠĠ Ġ} Ċ } Ċ