/* Ċ Ġ* ĠCopyright Ġ 2 0 1 0 - 2 0 2 0 Ġ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 . test . mut es Ċ Ċ import Ġjava . io . File Ċ Ċ class ĠM uted Set ( muted : ĠList < Mut ed Test >) Ġ{ ĊĠĠĠ Ġ// ĠMethod Ġkey Ġ-> ĠSimple Ġclass Ġname Ġ-> ĠList Ġof Ġmut ed Ġtests ĊĠĠĠ Ġprivate Ġval Ġcache : ĠMap < String , ĠMap < String , ĠList < Mut ed Test >>> Ġ= ĊĠĠĠĠĠĠĠ Ġmut ed ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. groupBy Ġ{ Ġit . method Key Ġ} Ġ// ĠMethod Ġkey Ġ-> ĠList Ġof Ġmut ed Ġtests ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Values Ġ{ Ġ(_, Ġtests ) Ġ-> Ġtests . groupBy Ġ{ Ġit . simple ClassName Ġ} Ġ} ĊĊĠĠĠ Ġfun Ġmut ed Test ( test Class : ĠClass <* >, Ġmethod Key : ĠString ): ĠM uted Test ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmut ed Tests Ġ= Ġcache [ method Key ]?. get ( test Class . simple Name ) Ġ?: Ġreturn Ġnull ĊĊĠĠĠĠĠĠĠ Ġreturn Ġmut ed Tests . first OrNull Ġ{ Ġmut ed Test Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Class . canonical Name . endsWith ( muted Test . className Key ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun Ġload Mut ed Set ( files : ĠList < File >): ĠM uted Set Ġ{ ĊĠĠĠ Ġreturn ĠM uted Set ( files . flatMap Ġ{ Ġfile Ġ-> Ġload Mut ed Tests ( file ) Ġ}) Ċ } Ċ Ċ val Ġmut ed Set Ġby Ġlazy Ġ{ ĊĠĠĠ Ġval Ġcurrent Root Dir Ġ= ĠFile ("") ĊĠĠĠ Ġval Ġproject Root Dir Ġ= ĊĠĠĠĠĠĠĠ Ġ( current Root Dir . go Up (" libraries / tools / kotlin - gradle - plugin - integration - tests ") Ġ?: Ġcurrent Root Dir ). absolute File ĊĊĠĠĠ Ġload Mut ed Set ( ĊĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" tests / mute - common . csv ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" tests / mute - platform . csv " ĊĠĠĠĠĠĠĠ Ġ). map Ġ{ ĠFile ( project Root Dir , Ġit ) Ġ} ĊĠĠĠ Ġ) Ċ } Ċ Ċ private Ġtail rec Ġfun ĠFile . go Up ( path : ĠString ): ĠFile ? Ġ{ ĊĠĠĠ Ġif Ġ(! is Absolute ) Ġreturn Ġabsolute File . go Up ( path ) ĊĠĠĠ Ġif Ġ( path . isEmpty ()) Ġreturn Ġthis ĊĠĠĠ Ġval Ġdir Name Ġ= Ġpath . substring After Last ('/') ĊĠĠĠ Ġval Ġparent Path Ġ= Ġpath . substring Before Last ('/', Ġ"") ĊĠĠĠ Ġreturn Ġif Ġ( dir Name . isEmpty () Ġ|| Ġname Ġ== Ġdir Name ) Ġparent File . go Up ( parent Path ) Ġelse Ġnull Ċ }