JFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3RbrJFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3RbrB =_D,@sdZddlmZddlZddlZddlZddlZddlZddlZddl Z y ddl Z Wne k rldZ YnXy ddl Z Wne k rdZ YnXddl Z ddlmZddlmZddlmZddlmZddlmZdd lmZdd lmZdd lmZdd lmZd ZdZe pdZe o*eZej ej!e"Z#e j$j%Z%d$ddZ&GdddZ'Gddde j(Z)Gddde j*Z+Gddde+Z,d%ddZ-ddZ.dd Z/d!d"Z0e1d#kre0dS)&aA Unit test runner, providing new features on top of unittest module: - colourized output - parallel run (UNIX only) - print failures/tracebacks on CTRL+C - re-run failed tests only (make test-failed) Invocation examples: - make test - make test-failed Parallel: - make test-parallel - make test-process ARGS=--parallel )print_functionN)hilite) print_color)term_supports_colors)super) CI_TESTING)import_module_by_path) print_sysinfo) reap_children) safe_rmpathz.failed-tests.txtFcCsB|dkr|dkrtjntj}tr2t||||dn t||ddS)Nred)boldfile)r)sysstderrstdout USE_COLORSrprint)msgcolorrrrF/opt/alt/python37/lib64/python3.7/site-packages/psutil/tests/runner.pycprint>s rc@sXeZdZeZdgZdejkr,edddgddZ dd Z d d Z d d Z ddZ dS) TestLoaderztest_memleaks.pyZWHEELHOUSE_UPLOADER_USERNAMEz test_osx.pyz test_linux.pyz test_posix.pycsfddtjDS)Ncs:g|]2}|dr|dr|jkrtjj|qS)Ztest_z.py) startswithendswith skip_filesospathjointestdir).0x)selfrr Osz,TestLoader._get_testmods..)rlistdirr")r%r)r%r _get_testmodsNs zTestLoader._get_testmodsccsVxP|D]D}t|}x6t|D]*}t||}t|tr t|tjr |Vq Wq WdS)zgIterate over all test files in this directory and return all TestCase classes in them. N) r(rdirgetattr isinstancetype issubclassunittestTestCase)r%r modnameobjrrr_iter_testmod_classesTs   z TestLoader._iter_testmod_classescCs0t}x"|D]}t|}||qW|S)N)r. TestSuiter3loadTestsFromTestCaseaddTest)r%suiter2testrrrall`s zTestLoader.allc Csbt}tjts|Sttd}|}WdQRXx"|D]}tj |}| |q@W|S)Nrt) r.r4rr isfileFAILED_TESTS_FNAMEopenreadsplitdefaultTestLoaderloadTestsFromNamer6)r%r7fnamesnr8rrr last_failedgs    zTestLoader.last_failedcCs.|dr"tjtj|d}tj|S)Nz.pyr)rrr splitextbasenamer.r@rA)r%r1rrr from_namess zTestLoader.from_nameN)__name__ __module__ __qualname__HEREr"rrenvironextendr(r3r9rErHrrrrrGs   rcs<eZdZddZddZddZddZfd d ZZS) ColouredResultcCstj||tdddS)NZOKgreen)r. TestResult addSuccessr)r%r8rrrrR{szColouredResult.addSuccesscCs"tj|||tdddddS)NERRORrT)r)r.rQaddErrorr)r%r8errrrrrTszColouredResult.addErrorcCstj|||tdddS)NZFAILr)r.rQ addFailurer)r%r8rUrrrrVszColouredResult.addFailurecCs&tj|||td|ddS)Nz skipped: %sbrown)r.rQaddSkiprstrip)r%r8reasonrrrrXszColouredResult.addSkipcs$t|d|dkd}t||dS)NrrS)r)rrprintErrorList)r%Zflavourerrors) __class__rrr[szColouredResult.printErrorList) rIrJrKrRrTrVrXr[ __classcell__rr)r]rrOys rOcsfeZdZdZerenejZfddZ fddZ ddZ dd Z fd d Z d d ZddZZS)ColouredTextRunnerz A coloured text runner which also prints failed tests on KeyboardInterrupt and save failed tests in a file so that they can be re-run. cstj||t|_dS)N)r__init__set failed_tnames)r%argskwargs)r]rrr`szColouredTextRunner.__init__cst|_|jS)N)r _makeResultresult)r%)r]rrres zColouredTextRunner._makeResultc Cs>|jr:ttd$}x|jD]}||dqWWdQRXdS)Nwt )rbr=r<write)r%rBtnamerrr_write_last_faileds  z%ColouredTextRunner._write_last_failedcCs:|s6x,|j|jD]}|d}|j|qWdS)Nr) wasSuccessfulr\failuresidrbadd)r%rftrjrrr _save_results zColouredTextRunner._save_resultc sVyt|}Wn2ttfk rB|jj}|tdYnX| ||SdS)Nr ) rrunKeyboardInterrupt SystemExitrunnerrf printErrorsrexitrq)r%r7rf)r]rr_runs zColouredTextRunner._runcCsJ|r&tddddtttdn tdddd|tddS) NSUCCESSrPT)rrZFAILEDrr )rr r<rrwrk)r%successrrr_exits zColouredTextRunner._exitcCs||}||dS)N)rxr{rl)r%r7rfrrrrrs zColouredTextRunner.run)rIrJrK__doc__rrOr.TextTestResultZ resultclassr`rerkrqrxr{rrr^rr)r]rr_s    r_c@s,eZdZeddZeddZddZdS)ParallelRunnercs0fdd}tj|tj_tt}t||S)Ncs||}t|j|S)N)atexitregisterclose)fdmodekwdsstream) orig_fdopenrrfdopens  z+ParallelRunner._parallelize..fdopen)rrconcurrencytestZfork_for_testsNWORKERSZConcurrentTestSuite)r7rZforkerr)rr _parallelizes   zParallelRunner._parallelizecCst}t}xv|D]n}|dkr*qn8t|tjrD|jdj}nt|tjrV|}n td|t|ddrz| |q| |qW||fS)Nrzcan't recognize type %rZ _serialrunF) r.r4countTestCasesr+Z_testsr]r/ TypeErrorr*r6)r7serialparallelr8Z test_classrrr _split_suites       zParallelRunner._split_suitecCsX||\}}||}tdtdddt}||}t|}t}tj |dd\}} | r~td| dt t}||} t|} | s| d kr| tt|j|j|jf\} } }tt| j| j| jf\}}}ttd |j| | ||| j|||| f td |j| j|| tf| oH| }||dS) Nz(starting parallel tests using %s workersrPT)rr )timeoutzalive processes %srra= +----------+----------+----------+----------+----------+----------+ | | total | failures | errors | skipped | time | +----------+----------+----------+----------+----------+----------+ | parallel | %3s | %3s | %3s | %3s | %.2fs | +----------+----------+----------+----------+----------+----------+ | serial | %3s | %3s | %3s | %3s | %.2fs | +----------+----------+----------+----------+----------+----------+ z&Ran %s tests in %.3fs using %s workers)rrrrtimerxpsutilZProcesschildrenZ wait_procsr rlrrvmaplenrmr\ZskippedrtextwrapdedentZtestsRunr{)r%r7Z ser_suiteZ par_suiterpparZ par_elapsedZorphansZgonealiveZserZ ser_elapsedZ par_failsZpar_errsZ par_skipsZ ser_failsZser_errsZ ser_skipsokrrrrrs<       zParallelRunner.runN)rIrJrK staticmethodrrrrrrrrr~s  r~cCsTdd}|rJtjr|dn.tdkr.|dntdkr@|dn ttdSttdS)NcSst|dddS)Nz Running serial tests instead.r)r)rrrrwarnszget_runner..warnz$Can't run parallel tests on Windows.z(concurrencytest module is not installed.r zOnly 1 CPU available.) verbosity)rWINDOWSrrr~ VERBOSITYr_)rrrrr get_runners    rcCs t|}t}||dS)N)rrHrrr)r1r7rurrr run_from_name,s rcCstjjdS)N)rZ _psplatformZcextZ set_testingrrrrsetup2srcCstd}tj|dd}|jddddd|jd ddd d|\}}|jsVttt}|rt |d kr~| t d S| |d }n|jr|}n|}trtt|j}||dS) Nz*python3 -m psutil.tests [opts] [test-name]zrun unit tests)usage descriptionz --last-failed store_trueFzonly run last failed tests)actiondefaulthelpz --parallelzrun tests in parallelr r)roptparse OptionParser add_option parse_argsrEr r<rrZ print_usagerrwrHr9rr rrrr)rparseroptsrcloaderr7rurrrmain9s2     r__main__)FN)F)2r| __future__rrrrrrrr.ctypes ImportErrorrrZpsutil._commonrrrZpsutil._compatrZ psutil.testsrrr r r rr< cpu_countrrr abspathdirname__file__rLr@r5rrr}rOZTextTestRunnerr_r~rrrrrIrrrrsV               27U "