B
    v9aÐ  ã               @   s²   d dl mZ d dlZd dlmZ d dlmZ d dlZd dlZG dd„ dƒZ	e	ƒ Z
G dd„ dƒZeƒ ZG d	d
„ d
ejƒ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 )é    )ÚgrepN)Úcaptured_stdout)ÚVarc               @   s   e Zd Zdd„ ZdS )ÚDummy_searchenginec             C   s   | j S )N)Ú_pat)Úself© r   ú/usr/lib/python3.7/test_grep.pyÚgetpat   s    zDummy_searchengine.getpatN)Ú__name__Ú
__module__Ú__qualname__r
   r   r   r   r	   r      s   r   c               @   s(   e Zd ZejjZedƒZeZ	dd„ Z
dS )Ú
Dummy_grepFc             C   s   d S )Nr   )r   r   r   r	   Úclose"   s    zDummy_grep.closeN)r   r   r   r   Z
GrepDialogÚgrep_itr   ZrecvarÚsearchengineÚenginer   r   r   r   r	   r      s   r   c               @   sD   e Zd Zedd„ ƒZedd„ ƒZdd„ Zdd„ Zd	d
„ Zdd„ Z	dS )ÚFindfilesTestc             C   s"   t j t¡| _t j | j¡| _d S )N)ÚosÚpathÚrealpathÚ__file__Údirname)Úclsr   r   r	   Ú
setUpClass*   s    zFindfilesTest.setUpClassc             C   s   | ` | `d S )N)r   r   )r   r   r   r	   ÚtearDownClass/   s    zFindfilesTest.tearDownClassc          	   C   sD   t ƒ }tt ddd¡ƒ}W d Q R X |  |g ¡ |  d| ¡ ¡ d S )NZ
invaliddirz*.*FZinvalid)r   Úlistr   Ú	findfilesÚassertEqualÚassertInÚgetvalue)r   ÚsÚfilelistr   r   r	   Útest_invaliddir3   s    zFindfilesTest.test_invaliddirc             C   sV   t j}t ¡ }t | j¡ d}t|tj|dƒƒ}|  tj 	tj|¡|¡ t |¡ d S )Nztest_grep.pyF)
r   r   r   ÚgetcwdÚchdirr   r   Úcurdirr   Újoin)r   ÚffZsave_cwdÚfilenamer"   r   r   r	   Útest_curdir9   s    zFindfilesTest.test_curdirc             C   sÂ   t j}tj | jd¡}t|| jddƒƒ}|  t|ƒd¡ |  | j	|¡ |  
||¡ t|| jddƒƒ}|  t|ƒd¡ |  
| j	|¡ |  ||¡ t|| jddƒƒ}|  t|ƒd¡ |  
| j	|¡ d S )Nz
README.txtz*.pyFé
   z*.txtr   zgrep.*)r   r   r   r   r'   r   ÚassertGreaterÚlenr   r   ÚassertNotInZassertNotEqualr   )r   r(   Zreadmer"   r   r   r	   Ú	test_baseC   s    zFindfilesTest.test_basec             C   sÌ   t j}tj | j¡}tj |d¡}d}t|||dƒƒ}t|ƒ}|  |d¡ |  	||¡ |  
| j|¡ t|||dƒƒ}|  t|ƒ|¡ |  	||¡ |  	| j|¡ tj |¡}t||ddƒƒ}|  	| j|¡ d S )Nzgrep.pyz*.pyFé   T)r   r   r   r   r   r'   r   r-   r,   r   r.   r   )r   r(   ÚparentZgrepfileÚpatr"   Zparent_sizer   r   r	   Útest_recurseY   s     zFindfilesTest.test_recurseN)
r   r   r   Úclassmethodr   r   r#   r*   r/   r3   r   r   r   r	   r   (   s   
r   c               @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚGrep_itTestc          	   C   sF   |t j_tƒ }t  t |¡t¡ W d Q R X | ¡  	d¡}| 
¡  |S )NÚ
)Ú_grepr   r   r   r   ÚreÚcompiler   r    ÚsplitÚpop)r   r2   r!   Úlinesr   r   r	   Úreport{   s    zGrep_itTest.reportc             C   sB   d}|   |¡}|  t|ƒd¡ |  ||d ¡ |  |d d¡ d S )Nzxyz*xyz*xyz*xyz*xyz*xyz*xyz*é   r   é   zNo hits.)r=   r   r-   r   )r   r2   r<   r   r   r	   Útest_unfoundƒ   s
    
zGrep_itTest.test_unfoundc             C   sf   d}|   |¡}|  t|ƒd¡ |  ||d ¡ |  d|d ¡ |  d|d ¡ |  |d  d	¡¡ d S )
Nz<""" !Changing this line will break Test_findfile.test_found!é   r   zpy: 1:r?   Ú2é   é   z(Hint:)r=   r   r-   r   Z
assertTrueÚ
startswith)r   r2   r<   r   r   r	   Ú
test_foundŠ   s    
zGrep_itTest.test_foundN)r   r   r   r=   r@   rF   r   r   r   r	   r5   v   s   r5   c               @   s   e Zd ZdS )ÚDefault_commandTestN)r   r   r   r   r   r   r	   rG   •   s   rG   Ú__main__r>   )Ú	verbosity)Zidlelibr   ZunittestZtest.supportr   Zidlelib.idle_test.mock_tkr   r   r8   r   r   r   r7   ZTestCaser   r5   rG   r   Úmainr   r   r   r	   Ú<module>   s   
N