package Ġio . kot lint est . runner . console Ċ Ċ import Ġcom . github . aj alt . m ord ant . Term Colors Ċ import Ġio . kot lint est . String Tag Ċ import Ġio . kot lint est . Tag Ċ import Ġnet . sourceforge . arg parse 4 j . Argument Parsers Ċ import Ġkotlin . system . exit Process Ċ Ċ // Ġthis Ġmain Ġmethod Ġwill Ġlaunch Ġthe ĠKotlin Test Console Runner Ċ fun Ġmain ( args : ĠArray < String >) Ġ{ ĊĊĠ Ġval Ġparser Ġ= ĠArgument Parsers . new For (" kot lint est "). build (). default Help ( true ). description (" Kotlin Test Ġconsole Ġrunner ") ĊĠ Ġparser . add Argument ("-- test "). help (" Specify Ġthe Ġtest Ġname Ġto Ġexecute Ġ( can Ġbe Ġa Ġleaf Ġtest Ġor Ġa Ġcontainer Ġtest )") ĊĠ Ġparser . add Argument ("-- spec "). help (" Specify Ġthe Ġfully Ġqualified Ġname Ġof Ġthe Ġspec Ġclass Ġwhich Ġcontains Ġthe Ġtest Ġto Ġexecute ") ĊĠ Ġparser . add Argument ("-- writer "). help (" Specify Ġthe Ġname Ġof Ġconsole Ġwriter Ġimplementation . ĠDefaults ĠTeam City ") ĊĠ Ġparser . add Argument ("-- source "). help (" Optional Ġstring Ġdescribing Ġhow Ġthe Ġlauncher Ġwas Ġinvoked ") ĊĠ Ġparser . add Argument ("-- slow - duration "). help (" Optional Ġtime Ġin Ġmillis Ġcontrolling Ġwhen Ġa Ġtest Ġis Ġmarked Ġas Ġslow ") ĊĠ Ġparser . add Argument ("-- very - slow - duration "). help (" Optional Ġtime Ġin Ġmillis Ġcontrolling Ġwhen Ġa Ġtest Ġis Ġmarked Ġas Ġvery Ġslow ") ĊĠ Ġ// Ġparser . add Argument ("-- max - test - duration "). help (" Optional Ġtime Ġin Ġmillis Ġcontrolling Ġwhen Ġthe Ġduration Ġof Ġa Ġtest Ġshould Ġbe Ġmarked Ġas Ġan Ġerror ") ĊĠ Ġparser . add Argument ("-- include - tags "). help (" Optional Ġstring Ġsetting Ġwhich Ġtags Ġto Ġbe Ġincluded ") ĊĠ Ġparser . add Argument ("-- exclude - tags "). help (" Optional Ġstring Ġsetting Ġwhich Ġtags Ġto Ġbe Ġexcluded ") ĊĠ Ġval Ġns Ġ= Ġparser . parse Args ( args ) ĊĊĠ Ġval Ġwriter Class : ĠString ? Ġ= Ġns . getString (" writer ") ĊĠ Ġval Ġspec : ĠString ? Ġ= Ġns . getString (" spec ") ĊĠ Ġval Ġtest : ĠString ? Ġ= Ġns . getString (" test ") ĊĠ Ġval Ġsource : ĠString ? Ġ= Ġns . getString (" source ") ĊĠ Ġval Ġinclude Tags : ĠSet < Tag > Ġ= Ġns . getString (" include - tags ") ?. split (',') ?. map Ġ{ ĠString Tag ( it ) Ġ} ?. toSet () Ġ?: Ġempty Set () ĊĠ Ġval Ġexclude Tags : ĠSet < Tag > Ġ= Ġns . getString (" exclude - tags ") ?. split (',') ?. map Ġ{ ĠString Tag ( it ) Ġ} ?. toSet () Ġ?: Ġempty Set () ĊĠ Ġval Ġslow Duration : ĠInt Ġ= Ġns . getString (" slow - duration ") ?. toInt () Ġ?: Ġ 1 0 0 0 ĊĠ Ġval Ġvery Slow Duration : ĠInt Ġ= Ġns . getString (" very - slow - duration ") ?. toInt () Ġ?: Ġ 3 0 0 0 ĊĠ Ġ// Ġval Ġmax Test Duration : ĠInt Ġ= Ġns . getString (" max - test - duration ") ?. toInt () Ġ?: Ġ 0 ĊĊĠ Ġval Ġterm Ġ= Ġif Ġ( source Ġ== Ġ" kot lint est - gradle - plugin ") ĠTerm Colors ( Term Colors . Level . ANSI 2 5 6 ) Ġelse ĠTerm Colors () ĊĊĠ Ġval Ġwriter Ġ= Ġwhen Ġ( writer Class ) Ġ{ ĊĠĠĠ Ġ" mocha " Ġ-> ĠMo cha Console Writer ( term , Ġslow Duration , Ġvery Slow Duration ) ĊĠĠĠ Ġ" basic " Ġ-> ĠBasic Console Writer () ĊĠĠĠ Ġelse Ġ-> ĠTeam City Console Writer () ĊĠ Ġ} ĊĊĠ Ġval Ġrunner Ġ= ĠKotlin Test Console Runner ( writer ) ĊĠ Ġrunner . execute ( spec , Ġtest , Ġinclude Tags , Ġexclude Tags ) ĊĊĠ Ġ// Ġthere Ġcould Ġbe Ġthreads Ġin Ġthe Ġbackground Ġthat Ġwill Ġstop Ġthe Ġlauncher Ġshut ting Ġdown ĊĠ Ġ// Ġfor Ġexample Ġif Ġa Ġtest Ġkeeps Ġa Ġthread Ġrunning ĊĠ Ġ// Ġso Ġwe Ġmust Ġforce Ġthe Ġexit ĊĠ Ġif Ġ( writer . has Errors ()) Ġexit Process (- 1 ) Ġelse Ġexit Process ( 0 ) Ċ } Ċ Ċ // Ġreturns Ġa Ġconsole Ġwriter Ġappropriate Ġfor Ġthe Ġenvironment Ġwhen Ġnone Ġwas Ġspecified Ċ // Ġattempts Ġto Ġfind Ġthe Ġidea _ rt . jar Ġand Ġif Ġit Ġexists , Ġwe Ġassume Ġwe Ġare Ġrunning Ġfrom Ġint ellij , Ġand Ġthus Ċ // Ġchange Ġour Ġoutput Ġto Ġbe Ġan ĠIDEA Ġcompatible Ġteam Ġcity Ġwriter Ċ // Ġotherwise Ġwe Ġuse Ġthe Ġdefault Ġcolour Ġwriter Ċ fun Ġdefault Writer (): ĠConsole Writer Ġ= Ġtry Ġ{ ĊĠ ĠClass . forName (" com . intellij . rt . execution . CommandLine Wrapper ") ĊĠ ĠTeam City Console Writer () Ċ } Ġcatch Ġ(_ : ĠClass NotFoundException ) Ġ{ ĊĠ ĠBasic Console Writer () Ċ } Ċ