B
    v9aÆ$  ã               @   s¤   d Z ddlmZ ddlZddlmZ ddlmZ ddlZG dd„ dejƒZ	G dd	„ d	e
ƒZG d
d„ dƒZG dd„ dejƒZG dd„ dejƒZedkr ejdd dS )zTest run, coverage 42%.é    )ÚrunN)Úmock)Úcaptured_stderrc               @   s   e Zd Zdd„ ZdS )ÚRunTestc             C   sà   G dd„ dt ƒ}|dƒ}|dƒ}y
||‚W np |k
rš   y|‚W nR |k
r”   tƒ 2}tj td¡}dd„ |_t ¡  W d Q R X W d Q R X Y nX Y nX | ¡  	¡  
¡ }|  dt|ƒ¡ |  d	|d
 ¡ |  d|d ¡ d S )Nc               @   s   e Zd Zdd„ ZdS )zDRunTest.test_print_exception_unhashable.<locals>.UnhashableExceptionc             S   s   dS )NT© )ÚselfÚotherr   r   ú/usr/lib/python3.7/test_run.pyÚ__eq__   s    zKRunTest.test_print_exception_unhashable.<locals>.UnhashableException.__eq__N)Ú__name__Ú
__module__Ú__qualname__r
   r   r   r   r	   ÚUnhashableException   s   r   Úex1Úex2Zcleanup_tracebackc             S   s   | S )Nr   )ÚtÚer   r   r	   Ú<lambda>   ó    z9RunTest.test_print_exception_unhashable.<locals>.<lambda>é   zUnhashableException: ex2é   zUnhashableException: ex1é
   )Ú	Exceptionr   r   ZpatchÚobjectr   Zside_effectÚprint_exceptionÚgetvalueÚstripÚ
splitlinesÚassertEqualÚlenZassertIn)r   r   r   r   ÚoutputZctÚtbr   r   r	   Útest_print_exception_unhashable   s$    

(z'RunTest.test_print_exception_unhashableN)r   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	d
„ Zdd„ ZdS )ÚSc             C   s   dt | ƒj S )Nz%s:str)Útyper   )r   r   r   r	   Ú__str__(   s    z	S.__str__c             C   s   dt | ƒj S )Nz
%s:unicode)r$   r   )r   r   r   r	   Ú__unicode__*   s    zS.__unicode__c             C   s   dS )Nr   r   )r   r   r   r	   Ú__len__,   s    z	S.__len__c             C   s   t dƒS )NÚabc)Úiter)r   r   r   r	   Ú__iter__.   s    z
S.__iter__c             G   s   dt | ƒj S )Nz%s:item)r$   r   )r   Úargsr   r   r	   Ú__getitem__0   s    zS.__getitem__c             G   s   dt | ƒj S )Nz%s:slice)r$   r   )r   r+   r   r   r	   Ú__getslice__2   s    zS.__getslice__N)	r   r   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d„ Zdd„ Zd	d
„ Zdd„ ZdS )Ú	MockShellc             C   s   |   ¡  d S )N)Úreset)r   r   r   r	   Ú__init__7   s    zMockShell.__init__c             G   s   | j  |¡ d S )N)ÚwrittenÚappend)r   r+   r   r   r	   Úwrite9   s    zMockShell.writec             C   s
   | j  ¡ S )N)ÚlinesÚpop)r   r   r   r	   Úreadline;   s    zMockShell.readlinec             C   s   d S )Nr   )r   r   r   r	   Úclose=   s    zMockShell.closec             C   s
   g | _ d S )N)r1   )r   r   r   r	   r/   ?   s    zMockShell.resetc             C   s   t |ƒd d d… | _d S )Néÿÿÿÿ)Úlistr4   )r   r4   r   r   r	   ÚpushA   s    zMockShell.pushN)	r   r   r   r0   r3   r6   r7   r/   r:   r   r   r   r	   r.   6   s   r.   c               @   s<   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ ZdS )ÚPseudeInputFilesTestc             C   sž   t ƒ }t |dd¡}|  |tj¡ |  |jd¡ |  |j	¡ |  |j
¡ |  |jd¡ |  |j¡ |  | ¡ ¡ |  | ¡ ¡ |  | ¡ ¡ |  | ¡ ¡ d S )NÚstdinzutf-8z<stdin>)r.   r   ÚPseudoInputFileÚassertIsInstanceÚioÚ
TextIOBaser   ÚencodingÚassertIsNoneÚerrorsÚnewlinesÚnameÚassertFalseÚclosedÚ
assertTrueÚisattyÚreadableÚwritableÚseekable)r   ÚshellÚfr   r   r	   Ú	test_miscG   s    zPseudeInputFilesTest.test_miscc             C   sf   t ƒ }t |dd¡}|  t|j¡ |  t|j¡ |  t|jd¡ |  t|jd¡ |  t|j	dg¡ d S )Nr<   zutf-8r   Úx)
r.   r   r=   ÚassertRaisesÚOSErrorÚfilenoÚtellÚseekr3   Ú
writelines)r   rM   rN   r   r   r	   Útest_unsupportedU   s    z%PseudeInputFilesTest.test_unsupportedc             C   s  t ƒ }t |dd¡}| dddg¡ |  | ¡ d¡ | dddg¡ |  | d¡d¡ | dddg¡ |  | d ¡d¡ | ddddg¡ |  | d	¡d
¡ |  | d¡d¡ |  | d¡d¡ | ddg¡ |  | d¡d¡ |  t|jd¡ |  t|jd¡ |  t|jdd¡ d S )Nr<   zutf-8zone
ztwo
Ú zone
two
r8   zthree
é   Úonr   ze
tr   z	wo
three
r   g      ø?Ú1é   )r.   r   r=   r:   r   ÚreadrQ   Ú	TypeError)r   rM   rN   r   r   r	   Ú	test_read^   s"    zPseudeInputFilesTest.test_readc             C   sd  t ƒ }t |dd¡}| ddddg¡ |  | ¡ d¡ |  | d¡d¡ |  | d ¡d¡ | dg¡ |  | ¡ d¡ |  | ¡ d¡ | d	d
dg¡ |  | ¡ d	¡ |  | ¡ d
¡ | dddg¡ |  | d¡d¡ |  | d¡d¡ |  | d¡d¡ |  | d¡d¡ | ddg¡ |  | d¡d¡ |  t|jd¡ |  t|jd¡ |  t|jdd¡ d S )Nr<   zutf-8zone
ztwo
zthree
zfour
r8   zone
two
ZoneÚtwoZthreerY   rZ   r\   r   Ú
r   r   rX   g      ø?r[   )	r.   r   r=   r:   r   r6   rQ   r^   Ú	readlines)r   rM   rN   r   r   r	   Útest_readliner   s,    z"PseudeInputFilesTest.test_readlinec             C   s:  t ƒ }t |dd¡}| dddg¡ |  | ¡ ddg¡ | dddg¡ |  | d¡ddg¡ | dddg¡ |  | d ¡ddg¡ | dddg¡ |  | d¡ddg¡ | dddg¡ |  | d¡dg¡ | dddg¡ |  | d	¡ddg¡ | dddg¡ |  t|jd
¡ |  t|jd¡ |  t|jdd¡ d S )Nr<   zutf-8zone
ztwo
rX   r8   r   r   é   g      ø?r[   r\   )r.   r   r=   r:   r   rb   rQ   r^   )r   rM   rN   r   r   r	   Útest_readlines‹   s$    z#PseudeInputFilesTest.test_readlinesc             C   sx   t ƒ }t |dd¡}| dddg¡ |  |j¡ |  | ¡ d¡ | ¡  |  |j¡ |  | ¡ d¡ |  	t
|jd¡ d S )Nr<   zutf-8zone
ztwo
rX   r\   )r.   r   r=   r:   rF   rG   r   r6   r7   rQ   r^   )r   rM   rN   r   r   r	   Ú
test_close    s    zPseudeInputFilesTest.test_closeN)	r   r   r   rO   rW   r_   rc   re   rf   r   r   r   r	   r;   E   s   	r;   c               @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚPseudeOutputFilesTestc             C   sž   t ƒ }t |dd¡}|  |tj¡ |  |jd¡ |  |j	¡ |  |j
¡ |  |jd¡ |  |j¡ |  | ¡ ¡ |  | ¡ ¡ |  | ¡ ¡ |  | ¡ ¡ d S )NÚstdoutzutf-8z<stdout>)r.   r   ÚPseudoOutputFiler>   r?   r@   r   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   )r   rM   rN   r   r   r	   rO   ®   s    zPseudeOutputFilesTest.test_miscc             C   sd   t ƒ }t |dd¡}|  t|j¡ |  t|j¡ |  t|jd¡ |  t|jd¡ |  t|j	d¡ d S )Nrh   zutf-8r   )
r.   r   ri   rQ   rR   rS   rT   rU   r]   r6   )r   rM   rN   r   r   r	   rW   ¼   s    z&PseudeOutputFilesTest.test_unsupportedc             C   s  t ƒ }t |dd¡}| d¡ |  |jdg¡ | ¡  | d¡ |  |jdg¡ | ¡  | tdƒ¡ |  |jdg¡ |  t|jd d ƒt	¡ | ¡  |  
t|j¡ |  |jg ¡ |  
t|jd¡ |  
t|jd	¡ |  |jg ¡ |  
t|jdd
¡ |  |jg ¡ d S )Nrh   zutf-8Útest)rj   rh   u   tÃ¨st)u   tÃ¨strh   r   s   testé{   Zspam)r.   r   ri   r3   r   r1   r/   r#   r$   ÚstrrQ   r^   )r   rM   rN   r   r   r	   Ú
test_writeÅ   s&    

z PseudeOutputFilesTest.test_writec             C   sV  t ƒ }t |dd¡}| g ¡ |  |jg ¡ | ¡  | ddg¡ |  |jddg¡ | ¡  | ddg¡ |  |jd	d
g¡ | ¡  | tdƒg¡ |  |jdg¡ |  t|jd d ƒt	¡ | ¡  |  
t|j¡ |  |jg ¡ |  
t|jd¡ |  |jg ¡ |  
t|jdg¡ |  
t|jdg¡ |  |jg ¡ |  
t|jg g ¡ |  |jg ¡ d S )Nrh   zutf-8zone
r`   )zone
rh   )r`   rh   u   onÃ¨
u   twÃ²)u   onÃ¨
rh   )u   twÃ²rh   u   tÃ¨st)u   tÃ¨strh   r   rk   s   test)r.   r   ri   rV   r   r1   r/   r#   r$   rl   rQ   r^   )r   rM   rN   r   r   r	   Útest_writelinesÜ   s4    


z%PseudeOutputFilesTest.test_writelinesc             C   sz   t ƒ }t |dd¡}|  |j¡ | d¡ | ¡  |  |j¡ |  t	|jd¡ |  
|jdg¡ | ¡  |  t|jd¡ d S )Nrh   zutf-8rj   rP   )rj   rh   r\   )r.   r   ri   rF   rG   r3   r7   rH   rQ   Ú
ValueErrorr   r1   r^   )r   rM   rN   r   r   r	   rf   ú   s    
z PseudeOutputFilesTest.test_closeN)r   r   r   rO   rW   rm   rn   rf   r   r   r   r	   rg   ¬   s
   	rg   Ú__main__rY   )Ú	verbosity)Ú__doc__Zidlelibr   Zunittestr   Ztest.supportr   r?   ZTestCaser   rl   r#   r.   r;   rg   r   Úmainr   r   r   r	   Ú<module>   s   g[