/* Ċ Ġ* ĠCopyright Ġ 2 0 0 0 - 2 0 1 7 Ġ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 Ġcom . jetbrains . python . testing Ċ Ċ import Ġcom . intellij . execution . Executor Ċ import Ġcom . intellij . execution . configurations . Run Profile State Ċ import Ġcom . intellij . execution . configurations . Runtime Configuration Warning Ċ import Ġcom . intellij . execution . runners . Execution Environment Ċ import Ġcom . intellij . openapi . options . Settings Editor Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . openapi . vfs . Local FileSystem Ċ import Ġcom . jetbrains . python . Py Bundle Ċ import Ġcom . jetbrains . python . Py Names Ċ import Ġcom . jetbrains . python . Python Helper Ċ import Ġcom . jetbrains . python . run . target Based Configuration . Py Run Target Variant Ċ Ċ /** Ċ Ġ* Ġunittest Ċ Ġ*/ Ċ Ċ class ĠPy UnitTest Settings Editor ( configuration : ĠPy Abstract Test Configuration ) Ġ: ĊĠ ĠPy Abstract Test Settings Editor ( ĊĠĠĠ ĠPy Test Shared Form . create ( configuration , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPy Test Shared Form . Custom Option ( Py UnitTest Configuration :: pattern . name , ĠPy Run Target Variant . PATH ) ĊĠĠĠ Ġ)) Ċ Ċ class ĠPy UnitTest Execution Environment ( configuration : ĠPy UnitTest Configuration , Ġenvironment : ĠExecution Environment ) Ġ: ĊĠ ĠPy Test Execution Environment < Py UnitTest Configuration >( configuration , Ġenvironment ) Ġ{ ĊĊĠ Ġoverride Ġfun Ġget Runner (): ĠPython Helper Ġ= ĊĠĠĠ Ġ// Ġdifferent Ġrunner Ġis Ġused Ġfor Ġsetup . py ĊĠĠĠ Ġif Ġ( configuration . is Setup Py Based ()) Ġ{ ĊĠĠĠĠĠ ĠPython Helper . SETUP PY ĊĠĠĠ Ġ} ĊĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠ ĠPython Helper . UNIT TEST ĊĠĠĠ Ġ} Ċ Ċ } ĊĊ Ċ class ĠPy UnitTest Configuration ( project : ĠProject , Ġfactory : ĠPy UnitTest Factory ) Ġ: ĊĠ ĠPy Abstract Test Configuration ( project , Ġfactory , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPython Test Configurations Model . get Python s Unit test Name ()) Ġ{ Ġ// ĠB are Ġfunctions Ġnot Ġsupported Ġin Ġunittest : Ġclasses Ġonly ĊĠ Ġ@ Config Field ĊĠ Ġvar Ġpattern : ĠString ? Ġ= Ġnull ĊĊĠ Ġoverride Ġfun ĠgetState ( executor : ĠExecutor , Ġenvironment : ĠExecution Environment ): ĠRun Profile State ? Ġ= ĊĠĠĠ ĠPy UnitTest Execution Environment ( this , Ġenvironment ) ĊĊĠ Ġoverride Ġfun Ġcreate Configuration Editor (): ĠSettings Editor < Py Abstract Test Configuration > Ġ= ĊĠĠĠ ĠPy UnitTest Settings Editor ( this ) ĊĊĠ Ġoverride Ġfun Ġget Custom Raw Arguments String ( for R er un : ĠBoolean ): ĠString Ġ{ ĊĠĠĠ Ġ// ĠPattern Ġcan Ġonly Ġbe Ġused Ġwith Ġfolders Ġ(" all Ġin Ġfolder " Ġin Ġlegacy Ġterms ) ĊĠĠĠ Ġif Ġ((! pattern . isNull OrEmpty ()) Ġ&& Ġtarget . target Type Ġ!= ĠPy Run Target Variant . CUSTOM ) Ġ{ ĊĠĠĠĠĠ Ġval Ġpath Ġ= ĠLocal FileSystem . getInstance (). find File By Path ( target . target ) Ġ?: Ġreturn Ġ"" ĊĠĠĠĠĠ Ġ// Ġ" Pattern " Ġworks Ġonly Ġfor Ġ" discovery " Ġmode Ġand Ġfor Ġ" rer un " Ġwe Ġare Ġusing Ġ" python " Ġtargets Ġ(" concrete " Ġtests ) ĊĠĠĠĠĠ Ġreturn Ġif Ġ( path . isDirectory Ġ&& Ġ! for R er un ) Ġ"- p Ġ$ pattern " Ġelse Ġ"" ĊĠĠĠ Ġ} ĊĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠ Ġreturn Ġ"" ĊĠĠĠ Ġ} ĊĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* Ġ@ return Ġconfiguration Ġshould Ġuse Ġrunner Ġfor Ġsetup . py ĊĠĠ Ġ*/ ĊĠ Ġinternal Ġfun Ġis Setup Py Based (): ĠBoolean Ġ{ ĊĠĠĠ Ġval Ġsetup Py Ġ= Ġtarget . target Type Ġ== ĠPy Run Target Variant . PATH Ġ&& Ġtarget . target . endsWith ( Py Names . SETUP _ DOT _ PY ) ĊĠĠĠ Ġreturn Ġsetup Py ĊĠ Ġ} ĊĊĠ Ġ// Ġsetup . py Ġrunner Ġis Ġnot Ġid - based ĊĠ Ġoverride Ġfun Ġis Id Test Based (): ĠBoolean Ġ= Ġ! is Setup Py Based () ĊĊĠ Ġoverride Ġfun Ġcheck Configuration () Ġ{ ĊĠĠĠ Ġsuper . check Configuration () ĊĠĠĠ Ġif Ġ( target . target Type Ġ== ĠPy Run Target Variant . PATH Ġ&& Ġtarget . target . endsWith (". py ") Ġ&& Ġ! pattern . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠ Ġthrow ĠRuntime Configuration Warning ( Py Bundle . message (" python . testing . pattern . can . only . be . used ")) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġis Framework Installed (): ĠBoolean Ġ= Ġtrue Ġ// Unit test Ġis Ġalways Ġavailable ĊĊĠ Ġ// ĠUnit test Ġdoes Ġnot Ġsupport Ġfilesystem Ġpath . ĠIt Ġneeds Ġq name Ġresol vable Ġagainst Ġroot Ġor Ġworking Ġdirectory ĊĠ Ġoverride Ġfun Ġshould Separ ate Target Path () Ġ= Ġfalse Ċ } Ċ Ċ class ĠPy UnitTest Factory Ġ: ĠPy Abstract Test Factory < Py UnitTest Configuration >() Ġ{ ĊĠ Ġoverride Ġfun Ġcreate Template Configuration ( project : ĠProject ): ĠPy UnitTest Configuration Ġ= ĠPy UnitTest Configuration ( project , Ġthis ) ĊĊĠ Ġoverride Ġfun ĠgetName (): ĠString Ġ= ĠPython Test Configurations Model . get Python s Unit test Name () ĊĊĠ Ġoverride Ġfun ĠgetId (): ĠString Ġ= Ġ" Unit tests " Ċ } Ċ