B
    !{[d/                 @   s   d dl Z G dd de jZG dd de jZG dd deZG dd	 d	e jeZG d
d de jeZG dd de jeZG dd de jeZ	G dd de jeZ
G dd de jZG dd deZG dd deZG dd deZG dd deZdS )    Nc               @   s$   e Zd Zdd Zdd Zdd ZdS )Test__parse_optionsc             C   s   ddl m} ||S )Nr   )_parse_options)pkginfo.commandliner   )selfargsr    r   =lib/python3.7/site-packages/pkginfo/tests/test_commandline.py_callFUT   s    zTest__parse_options._callFUTc          	   C   s   dd l }dd l}ddlm} | d }|jd dk r@| }n| }t||d | 	t
| jg  W d Q R X | || k d S )Nr   )__doc__   )stderr)iosysr   r
   
splitlinesversion_infoBytesIOStringIO_MonkeyassertRaises
SystemExitr	   
assertTruegetvalue)r   r   r   Zusage	firstlinebufr   r   r   
test_empty	   s    
zTest__parse_options.test_emptyc             C   s"   |  dg\}}| |dg d S )Nfoo)r	   assertEqual)r   optionsr   r   r   r   test_nonempty   s    z!Test__parse_options.test_nonemptyN)__name__
__module____qualname__r	   r   r   r   r   r   r   r      s   r   c               @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
	BaseTestsc             C   s   ddl m} |S )Nr   )Base)r   r#   )r   r#   r   r   r   _getTargetClass   s    zBaseTests._getTargetClassc             C   s   |   |S )N)r$   )r   r   r   r   r   _makeOne#   s    zBaseTests._makeOnec             C   s$   |  tdd}| |jd k d S )Nr   )fields)r%   _Optionsr   _fields)r   baser   r   r   test___init___defaults&   s    z BaseTests.test___init___defaultsc             C   s*   t  }| t|d}| |j|k d S )N)r&   )objectr%   r'   r   r(   )r   r&   r)   r   r   r   test___init___w_fields*   s    z BaseTests.test___init___w_fieldsN)r   r    r!   r$   r%   r*   r,   r   r   r   r   r"      s   r"   c               @   s   e Zd Zdd Zdd ZdS )_FormatterBasec          	   O   sZ   dd l }dd l}|jd dk r(| }n| }t||d ||| W d Q R X | S )Nr   r   )stdout)r   r   r   r   r   r   r   )r   funcr   kwr   r   r   r   r   r   _capture_output1   s    
z_FormatterBase._capture_outputc          	   C   s.   dd l }t|t d || W d Q R X d S )Nr   )r.   )r   r   r+   )r   simplemetar   r   r   r   
_no_output=   s    z_FormatterBase._no_outputN)r   r    r!   r1   r4   r   r   r   r   r-   /   s   r-   c               @   sD   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dS )SimpleTestsc             C   s   ddl m} |S )Nr   )Simple)r   r6   )r   r6   r   r   r   r$   D   s    zSimpleTests._getTargetClassc             C   s   |   |S )N)r$   )r   r   r   r   r   r%   H   s    zSimpleTests._makeOnec             C   s"   |  td dd}| |j d S )NT)r&   skip)r%   r'   r   Z_skip)r   r2   r   r   r   test___init___K   s    zSimpleTests.test___init___c             C   s(   |  tddd}t }| || d S )Nr   F)r&   r7   )r%   r'   _Metar4   )r   r2   r3   r   r   r   test___call___w_empty_fieldsO   s    z(SimpleTests.test___call___w_empty_fieldsc             C   s,   |  tddd}td d}| || d S )Nr   T)r&   r7   )r   )r%   r'   r9   r4   )r   r2   r3   r   r   r   -test___call___w_skip_and_value_None_no_fieldsT   s    
z9SimpleTests.test___call___w_skip_and_value_None_no_fieldsc             C   s.   |  tddd}tddd}| || d S )N)r   T)r&   r7   r   Bar)r   bar)r%   r'   r9   r4   )r   r2   r3   r   r   r   :test___call___w_skip_and_value_empty_tuple_explicit_fieldsY   s    zFSimpleTests.test___call___w_skip_and_value_empty_tuple_explicit_fieldsc             C   s8   |  tddd}tdd}| ||}| |d d S )N)r   T)r&   r7   Fooz	foo: Foo
)r%   r'   r9   r1   r   )r   r2   r3   outputr   r   r   /test___call___w_skip_but_values_explicit_fields^   s    
z;SimpleTests.test___call___w_skip_but_values_explicit_fieldsN)
r   r    r!   r$   r%   r8   r:   r;   r>   rA   r   r   r   r   r5   B   s   r5   c               @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )SingleLineTestsc             C   s   ddl m} |S )Nr   )
SingleLine)r   rC   )r   rC   r   r   r   r$   f   s    zSingleLineTests._getTargetClassc             C   s   |   |S )N)r$   )r   r   r   r   r   r%   j   s    zSingleLineTests._makeOnec             C   s4   |  td ddd}| |jd | |jd d S )NIS)r&   
item_delimsequence_delim)r%   r'   r   Z_item_delim_sequence_delim)r   singler   r   r   r8   m   s    zSingleLineTests.test___init___c             C   s>   |  tddt d}tddd}| ||}| |d d S )Nr   |)r&   rF   rG   r?   r<   )r   r=   zBar|Foo
)r%   r'   r+   r9   r1   r   )r   rI   r3   r@   r   r   r   test___call__wo_fields_wo_lists   s    z.SingleLineTests.test___call__wo_fields_wo_listc             C   sB   |  tdddd}tdddgdd	}| ||}| |d
 d S )N)r   r=   rJ   *)r&   rF   rG   r?   Bar1Bar2Baz)r   r=   bazzFoo|Bar1*Bar2
)r%   r'   r9   r1   r   )r   rI   r3   r@   r   r   r   test___call__w_fields_w_list{   s    
z,SingleLineTests.test___call__w_fields_w_listN)r   r    r!   r$   r%   r8   rK   rQ   r   r   r   r   rB   d   s
   rB   c               @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )CSVTestsc             C   s   ddl m} |S )Nr   )CSV)r   rS   )r   rS   r   r   r   r$      s    zCSVTests._getTargetClassc             C   s   |   |S )N)r$   )r   r   r   r   r   r%      s    zCSVTests._makeOnec             C   s$   |  td dd}| |jd d S )NrE   )r&   rG   )r%   r'   r   rH   )r   csvr   r   r   r8      s    zCSVTests.test___init___c             C   s<   t ddd}| td t d}| ||}| |d d S )Nr?   r<   )r   r=   )r&   rG   zbar,foo
Bar,Foo
)r9   r%   r'   r+   r1   r   )r   r3   rT   r@   r   r   r   rK      s    z'CSVTests.test___call__wo_fields_wo_listc             C   sB   t dddgdd}| tdddd	}| ||}| |d
 d S )Nr?   rM   rN   rO   )r   r=   rP   )r   r=   rJ   rL   )r&   rF   rG   zfoo,bar
Foo,Bar1*Bar2
)r9   r%   r'   r1   r   )r   r3   rT   r@   r   r   r   rQ      s    
z%CSVTests.test___call__w_fields_w_listN)r   r    r!   r$   r%   r8   rK   rQ   r   r   r   r   rR      s
   rR   c               @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )INITestsc             C   s   ddl m} |S )Nr   )INI)r   rV   )r   rV   r   r   r   r$      s    zINITests._getTargetClassc             C   s   |   |S )N)r$   )r   r   r   r   r   r%      s    zINITests._makeOnec             C   s<   |  tdd}tdddd}|jd | t|| d S )N)r   )r&   r   z0.1r?   )nameversionr   zfoo-0.1)r%   r'   r9   _parserZadd_sectionr   
ValueError)r   inir3   r   r   r   test___call___duplicate   s    z INITests.test___call___duplicatec             C   s   |  td d}tdddd}|| |j}| | dg | t|ddddg | |ddd | |ddd | |ddd d S )	N)r&   r   z0.1r?   )rW   rX   r   zfoo-0.1rW   rX   )	r%   r'   r9   rY   r   sectionssortedr   get)r   r[   r3   cpr   r   r   test___call___wo_fields_wo_list   s    z(INITests.test___call___wo_fields_wo_listc             C   s   |  tdd}tdddddgdd	}|| |j}| | d
g | t|d
ddg | |d
dd | |d
dd d S )N)r   r=   )r&   r   z0.1r?   rM   rN   rO   )rW   rX   r   r=   rP   zfoo-0.1r=   z
Bar1
	Bar2)	r%   r'   r9   rY   r   r]   r^   r   r_   )r   r[   r3   r`   r   r   r   test___call___w_fields_w_list   s    z&INITests.test___call___w_fields_w_listN)r   r    r!   r$   r%   r\   ra   rb   r   r   r   r   rU      s
   rU   c               @   sD   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dS )	JSONtestsc             C   s   ddl m} |S )Nr   )JSON)r   rd   )r   rd   r   r   r   r$      s    zJSONtests._getTargetClassc             C   s   |   |S )N)r$   )r   r   r   r   r   r%      s    zJSONtests._makeOnec             C   s:   |  tdd}tdddd}d|jd< | t|| d S )N)rW   )r&   r   z0.1r?   )rW   rX   r   rW   )r%   r'   r9   _mappingr   rZ   )r   jsonr3   r   r   r   ,test___call___duplicate_with_meta_and_fields   s    
z6JSONtests.test___call___duplicate_with_meta_and_fieldsc             C   s:   |  td d}tdddd}d|jd< | t|| d S )N)r&   r   z0.1r?   )rW   rX   r   rW   )r%   r'   r9   re   r   rZ   )r   rf   r3   r   r   r   +test___call___duplicate_with_meta_wo_fields   s    
z5JSONtests.test___call___duplicate_with_meta_wo_fieldsc             C   sR   ddl m} | td d}tdddd}|| |dd	d
g}| ||j d S )Nr   )OrderedDict)r&   r   z0.1r?   )rW   rX   r   )r   r?   )rW   r   )rX   z0.1)collectionsri   r%   r'   r9   r   re   )r   ri   rf   r3   expectedr   r   r   ra      s    z)JSONtests.test___call___wo_fields_wo_listc             C   s`   ddl m} | tdd}tddddd	gd
d}|| |dddd	gfg}| ||j d S )Nr   )ri   )r   r=   )r&   r   z0.1r?   rM   rN   rO   )rW   rX   r   r=   rP   )r   r?   r=   )rj   ri   r%   r'   r9   r   re   )r   ri   rf   r3   rk   r   r   r   rb      s    z'JSONtests.test___call___w_fields_w_listc             C   sr   ddl m} dd l}| td d}tdddd}|| | |j}|j||d}|d	d
dg}| 	|| d S )Nr   )ri   )r&   r   z0.1r?   )rW   rX   r   )Zobject_pairs_hook)r   r?   )rW   r   )rX   z0.1)
rj   ri   rf   r%   r'   r9   r1   finishloadsr   )r   ri   Zjson_parserrf   r3   r@   rk   r   r   r   test___call___output   s    
zJSONtests.test___call___outputN)
r   r    r!   r$   r%   rg   rh   ra   rb   rn   r   r   r   r   rc      s   
rc   c               @   s.   e Zd ZdddZdd Zdd Zdd	 Zd
S )	Test_mainr2   c          	      sR   ddl m} ddl m} || }t   fdd||< z|| W d |||< X  S )Nr   )main)_FORMATTERSc                 s    S )Nr   )r   )dummyr   r   <lambda>  s    z$Test_main._callFUT.<locals>.<lambda>)r   rp   rq   
_Formatter)r   r   Zmonkeyrp   rq   Zbeforer   )rr   r   r	     s    
zTest_main._callFUTc          	      sZ   ddl m}  fdd}t||d  dg}W d Q R X  |jg   |j d S )Nr   )commandlinec                s     | d   |d  d S )Nr   )r   )path_or_module
md_version)r   r   r   _get_metadata  s    z3Test_main.test_w_mising_dist.<locals>._get_metadata)get_metadatar   )pkginforu   r   r	   r   _called_withr   	_finished)r   MUTrx   	formatterr   )r   r   test_w_mising_dist  s    zTest_main.test_w_mising_distc          	      sz   ddl m} td d  fdd}t||d ddd	g}W d Q R X |j g |j  j	d
 d S )Nr   )ru   )download_urlc                s    | d  |d   S )Nz/path/to/foo)r   )rv   rw   )r3   r   r   r   rx     s    z<Test_main.test_w_dist_wo_download_url.<locals>._get_metadata)ry   z-dzhttp://example.comz/path/to/foozhttp://example.com/foo)
rz   ru   r9   r   r	   r   r{   r   r|   r   )r   r}   rx   r~   r   )r3   r   r   test_w_dist_wo_download_url  s    
z%Test_main.test_w_dist_wo_download_urlc          	      sz   ddl m} tdd  fdd}t||d dd	d
g}W d Q R X |j g |j  j	d d S )Nr   )ru   zhttp://example.com/dist/foo)r   c                s    | d  |d   S )Nz/path/to/foo)r   )rv   rw   )r3   r   r   r   rx   )  s    z;Test_main.test_w_dist_w_download_url.<locals>._get_metadata)ry   z-dzhttp://example.comz/path/to/foo)
rz   ru   r9   r   r	   r   r{   r   r|   r   )r   r}   rx   r~   r   )r3   r   r   test_w_dist_w_download_url&  s    
z$Test_main.test_w_dist_w_download_urlN)r2   )r   r    r!   r	   r   r   r   r   r   r   r   ro      s   
ro   c               @   s   e Zd Zdd ZdS )r'   c             K   s    x|D ]}|| | j |< qW d S )N)__dict__)r   r0   kr   r   r   __init__6  s    
z_Options.__init__N)r   r    r!   r   r   r   r   r   r'   4  s   r'   c               @   s   e Zd Zdd Zdd ZdS )r9   c             K   s    x|D ]}|| | j |< qW d S )N)r   )r   r0   r   r   r   r   r   <  s    
z_Meta.__init__c             C   s   t t| jS )N)iterr^   r   )r   r   r   r   __iter__@  s    z_Meta.__iter__N)r   r    r!   r   r   r   r   r   r   r9   :  s   r9   c               @   s$   e Zd Zdd Zdd Zdd ZdS )r   c                sD    | _ t fdd|D | _x | D ]\}}t || q(W d S )Nc                s   g | ]}|t  |fqS r   )getattr).0key)moduler   r   
<listcomp>H  s    z$_Monkey.__init__.<locals>.<listcomp>)r   dict
to_restoreitemssetattr)r   r   r0   r   valuer   )r   r   r   F  s    z_Monkey.__init__c             C   s   | S )Nr   )r   r   r   r   	__enter__L  s    z_Monkey.__enter__c             C   s*   x$| j  D ]\}}t| j|| qW d S )N)r   r   r   r   )r   exc_typeZexc_valZexc_tbr   r   r   r   r   __exit__O  s    z_Monkey.__exit__N)r   r    r!   r   r   r   r   r   r   r   r   C  s   r   c               @   s(   e Zd ZdZdd Zdd Zdd ZdS )	rt   Fc             C   s
   g | _ d S )N)r{   )r   r   r   r   r   W  s    z_Formatter.__init__c             C   s   | j | d S )N)r{   append)r   r3   r   r   r   __call__Z  s    z_Formatter.__call__c             C   s
   d| _ d S )NT)r|   )r   r   r   r   rl   ]  s    z_Formatter.finishN)r   r    r!   r|   r   r   rl   r   r   r   r   rt   S  s   rt   )ZunittestZTestCaser   r"   r+   r-   r5   rB   rR   rU   rc   ro   r'   r9   r   rt   r   r   r   r   <module>   s   "&85	