
    z%i                     8   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       yy)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y)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    O/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/idlelib/idle_test/test_grep.pygetpatzDummy_searchengine.getpat   s    yy    N)__name__
__module____qualname____doc__r    r   r   r   r      s    r   r   c                   R    e Zd Zej                  j
                  Z ed      ZeZ	d Z
y)
Dummy_grepFc                      y 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      s&     oo%%GZFFr   r   c                   D    e Zd Zed        Zed        Zd Zd Zd Zd Z	y)FindfilesTestc                     t         j                  j                  t              | _        t         j                  j	                  | j                        | _        y r	   )ospathrealpath__file__dirnameclss    r   
setUpClasszFindfilesTest.setUpClass*   s0    ww''177??3<<0r   c                     | ` | `y r	   )r#   r"   r&   s    r   tearDownClasszFindfilesTest.tearDownClass/   s    L#(r   c                     t               5 }t        t        j                  ddd            }d d d        | j	                  g        | j                  dj                                y # 1 sw Y   <xY w)N
invaliddirz*.*Finvalid)r   listr   	findfilesassertEqualassertIngetvalue)r   sfilelists      r   test_invaliddirzFindfilesTest.test_invaliddir3   s^     	H!DNN<FGH	H2&i.	H 	Hs   !A''A0c                 v   t         j                  }t        j                         }t        j                  | j
                         d}t         |t        j                  |d            }| j                  t        j
                  j                  t        j                  |      |       t        j                  |       y )Nztest_grep.pyF)
r   r/   r!   getcwdchdirr"   r.   curdirr1   join)r   ffsave_cwdfilenamer4   s        r   test_curdirzFindfilesTest.test_curdir9   so    ^^99;
!299h67bggll299h7B
r   c                    t         j                  }t        j                  j	                  | j                  d      }t         || j                  dd            }| j                  t        |      d       | j                  | j                  |       | j                  ||       t         || j                  dd            }| j                  t        |      d       | j                  | j                  |       | j                  ||       t         || j                  dd            }| j                  t        |      d       | j                  | j                  |       y )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   s   ^^dii6 499fe453x="-dmmX.* 499gu56CM1-1fh' 499h67X*1r   c                    t         j                  }t        j                  j	                  | j                        }t        j                  j                  |d      }d}t         |||d            }t        |      }| j                  |d       | j                  ||       | j                  | j                  |       t         |||d            }| j                  t        |      |       | j                  ||       | j                  | j                  |       t        j                  j	                  |      }t         ||dd            }| j                  | j                  |       y )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   s   ^^+77<<	2 63./(m;+h)1 63-.3x=+6h)dmmX. (66401dmmX.r   N)
r   r   r   classmethodr(   r*   r5   r>   rG   rN   r   r   r   r   r   (   s<    1 1 # #/2,/r   r   c                       e Zd Zd Zd Zd Zy)Grep_itTestc                 &   |t         j                  _        t               5 }t         j	                  t        j                  |      t               d d d        j                         j                  d      }|j                          |S # 1 sw Y   :xY w)N
)_grepr   r
   r   r   recompiler$   r2   splitpop)r   rL   r3   liness       r   reportzGrep_itTest.report{   se     	5!MM"**S/84	5

""4(				5 	5s   .BBc                     d}| j                  |      }| j                  t        |      d       | j                  ||d          | j                  |d   d       y )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   sO    C UQ'c58$q:.r   c                 $   d}| j                  |      }| j                  t        |      d       | j                  ||d          | j                  d|d          | j                  d|d          | j	                  |d   j                  d	             y )
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   sz    LC UQ'c58$ha)c58$a++H56r   N)r   r   r   rZ   r_   rg   r   r   r   rQ   rQ   v   s    
/7r   rQ   c                       e Zd Zy)Default_commandTestN)r   r   r   r   r   r   ri   ri      s     	r   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/H%% K/\7(## 7>	(++ 	 zHMMA r   