
    ;e                     F   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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 )a    !Changing this line will break Test_findfile.test_found!
Non-gui unit tests for grep.GrepDialog methods.
dummy_command calls grep_it calls findfiles.
An exception raised in one method will fail callers.
Otherwise, tests are mostly independent.
Currently only test grep_it, coverage 51%.
    )grepN)captured_stdout)Varc                       e Zd ZdZd ZdS )Dummy_searchenginezGrepDialog.__init__ calls parent SearchDiabolBase which attaches the
    passed in SearchEngine instance as attribute 'engine'. Only a few of the
    many possible self.engine.x attributes are needed here.
    c                     | 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____doc__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.   curdirr1   join)r   ffsave_cwdfilenamer4   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"   r:   r.   assertGreaterlenr1   r#   assertNotInassertNotEqualr0   )r   r;   readmer4   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%   r:   r.   rC   rB   r1   rD   r#   )r   r;   parentgrepfilepatr4   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*   r5   r>   rG   rN   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$   r2   splitpop)r   rL   r3   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.)rZ   r0   rC   r1   r   rL   rY   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:)rZ   r0   rC   r1   
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   rZ   r_   rg   r   r   r   rQ   rQ   v   sA        
  / / /7 7 7 7 7r   rQ   c                       e Zd ZdS )Default_commandTestN)r   r   r   r   r   r   ri   ri      s         	Dr   ri   __main__r\   )	verbosity)r   idlelibr   unittesttest.supportr   idlelib.idle_test.mock_tkr   r!   rU   r   r   r   rT   TestCaser   rQ   ri   r   mainr   r   r   <module>rr      s           ( ( ( ( ( ( ) ) ) ) ) ) 				 				        "!##        	
K/ K/ K/ K/ K/H% K/ K/ K/\7 7 7 7 7(# 7 7 7>	 	 	 	 	(+ 	 	 	 zHMA r   