Ë
    #´˜j  ã                   ó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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                   e«      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)ÚExtraAssertions)ÚVarc                   ó   — e Zd ZdZd„ Zy)ÚDummy_searchenginezÒGrepDialog.__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    ú-lib/python3.12/idlelib/idle_test/test_grep.pyÚgetpatzDummy_searchengine.getpat   s   € Ø�y‰yÐó    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&   „ ð �o‰o×%Ñ%€Gá�‹Z€FØ€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   € ä—w‘w×'Ñ'¬Ó1ˆŒÜ—7‘7—?‘? 3§<¡<Ó0ˆ�r   c                 ó   — | ` | `y r
   )r$   r#   r'   s    r   ÚtearDownClasszFindfilesTest.tearDownClass0   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_invaliddir4   sS   € ÜÔ !ÜœDŸN™N¨<¸ÀÓFÓGˆH÷ à×Ñ˜ 2Ô&Ø�‰�i §¡£Õ.÷ Ðú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   r0   r"   ÚgetcwdÚchdirr#   r/   Úcurdirr2   Újoin)r   ÚffÚsave_cwdÚfilenamer5   s        r   Útest_curdirzFindfilesTest.test_curdir:   so   € ä�^‰^ˆÜ—9‘9“;ˆÜ
�‰�—‘ÔØ!ˆÜ™œ2Ÿ9™9 h°Ó6Ó7ˆØ�‰”b—g‘g—l‘l¤2§9¡9¨hÓ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   r0   r"   r#   r;   r/   ÚassertGreaterÚlenr2   r$   ÚassertNotInÚassertNotEqualr1   )r   r<   Úreadmer5   s       r   Ú	test_basezFindfilesTest.test_baseD   s  € Ü�^‰^ˆÜ—‘—‘˜dŸi™i¨Ó6ˆô ™˜4Ÿ9™9 f¨eÓ4Ó5ˆà×Ñœ3˜x›=¨"Ô-Ø�‰�d—m‘m XÔ.Ø×Ñ˜ Ô*ô ™˜4Ÿ9™9 g¨uÓ5Ó6ˆØ×ÑœC ›M¨1Ô-Ø×Ñ˜Ÿ™¨Ô1Ø�‰�f˜hÔ'ô ™˜4Ÿ9™9 h°Ó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.pyrA   Fé   T)r   r0   r"   r#   r&   r;   r/   rD   rC   r2   rE   r$   )r   r<   ÚparentÚgrepfileÚpatr5   Úparent_sizes          r   Útest_recursezFindfilesTest.test_recurseZ   s  € Ü�^‰^ˆÜ—‘—‘ §¡Ó+ˆÜ—7‘7—<‘< ¨	Ó2ˆØˆô ™˜6 3¨Ó.Ó/ˆÜ˜(“mˆà×Ñ˜;¨Ô+Ø�‰�h Ô)à×Ñ˜Ÿ™¨Ô1ô ™˜6 3¨Ó-Ó.ˆà×Ñœ3˜x›=¨+Ô6Ø�‰�h Ô)à�‰�d—m‘m XÔ.ô —‘—‘ Ó(ˆÜ™˜6 6¨4Ó0Ó1ˆØ�‰�d—m‘m XÕ.r   N)
r   r   r   Úclassmethodr)   r+   r6   r?   rH   rO   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%   r3   ÚsplitÚpop)r   rM   r4   Úliness       r   ÚreportzGrep_itTest.report|   s^   € ØŒ�‰ÔÜÔ !Ü�M‰Mœ"Ÿ*™* S›/¬8Ô4÷ à—
‘
“×"Ñ" 4Ó(ˆØ�	‰	ŒØˆ÷	 Ðús    .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.)r[   r1   rD   r2   ©r   rM   rZ   s      r   Útest_unfoundzGrep_itTest.test_unfound„   sO   € ØˆØ—‘˜CÓ ˆØ×Ñœ˜U› QÔ'Ø�‰�c˜5 ™8Ô$Ø×Ñ˜˜q™ :Õ.r   c                 ó  — d}| j                  |«      }| j                  t        |«      d«       | j                  ||d   «       | j                  d|d   «       | j                  d|d   «       | j	                  |d   d	«       y )
Nz<""" !Changing this line will break Test_findfile.test_found!é   r   zpy: 1:r^   Ú2é   é   z(Hint:)r[   r1   rD   r2   ÚassertStartsWithr_   s      r   Ú
test_foundzGrep_itTest.test_found‹   ss   € àLˆØ—‘˜CÓ ˆØ×Ñœ˜U› QÔ'Ø�‰�c˜5 ™8Ô$Ø�‰�h  a¡Ô)Ø�‰�c˜5 ™8Ô$Ø×Ñ˜e A™h¨Õ1r   N)r   r   r   r[   r`   rg   r   r   r   rR   rR   w   s   „ ò
ò/ó2r   rR   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   Útest.support.testcaser   Úidlelib.idle_test.mock_tkr   r"   rV   r   r   r   rU   ÚTestCaser    rR   ri   r   Úmainr   r   r   Ú<module>rs      s    ðñõ Û Ý (Ý 1Ý )Û 	Û 	÷ñ ñ "Ó#€÷ñ ñ 	‹€ôK/�H×%Ñ%ô K/ô\2�(×#Ñ# _ô 2ô>	˜(×+Ñ+ô 	ð ˆzÒØ€H‡M�M˜AÖð r   