o
    PZhp$                     @   s|  d dl Z d dlZedkr>ejejejed  d  Zeje\ZZ	e	dko3ejed dkZ
e
s=e jd e nedZ
d dlZd dlZd dlZd dlZd dlmZ ddlmZ d	d
 Ze \ZZZdZeeZede dZdd Ze Zej ddddd ej ddddd ej ddddded ej dddd d ej d!d"d#d$d%d&d' ej d(d)d#d$d d*d' ej d+d,dd-d d.Z!d/Z"d0Z#ed1ej$Z%d2d3 Z&d4d5 Z'd6d7 Z(d8Z)d9Z*e) d:e* Z+ee+ej,ej-B Z.d;d< Z/	=	>	=	?	>		dGd@dAZ0edkr<e1 \Z2Z3e3s(e
rdBZ4nej5edCZ4e 6dDe4 dE e0e3d  e2j7e2j8e2j9e2j:e2j; dF dS dS )H    N__main__tests   Zpygamezpygame.tests.)pformat)PygameTestLoaderc                  C   sZ   t jt jt jtd d } t j| d }tjd|  t j| d}|| |fS )Nr   Zrun_tests__tests)ospathsplitabspath__file__sysinsertjoin)test_subdirmain_dirfake_test_subdir r   R/var/www/auris/lib/python3.10/site-packages/pygame/tests/test_utils/test_runner.pyprepare_test_env   s
   $
r   z-?[a-zA-Z0-9_]+(z,?\s*)+$c                 C   s0   t |d u rt| dt||j_d S )Nz argument has invalid value)
EXCLUDE_REmatchoptparseOptionValueErrorTAG_REfindallvaluesexclude)optionoptvalueparserr   r   r   exclude_callback+   s   r"   z-iz--incomplete
store_truezfail incomplete tests)actionhelpz-sz--usesubprocesszBrun everything in a single process  (default: use no subprocesses)z-ez	--excludecallbackstringz$exclude tests containing any of TAGS)r$   typer%   r&   z-uz--unbufferedzOShow stdout/stderr as tests run, rather than storing it and showing on failuresz-vz	--verbose	verbositystore_const   zVerbose output)destr$   constr%   z-qz--quietzQuiet outputz-rz--randomizezrandomize order of tests   a  
======================================================================
ERROR: all_tests_for (%(module)s.AllTestCases)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "test/%(module)s.py", line 1, in all_tests_for
subprocess completely failed with return code of %(return_code)s
cmd:          %(cmd)s
test_env:     %(test_env)s
working_dir:  %(working_dir)s
return (first 10 and last 10 lines):
%(raw_return)s

zJ----------------------------------------------------------------------
Ranz^([FE.sux]*)$c                 C   sz   d| v }|rd| v sd| v rd | ddd S d
S t| d}d|v s,d|v r;| t|d d td	 S d
S )z.from test runner output return the tracebacks. ...ERRORFAILURE

==r   NEFr    )r   r	   DOTSsearchgrouplenRAN_TESTS_DIV)outputverbose_modedotsr   r   r   extract_tracebacks   s   r>   c           
      C   s   d| v }|rKddddddd}|  d	d
 }dd | dD }g }|D ]!}d}|D ]}||v r;|||  d} nq*|sEtd| q$d|S t| d}	|	S )z)convert the test runner output into dots.r/   r3   usx.r4   )z	... ERRORz... unexpected successz... skippedz... expected failurez... okz... FAILr2   r   c                 S   s   g | ]
}|rd |v r|qS )...r   ).0lr   r   r   
<listcomp>   s    z$output_into_dots.<locals>.<listcomp>
FTz(Not sure what this is. Add to reasons. :r5   r   )r	   append
ValueErrorr   r6   r7   r8   )
r;   r<   reasonsresultslinesZdotlistrE   foundreasonr=   r   r   r   output_into_dots   s4   
rO   c                 C   sv  d}g }t |  D ]R\}}t|jd\}}}|r|rIt|vrI| }	t|	dkr=d|	dd dg |	dd  |d	< |t	|  |d
7 }q
t
|}
||
7 }t|}|r\|| q
t|jd\}}t|}|g}|r}|d|ddd g7 }|t d| d|ddg7 }|r|rd| gng |rd| gng  }|dd| dg7 }n|dg7 }|d|fS )a-  

    Return pieced together results in a form fit for human consumption. Don't
    rely on results if  piecing together subprocessed  results (single process
    mode is fine). Was originally meant for that  purpose but was found to be
    unreliable.  See the dump option for reliable results.

    r5   )r;   return_code
raw_return   rG   N
   rC   irQ   r3   ZFE z
 tests in z.3fzs
z	failures=zerrors=zFAILED (z, z)
zOK
)sorteditemsmapgetr:   
splitlinesr9   r   rH   COMPLETE_FAILURE_TEMPLATErO   r>   countlstrip)Zall_resultstZall_dotsfailuresmodulerK   r;   rP   rQ   output_linesr=   Z
tracebacksZtotal_failsZtotal_errorsZtotal_testscombinedinfosr   r   r   combine_results   sD   



rd   z#<--!! TEST RESULTS START HERE !!-->z!<--!! TEST RESULTS END HERE !!-->z
(.*)c                 C   s@   t | }|rzt|dW S    td|d   d S )Nr   zBUGGY TEST RESULTS EVAL:
 )TEST_RESULTS_REr7   evalr8   print)rQ   Ztest_resultsr   r   r   get_test_results   s   
rh   FTinteractivec                 C   s   t  }|du r
d}|rtd|   t|||d}	||	|  t }
t j|
||d}|	|}|dkrG|

d t|
  |

d | |
 |jt|jt|jdi}|rktt tt| tt dS |S )	zRun a unit test moduleNr   zloading )Zrandomize_testsZinclude_incompleter   )streambufferr)   r+   r   )r;   Z	num_testsZ
num_errorsZnum_failures)unittestZ	TestSuiterg   r   ZaddTestZloadTestsFromNameioStringIOZTextTestRunnerrunseekreadgetvalueZtestsRunr9   errorsr_   TEST_RESULTS_STARTr   TEST_RESULTS_END)r`   
incompleteusesubprocess	randomizer   rl   
unbufferedr)   Zsuiteloaderr;   runnerrK   r   r   r   run_test   s8   


	r}   zpygame.tests.gozrun_tests.pyz(No test module provided; consider using z instead)rw   rx   ry   r   rl   )FTFri   TNr   )<r   r   __name__r   r	   r
   r   Zpkg_dir
parent_dirpkg_nameZis_pygame_pkgr   
startswithrn   r   rerm   pprintr   Ztest_machineryr   r   r   r   r   ZTAG_PATcompiler   r   r"   OptionParserZ
opt_parser
add_optionZTIME_OUTr[   r:   	MULTILINEr6   r>   rO   rd   ru   rv   Z_test_re_strDOTALLMre   rh   r}   
parse_argsoptionsargsZrun_fromr   exitrw   rx   ry   r   rz   r   r   r   r   <module>   s    $

		!8

4
