
    z%i                     z   d Z ddlmZ ddlZddlmZmZ ddlmZm	Z	 ddl
mZ ddlmZ ddlmZ ddlZdd	lmZ ej&                  Z G d
 dej*                        Z G d dej*                        Z G d dej*                        Z G d d      Z G d dej*                        Zedk(  r ej8                  d       yy)zTest help_about, coverage 100%.
help_about.build_bits branches on sys.platform='darwin'.
'100% combines coverage on Mac and others.
    )
help_aboutN)requiresfindfile)TkTclError)Func)	Mbox_func)textview)python_versionc                   N    e Zd ZdZed        Zed        Zd Zd Zd Z	d Z
d Zy	)
LiveDialogTestzmSimulate user clicking buttons other than [Close].

    Test that invoked textview has text from source.
    c                     t        d       t               | _        | j                  j                          t	        | j                  dd      | _        y Ngui
About IDLET_utestr   r   rootwithdrawAboutdialogclss    U/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/idlelib/idle_test/test_help_about.py
setUpClasszLiveDialogTest.setUpClass   6    4388\$?
    c                 t    | ` | j                  j                          | j                  j                          | `y Nr   r   update_idletasksdestroyr   s    r   tearDownClasszLiveDialogTest.tearDownClass   ,    J!!#Hr   c                 D    | j                  t        j                  d       y )N)3264)assertInr   bitsselfs    r   test_build_bitszLiveDialogTest.test_build_bits&   s    joo|4r   c                 X    | j                  | j                  j                         d       y)Test about dialog titler   N)assertEqualr   titler+   s    r   test_dialog_titlez LiveDialogTest.test_dialog_title)   s    **,l;r   c                     t         j                  j                  | j                  j                  d         \  }}t         j                  j                  |      \  }}| j                  |d       y)zTest about dialog logo.fileidle_48N)ospathsplitr   
icon_imagesplitextr0   )r,   r7   r4   fnexts        r   test_dialog_logozLiveDialogTest.test_dialog_logo-   sO    WW]]4;;#9#9&#AB
d''""4(CY'r   c           	         | j                   }|j                  t        df|j                  t        df|j
                  t        dfg}|D ]  \  }}}| j                  |      5  |j                          |j                          |j                  j                  j                  j                  j                  }|j                  }t!        |      dk  r| j#                  |dz          | j%                  |d    |dd	             | j%                  |d
    |dd             |j                  j'                          ddd        y# 1 sw Y   xY w)z1Test buttons whose commands use printer function.license	copyrightcreditsname   z full text was not foundr   1.01.end   z2.0z2.endN)r   
py_licenser?   py_copyrightr@   
py_creditsrA   subTest_Printer__setupinvoke_current_textview	viewframe	textframetextget_Printer__lineslenfailr0   r#   )r,   r   button_sourcesbuttonprinterrC   rR   liness           r   test_printer_buttonsz#LiveDialogTest.test_printer_buttons3   s+   !,,gyA!..	;G!,,gyAC &4 
	3!FGT4( 	3'')..88BBGGKK//u:>IId%??@  q3ug+>?  q3ug+>?((002	3 	3
	3	3 	3s    CE  E
	c           
      (   | j                   }| j                   j                  ddf| j                   j                  ddf| j                   j                  ddfg}|D ]  \  }}}| j	                  |      5  |j                          t        |d	      }|j                  j                  j                  j                  j                  }t        |d
      5 }| j                  |j                         j                          |dd             |j                          | j                  |j                         j                          |dd             ddd       |j                  j!                          ddd         y# 1 sw Y   /xY w# 1 sw Y   8xY w)z Test buttons that display files.z
README.txtreadmezNEWS.txtnewszCREDITS.txtrA   rB   idlelib)subdirzutf-8)encodingrE   rF   z3.0z3.endN)r   r\   	idle_newsidle_creditsrK   rM   r   rN   rO   rP   rQ   rR   openr0   readlinestripr#   )	r,   r   rV   rW   filenamerC   r;   rR   fs	            r   test_file_buttonsz LiveDialogTest.test_file_buttonsF   sU   ;;--|XF;;00*fE;;33]INP '5 		3"FHd,,D,) 3hy9..88BBGGKK"w/ P1$$QZZ\%7%7%93ug;NOJJL$$QZZ\%7%7%93ug;NOP ((0023 3		3
P P	3 3s&   3AFA;E;"F;F FF	N)__name__
__module____qualname____doc__classmethodr   r$   r-   r2   r=   rZ   rh    r   r   r   r      sJ     @ @  5<(3&3r   r   c                   6    e Zd ZdZed        Zed        Zd Zy)DefaultTitleTestzTest default title.c                     t        d       t               | _        | j                  j                          t	        | j                  d      | _        y )Nr   Tr   r   r   s    r   r   zDefaultTitleTest.setUpClass\   s4    4388D1
r   c                 t    | ` | j                  j                          | j                  j                          | `y r    r!   r   s    r   r$   zDefaultTitleTest.tearDownClassc   r%   r   c                     | j                  | j                  j                         dt                dt        j
                   d       y)r/   zAbout IDLE z (z bit)N)r0   r   r1   r   r   r*   r+   s    r   r2   z"DefaultTitleTest.test_dialog_titlej   s=    **,&~'7&8joo.e5	6r   N)ri   rj   rk   rl   rm   r   r$   r2   rn   r   r   rp   rp   Y   s0    2 2  6r   rp   c                   6    e Zd ZdZed        Zed        Zd Zy)	CloseTestz%Simulate user clicking [Close] buttonc                     t        d       t               | _        | j                  j                          t	        | j                  dd      | _        y r   r   r   s    r   r   zCloseTest.setUpClasst   r   r   c                 t    | ` | j                  j                          | j                  j                          | `y r    r!   r   s    r   r$   zCloseTest.tearDownClass{   r%   r   c                 (   | j                  | j                  j                         d       | j                  j                  j	                          | j                  t              5  | j                  j                          d d d        y # 1 sw Y   y xY w)NToplevel)r0   r   winfo_class	button_okrM   assertRaisesr   r+   s    r   
test_closezCloseTest.test_close   sh    002J?$$&x( 	&KK##%	& 	& 	&s   $BBN)ri   rj   rk   rl   rm   r   r$   r}   rn   r   r   ru   ru   q   s2    /@ @  &r   ru   c                   p    e Zd Zej                  Zej                  Zej                  Z	ej                  Z
dZy)Dummy_about_dialogTN)ri   rj   rk   r   show_idle_creditsrb   show_readmeidle_readmeshow_idle_newsra   display_file_textr   rn   r   r   r   r      s4    **L##K$$I//Fr   r   c                   D    e Zd ZdZ e       Zed        Zed        Zd Z	y)DisplayFileTestzTest functions that display files.

    While somewhat redundant with gui-based test_file_dialog,
    these unit tests run on all buildbots, not just a few.
    c                     t         j                  | _        t         j                  | _        t               | _        t               | _        | j                  t         _        | j                  t         _        y r    )	r
   	showerror
orig_error	view_text	orig_viewr	   errorr   viewr   s    r   r   zDisplayFileTest.setUpClass   sF    !++ **K	6 YY XXr   c                 X    | j                   t        _        | j                  t        _        y r    )r   r
   r   r   r   r   s    r   r$   zDisplayFileTest.tearDownClass   s     ^^ ]]r   c                    | j                   j                  | j                   j                  | j                   j                  fD ]  }d| j                  _        d| j                  _        | j                  |      5   |        | j                  | j                  j
                  d       | j                  | j                  j                  d       d d d         y # 1 sw Y   xY w)N F)handlerT)
r   rb   r   ra   r   messager   calledrK   r0   )r,   r   s     r   test_file_displayz!DisplayFileTest.test_file_display   s    00//--/ 	9G "$DJJ$DIIg. 9	  !3!3R8  !1!1489 9	9
9 9s   9ACC!	N)
ri   rj   rk   rl   r   r   rm   r   r$   r   rn   r   r   r   r      s<    
  !F& & + +	9r   r   __main__rD   )	verbosity)rl   r^   r   unittesttest.supportr   r   tkinterr   r   idlelib.idle_test.mock_idler   idlelib.idle_test.mock_tkr	   r
   os.pathr6   platformr   AboutDialogr   TestCaser   rp   ru   r   r   ri   mainrn   r   r   <module>r      s   
   +   , /   #C3X&& C3L6x(( 60&!! &0 9h'' 9D zHMMA r   