
    /hh                     B   S r SSKJr  SSKrSSKJr  SSKJr  SSKJ	r	  SSK
r
SSKr " S S5      r\" 5       r " S	 S
5      r\" 5       r " S S\R                   5      r " S S\R                   \5      r " S S\R                   5      r\S:X  a  \R*                  " SS9  gg)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)ExtraAssertions)Varc                       \ rS rSrSrS rSrg)Dummy_searchengine   zGrepDialog.__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                     U R                   $ N)_patselfs    D/opt/python-3.13.8/usr/lib/python3.13/idlelib/idle_test/test_grep.pygetpatDummy_searchengine.getpat   s    yy     N)__name__
__module____qualname____firstlineno____doc__r   __static_attributes__r   r   r   r   r      s    r   r   c                   Z    \ rS rSr\R
                  R                  r\" S5      r\	r
S rSrg)
Dummy_grep   Fc                     g r   r   r   s    r   closeDummy_grep.close#   s    r   r   N)r   r   r   r   r   
GrepDialoggrep_itr   recvarsearchengineenginer   r   r   r   r   r   r      s&     oo%%GZFFr   r   c                   L    \ rS rSr\S 5       r\S 5       rS rS rS r	S r
Srg	)
FindfilesTest)   c                     [         R                  R                  [        5      U l        [         R                  R	                  U R                  5      U l        g r   )ospathrealpath__file__dirnameclss    r   
setUpClassFindfilesTest.setUpClass+   s0    ww''177??3<<0r   c                     U ? U ?g r   )r+   r*   r.   s    r   tearDownClassFindfilesTest.tearDownClass0   s    L#(r   c                     [        5        n[        [        R                  " SSS5      5      nS S S 5        U R	                  W/ 5        U R                  SWR                  5       5        g ! , (       d  f       NA= f)N
invaliddirz*.*Finvalid)r   listr   	findfilesassertEqualassertIngetvalue)r   sfilelists      r   test_invaliddirFindfilesTest.test_invaliddir4   sS    !DNN<FGH 2&i. s   "A((
A6c                 |   [         R                  n[        R                  " 5       n[        R                  " U R
                  5        Sn[        U" [        R                  US5      5      nU R                  [        R
                  R                  [        R                  U5      U5        [        R                  " U5        g )Nztest_grep.pyF)
r   r9   r)   getcwdchdirr*   r8   curdirr;   join)r   ffsave_cwdfilenamer>   s        r   test_curdirFindfilesTest.test_curdir:   so    ^^99;
!299h67bggll299h7B
r   c                    [         R                  n[        R                  R	                  U R                  S5      n[        U" U R                  SS5      5      nU R                  [        U5      S5        U R                  U R                  U5        U R                  X#5        [        U" U R                  SS5      5      nU R                  [        U5      S5        U R                  U R                  U5        U R                  X#5        [        U" U R                  SS5      5      nU R                  [        U5      S5        U R                  U R                  U5        g )Nz
README.txt*.pyF
   z*.txtr   zgrep.*)r   r9   r)   r*   rE   r8   assertGreaterlenr;   r+   assertNotInassertNotEqualr:   )r   rF   readmer>   s       r   	test_baseFindfilesTest.test_baseD   s    ^^dii6 499fe453x="-dmmX.* 499gu56CM1-1f' 499h67X*1r   c                    [         R                  n[        R                  R	                  U R                  5      n[        R                  R                  US5      nSn[        U" X$S5      5      n[        U5      nU R                  US5        U R                  X55        U R                  U R                  U5        [        U" X$S5      5      nU R                  [        U5      U5        U R                  X55        U R                  U R                  U5        [        R                  R	                  U5      n[        U" USS5      5      nU R                  U R                  U5        g )Nzgrep.pyrL   F   T)r   r9   r)   r*   r-   rE   r8   rO   rN   r;   rP   r+   )r   rF   parentgrepfilepatr>   parent_sizes          r   test_recurseFindfilesTest.test_recurseZ   s   ^^+77<<	2 6./(m;+h)1 6-.3x=+6h)dmmX. (66401dmmX.r   r   N)r   r   r   r   classmethodr0   r3   r?   rI   rS   r[   r   r   r   r   r&   r&   )   s<    1 1 # #/2,/r   r&   c                   &    \ rS rSrS rS rS rSrg)Grep_itTestw   c                 2   U[         R                  l        [        5        n[         R	                  [
        R                  " U5      [        5        S S S 5        WR                  5       R                  S5      nUR                  5         U$ ! , (       d  f       N?= f)N
)_grepr$   r   r   r!   recompiler,   r<   splitpop)r   rY   r=   liness       r   reportGrep_itTest.report|   s^    !MM"**S/84 

""4(			 s   /B
Bc                     SnU R                  U5      nU R                  [        U5      S5        U R                  XS   5        U R                  US   S5        g )Nzxyz*xyz*xyz*xyz*xyz*xyz*xyz*   r      zNo hits.)ri   r:   rO   r;   r   rY   rh   s      r   test_unfoundGrep_itTest.test_unfound   sM    C UQ'c8$q:.r   c                    SnU R                  U5      nU R                  [        U5      S5        U R                  XS   5        U R                  SUS   5        U R                  SUS   5        U R	                  US   S	5        g )
Nz<""" !Changing this line will break Test_findfile.test_found!   r   zpy: 1:rm   2      z(Hint:)ri   r:   rO   r;   assertStartsWithrn   s      r   
test_foundGrep_itTest.test_found   sq    LC UQ'c8$ha)c58$eAh1r   r   N)r   r   r   r   ri   ro   rw   r   r   r   r   r_   r_   w   s    
/2r   r_   c                       \ rS rSrSrg)Default_commandTest   r   N)r   r   r   r   r   r   r   r   rz   rz      s     	r   rz   __main__rl   )	verbosity)r   idlelibr   unittesttest.supportr   test.support.testcaser   idlelib.idle_test.mock_tkr   r)   rd   r   r#   r   rc   TestCaser&   r_   rz   r   mainr   r   r   <module>r      s      ( 1 ) 	 	  "#  	K/H%% K/\2(##_ 2>	(++ 	 zMMA r   