o
    JAfÐ  ã                   @   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rZejdd dS 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
   ú2/usr/lib/python3.10/idlelib/idle_test/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 r   r
   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 r   )ÚosÚpathÚrealpathÚ__file__Údirname©Úclsr
   r
   r   Ú
setUpClass*   s   zFindfilesTest.setUpClassc                 C   s   | ` | `d S r   )r   r   r   r
   r
   r   ÚtearDownClass/   s   zFindfilesTest.tearDownClassc                 C   sX   t ƒ }tt ddd¡ƒ}W d   ƒ n1 sw   Y  |  |g ¡ |  d| ¡ ¡ d S )NZ
invaliddirz*.*FÚ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	   ÚffÚ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.txtú*.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.pyr0   Fé   T)r   r!   r   r   r   r+   r    r3   r2   r#   r4   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/   r5   r9   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   sZ   |t j_tƒ }t  t |¡t¡ W d   ƒ n1 sw   Y  | ¡  	d¡}| 
¡  |S )NÚ
)Ú_grepr   r   r   r   ÚreÚcompiler   r$   ÚsplitÚpop)r	   r8   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.)rC   r"   r3   r#   ©r	   r8   rB   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:rE   Ú2é   é   z(Hint:)rC   r"   r3   r#   Z
assertTrueÚ
startswithrF   r
   r
   r   Ú
test_foundŠ   s   
zGrep_itTest.test_foundN)r   r   r   rC   rG   rM   r
   r
   r
   r   r;   v   s    r;   c                   @   s   e Zd ZdS )ÚDefault_commandTestN)r   r   r   r
   r
   r
   r   rN   •   s    rN   Ú__main__rD   )Ú	verbosity)Zidlelibr   ZunittestZtest.supportr   Zidlelib.idle_test.mock_tkr   r   r>   r   r   r   r=   ZTestCaser   r;   rN   r   Úmainr
   r
   r
   r   Ú<module>   s"    
Nÿ