
    ;e                     D   	 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          Z	 e	            Z
 G d d          Z e            Z G d	 d
ej                  Z G d dej                  Z G d dej                  Zedk    r ej        d           dS dS )    )grepN)captured_stdout)Varc                       e Zd Z	 d ZdS )Dummy_searchenginec                     | j         S N)_patselfs    2/usr/lib/python3.11/idlelib/idle_test/test_grep.pygetpatzDummy_searchengine.getpat   s
    y    N)__name__
__module____qualname__r    r   r   r   r      s(            r   r   c                   F    e Zd Zej        j        Z ed          ZeZ	d Z
dS )
Dummy_grepFc                     d S r	   r   r   s    r   closezDummy_grep.close"   s    r   N)r   r   r   r   
GrepDialoggrep_itr   recvarsearchengineenginer   r   r   r   r   r      sA         o%GSZZFF    r   r   c                   R    e Zd Zed             Zed             Zd Zd Zd Zd Z	dS )FindfilesTestc                     t           j                            t                    | _        t           j                            | j                  | _        d S r	   )ospathrealpath__file__dirnameclss    r   
setUpClasszFindfilesTest.setUpClass*   s4    w''117??3<00r   c                     | ` | `d S r	   )r"   r!   r%   s    r   tearDownClasszFindfilesTest.tearDownClass/   s    L#(((r   c                    t                      5 }t          t          j        ddd                    }d d d            n# 1 swxY w Y   |                     |g            |                     d|                                           d S )N
invaliddirz*.*Finvalid)r   listr   	findfilesassertEqualassertIngetvalue)r   sfilelists      r   test_invaliddirzFindfilesTest.test_invaliddir3   s     	H!DN<FFGGH	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H2&&&i.....s   $?AAc                 f   t           j        }t          j                    }t          j        | j                   d}t           |t          j        |d                    }|                     t          j        	                    t          j        |          |           t          j        |           d S )Nztest_grep.pyF)
r   r.   r    getcwdchdirr!   r-   curdirr0   join)r   ffsave_cwdfilenamer3   s        r   test_curdirzFindfilesTest.test_curdir9   s    ^9;;
!29h6677bgll29h77BBB
r   c                    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!   r9   r-   assertGreaterlenr0   r"   assertNotInassertNotEqualr/   )r   r:   readmer3   s       r   	test_basezFindfilesTest.test_baseC   sG   ^di66 49fe44553x=="---dmX...*** 49gu5566CMM1---111fh''' 49h6677X***11111r   c                    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.pyr?   F   T)r   r.   r    r!   r$   r9   r-   rB   rA   r0   rC   r"   )r   r:   parentgrepfilepatr3   parent_sizes          r   test_recursezFindfilesTest.test_recurseY   sQ   ^++7<<	22 63..//(mm;+++h)))111 63--..3x==+666h)))dmX... ((6640011dmX.....r   N)
r   r   r   classmethodr'   r)   r4   r=   rF   rM   r   r   r   r   r   (   s        1 1 [1 # # [#/ / /  2 2 2,/ / / / /r   r   c                        e Zd Zd Zd Zd ZdS )Grep_itTestc                 N   |t           j        _        t                      5 }t                               t          j        |          t                     d d d            n# 1 swxY w Y   |                                	                    d          }|
                                 |S )N
)_grepr   r
   r   r   recompiler#   r1   splitpop)r   rK   r2   liness       r   reportzGrep_itTest.report{   s     	5!MM"*S//8444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5

""4((		s   3AA#&A#c                     d}|                      |          }|                     t          |          d           |                     ||d                    |                     |d         d           d S )Nzxyz*xyz*xyz*xyz*xyz*xyz*xyz*   r      zNo hits.)rY   r/   rB   r0   r   rK   rX   s      r   test_unfoundzGrep_itTest.test_unfound   sl    C  UQ'''c58$$$q:.....r   c                 ~   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:)rY   r/   rB   r0   
assertTrue
startswithr]   s      r   
test_foundzGrep_itTest.test_found   s    LC  UQ'''c58$$$ha)))c58$$$a++H5566666r   N)r   r   r   rY   r^   rf   r   r   r   rP   rP   v   sA        
  / / /7 7 7 7 7r   rP   c                       e Zd ZdS )Default_commandTestN)r   r   r   r   r   r   rh   rh      s         	Dr   rh   __main__r[   )	verbosity)idlelibr   unittesttest.supportr   idlelib.idle_test.mock_tkr   r    rT   r   r   r   rS   TestCaser   rP   rh   r   mainr   r   r   <module>rq      s          ( ( ( ( ( ( ) ) ) ) ) ) 				 				        "!##        	
K/ K/ K/ K/ K/H% K/ K/ K/\7 7 7 7 7(# 7 7 7>	 	 	 	 	(+ 	 	 	 zHMA r   