B
    ÐH/\  ã               @   s†   d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZdd„ ZG dd„ dej	ƒZ
eƒ ZG dd„ deƒZd	d
„ Zedkr‚eƒ  dS )é    )Úprint_functionNc              O   s   d S )N© )Z_argsZ_kwargsr   r   ú:lib/python3.7/site-packages/gevent/tests/test__doctests.pyÚ
myfunction   s    r   c               @   s    e Zd ZdZdd„ Zdd„ ZdS )ÚRENormalizingOutputCheckerzS
    Pattern-normalizing output checker. Inspired by one used in zope.testing.
    c             C   s   dd„ |D ƒ| _ d S )Nc             S   s   g | ]\}}t  |j|¡‘qS r   )Ú	functoolsÚpartialÚsub)Ú.0ÚreZreplacementr   r   r   ú
<listcomp>   s    z7RENormalizingOutputChecker.__init__.<locals>.<listcomp>)Útransformers)ÚselfZpatternsr   r   r   Ú__init__   s    z#RENormalizingOutputChecker.__init__c             C   s>   ||krdS x| j D ]}||ƒ}||ƒ}qW tj | |||¡S )NT)r   ÚdoctestÚOutputCheckerÚcheck_output)r   ZwantZgotZoptionflagsZtransformerr   r   r   r      s    z'RENormalizingOutputChecker.check_outputN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   r   r      s   r   c               @   s0   e Zd Zdd„ Zdd„ Zdd„ ZeZdd„ Zd	S )
ÚModulesc             C   sB   ddl m} || _tƒ | _x"|ddD ]\}}|  ||¡ q&W d S )Nr   )Úwalk_modulesT)Ú	recursive)Úgevent.testingr   Úallowed_modulesÚsetÚmodulesÚ
add_module)r   r   r   ÚpathÚmoduler   r   r   r   *   s
    zModules.__init__c             C   s4   | j r|| j krd S |tkr d S | j ||f¡ d S )N)r   ÚFORBIDDEN_MODULESr   Úadd)r   Únamer   r   r   r   r   3   s
    zModules.add_modulec             C   s
   t | jƒS )N)Úboolr   )r   r   r   r   Ú__bool__:   s    zModules.__bool__c             C   s
   t | jƒS )N)Úiterr   )r   r   r   r   Ú__iter__?   s    zModules.__iter__N)r   r   r   r   r   r%   Z__nonzero__r'   r   r   r   r   r   (   s
   	r   c           
   C   s–  t  ¡ } dt jd< dd l}ddlm} ddlm} ddlm} |jrPt	 
dh¡ z2tjdd … }tj d	¡ t||d
œ}t|ƒ}|sšt dd |¡ ¡ t ¡ }tt d¡dft d¡dft d¡dffƒ}	d}
d}x†t|ƒD ]z\}}t|dƒ}| ¡ }W d Q R X t d|tj¡ràtj|||	d}t|j ƒ}| !d|||¡ | "|¡ |d7 }|
|7 }
qàW | !d|
|¡ tj#dd}| $|¡ W d t  %| ¡ X d S )NÚ1ZPURE_PYTHONr   )Úsocket)Úutil)Úsysinfozgevent.subprocessé   Ú.)r   Úgeventr)   zNo modules found matching %sú z@ls: cannot access 'non_existent_file': No such file or directoryz0ls: non_existent_file: No such file or directoryzb(".*?")z\1zb('.*?')Úrbs   ^\s*>>> )Z
extraglobsÚcheckerz%s (from %s): %s testszTotal: %s tests in %s modulesé   )Ú	verbosity)&ÚosÚgetcwdÚenvironr.   r)   r   r*   r+   ZWINr!   ÚupdateÚsysÚargvr   Úappendr   r   ÚexitÚjoinÚunittestZ	TestSuiter   r   ÚcompileÚsortedÚopenÚreadÚsearchÚMr   ZDocTestSuiteÚlenZ_testsÚlogZaddTestZTextTestRunnerÚrunÚchdir)Úcwdr.   r)   r*   r+   r   Zglobsr   Zsuiter1   Ztests_countZmodules_countÚmr   ÚfÚcontentsÚsZ
test_countZrunnerr   r   r   ÚmainC   sR    


rM   Ú__main__)Z
__future__r   r   r   r4   r   r8   r=   r   r   r   r   r!   Úobjectr   rM   r   r   r   r   r   Ú<module>   s   A