???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................3

  \V                 @   s   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lZd dlmZ ddlm	Z	m
Z
mZ dZejdejZG dd de	jZd	d
 Zdd Zdd Zdd Zdd ZG dd deZe ZdddZejfddZdeje
jfddZdeje
jfddZdS )    N)fnmatch   )casesuiteutilTz[_a-z]\w*\.py$c                   s,   e Zd ZdZ fddZ fddZ  ZS )_FailedTestNc                s   || _ tt| j| d S )N)
_exceptionsuperr   __init__)selfZmethod_name	exception)	__class__ '/usr/lib64/python3.6/unittest/loader.pyr
      s    z_FailedTest.__init__c                s*   | j krtt j|S  fdd}|S )Nc                  s
    j d S )N)r   r   )r   r   r   testFailure!   s    z,_FailedTest.__getattr__.<locals>.testFailure)_testMethodNamer	   r   __getattr__)r   namer   )r   )r   r   r      s    
z_FailedTest.__getattr__)__name__
__module____qualname__r   r
   r   __classcell__r   r   )r   r   r      s   r   c             C   s"   d| t j f }t| t|||S )Nz#Failed to import test module: %s
%s)	traceback
format_exc_make_failed_testImportError)r   
suiteClassmessager   r   r   _make_failed_import_test&   s    r   c             C   s   dt j f }t| |||S )NzFailed to call load_tests:
%s)r   r   r   )r   r   r   r   r   r   r   _make_failed_load_tests+   s    r   c             C   s   t | |}||f|fS )N)r   )
methodnamer   r   r   testr   r   r   r   0   s    
r   c             C   s<   t jt|dd }| |i}tdt jf|}||| fS )Nc             S   s   d S )Nr   )r   r   r   r   testSkipped5   s    z'_make_skipped_test.<locals>.testSkippedZModuleSkipped)r   skipstrtypeTestCase)r    r   r   r"   ZattrsZ	TestClassr   r   r   _make_skipped_test4   s    r'   c             C   s*   | j  jdr| d d S tjj| d S )Nz	$py.class	   r   i)lowerendswithospathsplitext)r,   r   r   r   _jython_aware_splitext<   s    r.   c                   s   e Zd ZdZeejZej	Z
dZ fddZdd Zdddd	Zd d
dZd!ddZdd Zd"ddZdd Zdd Zdd Zdd Zd#ddZd$ddZ  ZS )%
TestLoaderr!   Nc                s    t t| j  g | _t | _d S )N)r	   r/   r
   errorsset_loading_packages)r   )r   r   r   r
   L   s    zTestLoader.__init__c             C   sH   t |tjrtd| j|}| r4t|dr4dg}| jt||}|S )NzYTest cases should not be derived from TestSuite. Maybe you meant to derive from TestCase?ZrunTest)
issubclassr   	TestSuite	TypeErrorgetTestCaseNameshasattrr   map)r   testCaseClassZtestCaseNamesZloaded_suiter   r   r   loadTestsFromTestCaseS   s    
z TestLoader.loadTestsFromTestCase)patternc            O   s2  t |dksd|kr,tjdt |jdd  t |dkrRt |d }tdj|t |dkrxt|d }tdj|g }x@t|D ]4}t	||}t
|trt|tjr|j| j| qW t	|dd }	| j|}|	d k	r.y|	| ||S  tk
r, }
 z$t|j|
| j\}}| jj| |S d }
~
X nX |S )Nr   Zuse_load_testsz(use_load_tests is deprecated and ignoredr   zCloadTestsFromModule() takes 1 positional argument but {} were givenz=loadTestsFromModule() got an unexpected keyword argument '{}'
load_tests)lenwarningswarnDeprecationWarningpopr5   formatsorteddirgetattr
isinstancer%   r3   r   r&   appendr:   r   	Exceptionr   r   r0   )r   moduler;   argsZkwsZ	complainttestsr   objr<   e
error_caseerror_messager   r   r   loadTestsFromModulea   s4    


zTestLoader.loadTestsFromModulec             C   s>  |j d}d\}}|d kr|d d  }xb|rydj|}t|}P W q( tk
r   |j }t|| j\}}|s| jj| |S Y q(X q(W |dd  }|}	x|D ]}
y|	t	|	|
 }}	W q t
k
r2 } z\t	|	dd d k	r|d k	r| jj| |S t|
|| jdtj f \}}| jj| |S W Y d d }~X qX qW t|	tjrP| j|	S t|	trtt|	tjrt| j|	S t|	tjrt|trt|tjr|d }||}tt	||tjs| j|gS nt|	tjr|	S t|	r.|	 }t|tjr|S t|tjr| j|gS td|	|f ntd|	 d S )	N.r   __path__zFailed to access attribute:
%sz"calling %s returned %s, not a testz$don't know how to make test from: %s)NN)splitjoin
__import__r   rA   r   r   r0   rG   rE   AttributeErrorr   r   r   rF   types
ModuleTyperP   r%   r3   r   r&   r:   FunctionTyper   r4   callabler5   )r   r   rI   partsrN   rO   Z
parts_copymodule_nameZnext_attributerL   partparentrM   Zinstr!   r   r   r   loadTestsFromName   sl    	





zTestLoader.loadTestsFromNamec                s    fdd|D }j |S )Nc                s   g | ]}j | qS r   )r`   ).0r   )rI   r   r   r   
<listcomp>   s    z1TestLoader.loadTestsFromNames.<locals>.<listcomp>)r   )r   namesrI   Zsuitesr   )rI   r   r   loadTestsFromNames   s    zTestLoader.loadTestsFromNamesc             C   s@   || j fdd}tt|t|}| jr<|jtj| jd |S )Nc             S   s   | j |ott|| S )N)
startswithr[   rE   )Zattrnamer9   prefixr   r   r   isTestMethod   s    
z1TestLoader.getTestCaseNames.<locals>.isTestMethod)key)testMethodPrefixlistfilterrD   sortTestMethodsUsingsort	functools
cmp_to_key)r   r9   rg   ZtestFnNamesr   r   r   r6      s    zTestLoader.getTestCaseNamestest*.pyc             C   sR  d}|d kr| j d k	r| j }n|d kr.d}|}tjj|}|tjkrRtjjd| || _ d}d}g }tjjtjj|rtjj|}||krtjjtjj|d }nxyt	| W n t
k
r   d}Y nRX tj| }|jdd }	ytjjtjj|j}W n tk
r   y
|j}
W n tk
r8   d }
Y nX |
r|
jd kr|
jd k	rd}x|jD ]T}| r|j| rqd|j|jjdtjjd | _ |j| j||dd qdW n*|jtjkrtdd ntdj|d Y nX |r |s| j|	| _ tjj| ntjj| |r2t
d	| |sHt| j||}| j |S )
NFTr   z__init__.pyrQ   )	namespacez2Can not use builtin modules as dotted module namesz$don't know how to discover from {!r}z%Start directory is not importable: %r)!_top_level_dirr+   r,   abspathsysinsertisdirisfilerU   rV   r   modulesrT   dirname__file__rW   __spec__loadersubmodule_search_locationsrR   re   r   replacesepextend_find_testsbuiltin_module_namesr5   rB    _get_directory_containing_moduleremoverj   r   )r   	start_dirr;   Ztop_level_dirZset_implicit_topZis_not_importableis_namespacerK   Z
the_moduleZtop_partspecr,   r   r   r   discover   sv    





zTestLoader.discoverc             C   sR   t j| }tjj|j}tjj|j jdrBtjj	tjj	|S tjj	|S d S )Nz__init__.py)
rt   rx   r+   r,   rs   rz   basenamer)   re   ry   )r   r]   rI   	full_pathr   r   r   r   X  s
    
z+TestLoader._get_directory_containing_modulec             C   sB   || j krdS ttjj|}tjj|| j }|jtjjd}|S )NrQ   )rr   r.   r+   r,   normpathrelpathr~   r   )r   r,   Z_relpathr   r   r   r   _get_name_from_pathd  s    
zTestLoader._get_name_from_pathc             C   s   t | tj| S )N)rV   rt   rx   )r   r   r   r   r   _get_module_from_namep  s    z TestLoader._get_module_from_namec             C   s
   t ||S )N)r   )r   r,   r   r;   r   r   r   _match_patht  s    zTestLoader._match_pathFc       
      c   s   | j |}|dkrD|| jkrD| j|||\}}|d k	r<|V  |sDd S ttj|}x||D ]t}tjj||}	| j|	||\}}|d k	r|V  |rX| j |	}| jj| z| j	|	||E d H  W d | jj
| X qXW d S )NrQ   )r   r2   _find_test_pathrC   r+   listdirr,   rU   addr   discard)
r   r   r;   rq   r   rK   Zshould_recursepathsr,   r   r   r   r   r   x  s*    


zTestLoader._find_testsc             C   sP  t jj|}t jj|rFtj|s(dS | j|||s:d	S | j|}y| j|}W nX t	j
k
r } zt||| jdfS d }~X n   t|| j\}}	| jj|	 |dfS t jjt|d|}
tt jj|
}tt jj|}|j |j kr0t jj|}tt jj|}t jj|}d}t||||f | j||ddfS nt jj|rH| rzt jjt jj|d rzd
S d }d }| j|}y| j|}W nZ t	j
k
r } zt||| jdfS d }~X nz   t|| j\}}	| jj|	 |dfS t|dd }| jj| z(| j||d}|d k	r0|dfS |dfS | jj| X ndS d S )NFrz   zW%r module incorrectly imported from %r. Expected %r. Is this module globally installed?)r;   z__init__.pyr<   T)NF)NF)NF)NF)r+   r,   r   rw   VALID_MODULE_NAMEmatchr   r   r   r   ZSkipTestr'   r   r   r0   rG   rs   rE   r.   realpathr)   ry   r   rP   rv   rU   r2   r   r   )r   r   r;   rq   r   r   rI   rM   rN   rO   Zmod_filer   Zfullpath_noextZ
module_dirZmod_nameZexpected_dirmsgr<   rK   packager   r   r   r     sl    



zTestLoader._find_test_path)N)N)rp   N)F)F)r   r   r   ri   staticmethodr   three_way_cmprl   r   r4   r   rr   r
   r:   rP   r`   rd   r6   r   r   r   r   r   r   r   r   r   r   )r   r   r/   B   s"   
(
N

n
"r/   c             C   s    t  }||_| |_|r||_|S )N)r/   rl   ri   r   )rf   	sortUsingr   r|   r   r   r   _makeLoader  s    r   c             C   s   t ||j| S )N)r   r6   )r9   rf   r   r   r   r   r6     s    r6   r!   c             C   s   t |||j| S )N)r   r:   )r9   rf   r   r   r   r   r   	makeSuite  s    r   c             C   s   t |||j| S )N)r   rP   )rI   rf   r   r   r   r   r   findTestCases  s    r   )N) r+   rert   r   rX   rn   r>   r    r   r   r   Z
__unittestcompile
IGNORECASEr   r&   r   r   r   r   r'   r.   objectr/   ZdefaultTestLoaderr   r   r6   r4   r   r   r   r   r   r   <module>   s6      '
