
    ;e)}                     N   	 d dl mZ d dlZd dlZd dlZd dlmZmZ d dlZd dlm	Z	 d dl Z d dl
mZ ej        Zej        Zi Z ej        d          xZed<    ej        d          xZed<    ej        d          xZed	<    ej        d          xZed
<   d Zd Z G d dej                  Z G d dej                  Z G d dej                  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 )    )configN)captured_stderrfindfile)mock)Func main	highlightkeys
extensionsc                  @    t           t          _        dt          _        d S )NT)testcfgidleConfuserCfgidlelibtesting     4/usr/lib/python3.11/idlelib/idle_test/test_config.pysetUpModuler      s    HGOOOr   c                  @    t           t          _        dt          _        d S )NF)usercfgr   r   r   r   r   r   r   tearDownModuler   !   s    HGOOOr   c                   ,    e Zd Z	 dZd Zd Zd Zd ZdS )IdleConfParserTestz
        [one]
        one = false
        two = true
        three = 10

        [two]
        one = a string
        two = true
        three = false
    c                 j   t          j        d          }|                    | j                    | j        }|                     |                    ddd          d           |                     |                    ddd          d            ||                    ddd	          d
            ||                    dd          d           |                     |                    ddd          d           |                     |                    ddd          d            ||                    dd          d            ||                    dd          d           |                     |                    dd                      ||                    ddd          d           d S )Nr   onebooltypeFtwoTthreeint
   za stringtruefalsenotexistDEFAULTdefault)r   IdleConfParserread_stringassertEqualassertIsGetassertIsNone)selfparsereqs      r   test_getzIdleConfParserTest.test_get5   s   &r**4;''' 	fjjFj;;UCCCfjjFj;;TBBB
6::eW5:112666
6::eU##Z000fjjFj;;TBBBfjjfj==uEEE 	6::eU##V,,,
6::eW%%w/// 	&**UG44555
6::eWi:88)DDDDDr   c                 2   t          j        d          }|                    | j                    |j        }|                      |d          g d           |                      |d          g d           |                      |d          g            d S )Nr   r   )r   r!   r"   r!   z	not exist)r   r,   r-   GetOptionListassertCountEqualr.   )r2   r3   get_lists      r   test_get_option_listz'IdleConfParserTest.test_get_option_listJ   s    &r**4;''''hhuoo/F/F/FGGGhhuoo/F/F/FGGG+..33333r   c                     t          j        d          }|                                 |                     |                                g            d S )Nr   )r   r,   Loadr.   sectionsr2   r3   s     r   test_load_nothingz$IdleConfParserTest.test_load_nothingR   sE    &r****B/////r   c                    t          d          }t          j        |          }|                                 |                     |                    dd          d           |                     |                    d          dg           d S )Ncfgparser.1Foo Barfoonewbar)r   r   r,   r<   r.   r0   r7   )r2   config_pathr3   s      r   test_load_filez!IdleConfParserTest.test_load_fileW   s|    }--&{33Iu55x@@@--i885'BBBBBr   N)__name__
__module____qualname__r   r5   r:   r?   rF   r   r   r   r   r   &   sb        (
FE E E*4 4 40 0 0
C C C C Cr   r   c                   <    e Zd Z	 d
dZd Zd Zd Zd Zd Zd Z	d	S )IdleUserConfParserTestr   c                 *    t          j        |          S N)r   IdleUserConfParser)r2   paths     r   
new_parserz!IdleUserConfParserTest.new_parserd   s    (...r   c                    |                                  }|                    d           |                     |                    ddd                     |                     |                    ddd                     |                     |                    ddd                     |                     |                    dd          d           |                     |                    ddd                     |                     |                                ddg           |                     |                    dd          d           d S )NFoobarr%   r&   Bar)	rP   add_section
assertTrue	SetOptionassertFalser.   r0   r8   r=   r>   s     r   test_set_optionz&IdleUserConfParserTest.test_set_optiong   s+   ""5!!!((v>>???))%??@@@((w??@@@E5117;;; 	((v>>???foo//%@@@E5116:::::r   c                 |   |                                  }|                    d           |                    ddd           |                     |                    dd                     |                     |                    dd                     |                     |                    dd                     d S )NrR   rS   r%   NotExist)rP   
AddSectionrW   rV   RemoveOptionrX   r>   s     r   test_remove_optionz)IdleUserConfParserTest.test_remove_optionw   s    ""%   v...++E599:::,,UE::;;;,,UG<<=====r   c                 P   |                                  }|                     |                                g            |                    d           |                    d           |                    d           |                     |                                ddg           d S )NrR   rT   )rP   r.   r=   r]   r8   r>   s     r   test_add_sectionz'IdleUserConfParserTest.test_add_section   s    ""**B/// 	%   %   %   foo//%@@@@@r   c                 ~   |                                  }|                    d           |                    d           |                    ddd           |                     |                                g d           |                                 |                     |                                dg           d S )NrR   rT   Idlenameval)rT   rR   rc   )rP   r]   rW   r8   r=   RemoveEmptySectionsr.   r>   s     r   test_remove_empty_sectionsz1IdleUserConfParserTest.test_remove_empty_sections   s    ""%   %   ///foo//1G1G1GHHH""$$$**VH55555r   c                    |                                  }|                    d           |                    d           |                     |                                           |                     |                                g            |                    ddd           |                    d           |                     |                                           |                     |                                dg           d S )NrR   rT   rS   r&   )	rP   r]   rV   IsEmptyr.   r=   rW   rX   r8   r>   s     r   test_is_emptyz$IdleUserConfParserTest.test_is_empty   s    ""%   %   (()))**B///w///%   ))***foo//%99999r   c                    t          j                    5 }t          j                            |d          }|                     |          }|                    d           |                    ddd           |                     t          j        	                    |                     |
                                 |                     t          j        	                    |                     |                    d           |
                                 |                     t          j        	                    |                     d d d            d S # 1 swxY w Y   d S )Nztest.cfgrR   rS   r%   )tempfileTemporaryDirectoryosrO   joinrP   r]   rW   rX   existsSaverV   remove_section)r2   tdirrO   r3   s       r   	test_savez IdleUserConfParserTest.test_save   sZ   (** 	3d7<<j11D__T**Fe$$$UE6222 RW^^D11222KKMMMOOBGNN400111 !!%(((KKMMMRW^^D11222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3s   D5EEEN)r   )
rG   rH   rI   rP   rY   r_   ra   rg   rj   rt   r   r   r   rK   rK   a   s        ,/ / / /; ; ; > > >	A 	A 	A6 6 6: : :3 3 3 3 3r   rK   c                      e Zd Z	 ed             Zed             Zd#dZd Z ej	        e
j                            d          d          d             Z ej	        e
j                            d           d	          d
             Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#d  Z$d! Z%d"S )$IdleConfTestc                 .   i | _         t          j        d          }t          dk    r%t          j                            t                    }n/t          j                            t          j        d                   }|j
        D ]h}t          j                            |d|z            }t          |          5 }|                                | j         |<   d d d            n# 1 swxY w Y   it          j        | _        t!                      t          _        d S )NT_utest__main__r   z../config-%s.def)config_stringr   IdleConfrG   rn   rO   dirname__file__abspathsysconfig_typesro   openread_warn	orig_warnr   )clsconfidle_dirctyperE   fs         r   
setUpClasszIdleConfTest.setUpClass   s   d+++z!!wx00HHwsx{33H& 	4 	4E',,x1Ce1KLLKk"" 4a+,6688!%(4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 vvs   7C  C$	'C$	c                 (    | j         t          _        d S rM   )r   r   r   )r   s    r   tearDownClasszIdleConfTest.tearDownClass   s    }r   Fc                 ,    t          j        |          S )Nrx   )r   r|   )r2   ry   s     r   
new_configzIdleConfTest.new_config   s    f----r   c                 b   	 t          j        d          }|j        D ]}t          j        d          |j        |<   |j        |                             | j        |                    t          j        d          |j        |<   |j        |                             | j        |                    |S )NTrx   r   )	r   r|   r   r,   
defaultCfgr-   r{   rN   r   )r2   r   r   s      r   mock_configzIdleConfTest.mock_config   s    	 d+++& 	G 	GE%+%:2%>%>DOE"OE"..t/A%/HIII"(";B"?"?DLL++D,>u,EFFFFr   winzthis is test for unix systemc                    |                      d          }t          j        dd          5  t          j        dd          5  |                     |                                d           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          j        dd          5  t          j        d	d
          5  t          j        d          5  |                     |                                d           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          j        dd          5  |                     t                    5  |                     t                    5  |                                 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )NTrx   os.path.expanduser	/home/fooreturn_valueos.path.existsz/home/foo/.idlerc~	os.getcwdz/home/foo/cpythonos.mkdirz/home/foo/cpython/.idlercos.path.join/path/not/existsr   r   patchr.   GetUserCfgDirassertRaises
SystemExitFileNotFoundErrorr2   r   s     r   test_get_user_cfg_dir_unixz'IdleConfTest.test_get_user_cfg_dir_unix   s1    d++ Z,;GGG 	L 	L,4@@@ L L  !3!3!5!57JKKKL L L L L L L L L L L L L L L	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L
 Z,3??? 	B 	BK6IJJJ B BZ
++ B B$$T%7%7%9%9%@B B BB B B B B B B B B B B B B B BB B B B B B B B B B B B B B B	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B Z5GHHH 	) 	)"":.. ) )&&'899 ) )&&((() ) ) ) ) ) ) ) ) ) ) ) ) ) )) ) ) ) ) ) ) ) ) ) ) ) ) ) )	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)   B)A9-B9A=	=B A=	BBB1E D))DD)DD)DD)E )D-	-E 0D-	1E  EE!G'<GF8,G8F<<G?F< GG'G	G'G	G''G+.G+zthis is test for Windows systemc                    |                      d          }t          j        dd          5  t          j        dd          5  |                     |                                d           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          j        dd          5  t          j        d	d
          5  t          j        d          5  |                     |                                d           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          j        dd          5  |                     t                    5  |                     t                    5  |                                 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )NTrx   r   zC:\foor   r   zC:\foo\.idlercr   r   zC:\foo\cpythonr   zC:\foo\cpython\.idlercr   r   r   r   s     r   test_get_user_cfg_dir_windowsz*IdleConfTest.test_get_user_cfg_dir_windows   s1    d++ Z,9EEE 	K 	K,4@@@ K K  !3!3!5!57IJJJK K K K K K K K K K K K K K K	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K
 Z,3??? 	B 	BK6HIII B BZ
++ B B$$T%7%7%9%9%@B B BB B B B B B B B B B B B B B BB B B B B B B B B B B B B B B	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B Z5GHHH 	) 	)"":.. ) )&&'899 ) )&&((() ) ) ) ) ) ) ) ) ) ) ) ) ) )) ) ) ) ) ) ) ) ) ) ) ) ) ) )	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)r   c           
      b   |                      d          }d}t          j                            ddi          5  t          j        d|          5  |                                 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |                     |j                                        |j                   |                     |j	                                        |j                   |j        
                                D ]"}|                     |t          j                   #|j	        
                                D ]"}|                     |t          j                   #|j                                        D ]B\  }}|                     |j        t$          j                            |d| d	                     C|j	                                        D ]I\  }}|                     |j        t$          j                            |j        pd
d| d                     Jd S )NTrx   r   rG   __foo__zos.path.dirnamer   zconfig-z.def#z.cfg)r   r   r   dictCreateConfigHandlersr8   r   r   r   r   valuesassertIsInstancer   r,   rN   itemsr.   filern   rO   ro   userdir)r2   r   r   default_parseruser_parsercfg_typer3   s          r   test_create_config_handlersz(IdleConfTest.test_create_config_handlers  s   d++ Z__j)455 	, 	,-HEEE , ,))+++, , , , , , , , , , , , , , ,	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,
 	do2244d6GHHHdl//1143DEEE #o4466 	I 	IN!!.&2GHHHH<..00 	J 	JK!!+v/HIIII !% 5 5 7 7 	O 	OHfV[W\\(4Lh4L4L4LMMO O O O $ 2 2 4 4 	Z 	ZHfV[W\\$,*=#?W?W?W?WXXZ Z Z Z	Z 	Zs5   B	A2&B	2A6	6B	9A6	:B		BBc                 N   |                      d          }t          d          }t          j        |          |j        d<   t          j        |          |j        d<   |                                 | j        } ||j        d         	                    dd          d            ||j        d         
                    d          dg            ||j        d         	                    dd          d            ||j        d         
                    d          dg           d S )NTrx   rA   rC   rB   rD   )r   r   r   r,   r   rN   r   LoadCfgFilesr.   r0   r7   )r2   r   rE   r4   s       r   test_load_cfg_filesz IdleConfTest.test_load_cfg_files&  s   d++ }--!'!6{!C!C$7DDU 	 	4?5!%%i77BBB
4?5!//	::UGDDD 	4<""9e44h???
4<,,Y77%AAAAAr   c                 
   |                                  }t          j        d          5 }|                                 |                     |j        t          |j                             d d d            d S # 1 swxY w Y   d S )Nz&idlelib.config.IdleUserConfParser.Save)r   r   r   SaveUserCfgFilesr.   
call_countlenr   )r2   r   ms      r   test_save_user_cfg_filesz%IdleConfTest.test_save_user_cfg_files;  s    !!Z@AA 	>Q!!###Q\3t|+<+<===	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	>s   AA88A<?A<c           	         |                                  }| j        } ||                    ddd          d            ||                    dddd          d           t          j        d          5 } ||                    ddd	d          d             ||                    ddd
          d             ||                    ddd
d          d            ||j        d           d d d            d S # 1 swxY w Y   d S )Nr	   EditorWindowwidth80r#   r   P   idlelib.config._warnfont	NotExistsNEr*      )r   r.   	GetOptionr   r   r   )r2   r   r4   r   s       r   test_get_optionzIdleConfTest.test_get_optionB  sY   !!
4>>&.'::DAAA
4>>&.'>FFKKKZ.// 	$5Bt~~fnf5~II4PPPBt~~fnkBBDIIIBt~~fnk4~PPRVWWWBu###		$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$s   4A9C::C>C>c                     |                                  }|                    dddd           |                     |                    ddd          d           d S )Nr	   rR   rS   rD   )r   rW   r.   r   r   s     r   rY   zIdleConfTest.test_set_optionN  sW    !!vueX666u==xHHHHHr   c                    |                                  }|                     |                    dd          g d           |                     |                    dd          g d           |                     t          j                  5  |                    dd           d d d            n# 1 swxY w Y   |                     t          j                  5  |                    dd           d d d            d S # 1 swxY w Y   d S )Nr+   r	   )Generalr   PyShellIndentThemeKeysHistory	HelpFilesuserfoobar	notexists)r   r8   GetSectionListr   r   InvalidConfigSetInvalidConfigTyper   s     r   test_get_section_listz"IdleConfTest.test_get_section_listT  s   !!	622- - -	. 	. 	. 	//- - -	. 	. 	.
 v677 	2 	2&111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2v788 	8 	8	;777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8s$   B//B36B3C==DDc                    |                                  }| j        } ||                    dd          ddd            ||                    dd          ddd           |                    dd	d
d           |                    dd	dd           t	          j        d          5   ||                    d	d          ddd           d d d            d S # 1 swxY w Y   d S )NIDLE Classicnormalz#000000z#ffffff)
foreground
backgroundcursorblackr
   Foobarznormal-foregroundz#747474znormal-backgroundz#171717r   )r   r.   GetHighlightrW   r   r   r2   r   r4   s      r   test_get_highlightzIdleConfTest.test_get_highlighte  s   !!
4^X66yGP9R 9R 	S 	S 	S 	4^X66wGP9R 9R 	S 	S 	S 	{H.A9MMM{H.A9MMMZ.// 	Q 	QBt  844YEN7P 7P Q Q Q	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Qs   &$CCCc                 F   |                                  }|                     |                    dd          |                    dd                     |                     t          j                  5  |                    dd           d d d            d S # 1 swxY w Y   d S )Nr+   r   r   bad)r   r.   GetThemeDictr   r   InvalidThemer   s     r   test_get_theme_dictz IdleConfTest.test_get_theme_dictw  s    !! 	i88fn55	7 	7 	7 v233 	5 	5e^444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5s   2BBBc                    |                                  }|                     |                                |                    d                     |                     |                                |                    d                     d S )Nr   r   )r   r.   CurrentThemecurrent_colors_and_keysCurrentKeysr   s     r   test_get_current_theme_and_keysz,IdleConfTest.test_get_current_theme_and_keys  sy    !!**,,d.J.J7.S.STTT))++T-I-I&-Q-QRRRRRr   c                     |                                  }|                     |                    d          d           d S )Nr   r   )r   r.   r   r   s     r   test_current_colors_and_keysz)IdleConfTest.test_current_colors_and_keys  s=    !!55g>>OOOOOr   c                    t           j        }|                     d          }dt           _        |                     |                                d           dt           _        |                     |                                d           dt           _        |                     |                                d           |t           _        d S )	NTrx   win32IDLE Classic WindowsdarwinIDLE Classic OSX
some-linuxIDLE Modern Unix)r   platformr   r.   default_keysr2   current_platformr   s      r   test_default_keyszIdleConfTest.test_default_keys  s    <d++**,,.DEEE**,,.@AAA#**,,.@AAA (r   c                    t                               d           | j        }t          j        } | |d          g             | |            dg            | |d          dg            | |d          ddg            | |dd	          ddg           t                               d           t                               d           d S )
Nzn
            [ZzDummy]
            enable = True
            [DISABLE]
            enable = False
            T)
shell_onlyZzDummy)editor_onlyF)active_onlyDISABLE)r  r  )userextnr-   r.   r   GetExtensionsrr   )r2   r4   iGEs      r   test_get_extensionsz IdleConfTest.test_get_extensions  s     	 	 	 $
33$$$$
33559+
334   9+...
335!!!Iy#9:::
335d333i5KLLL	***	*****r   c                     |                                  }|                     |                    |                    dd                    g d           d S )Nr+   r   )AutoCompleteCodeContextFormatParagraph
ParenMatchr  )r   r8   RemoveKeyBindNamesr   r   s     r   test_remove_key_bind_namesz'IdleConfTest.test_remove_key_bind_names  sd    !!##D$7$7	<$P$PQQWWW	Y 	Y 	Y 	Y 	Yr   c                    t                               d           | j        } |t                              d          d            |t                              d          d            t                               d           d S )N=
            [ZzDummy]
            enable = True
            zz-inr  zz-out)r  r-   r.   r   GetExtnNameForEventrr   )r2   r4   s     r   test_get_extn_name_for_eventz)IdleConfTest.test_get_extn_name_for_event  s      	 	 	 
8''//;;;
8''00$777	*****r   c                     t                               d           |                     t                              d          ddgi           t                               d           d S )Nr  r  <<z-in>>!<Control-Shift-KeyRelease-Insert>)r  r-   r.   r   GetExtensionKeysrr   r2   s    r   test_get_extension_keysz$IdleConfTest.test_get_extension_keys  sr      	 	 	 	229==<=>	@ 	@ 	@	*****r   c                     t                               d           | j        }t          j        } | |d          i            dgdgd} | |d          |           t                               d           d S )Nr  r   r  z!<Control-Shift-KeyRelease-Delete>)r  z	<<z-out>>r  )r  r-   r.   r   GetExtensionBindingsrr   )r2   r4   iGEBexpects       r   test_get_extension_bindingsz(IdleConfTest.test_get_extension_bindings  s      	 	 	 ,
44b!!!BC CDF F
44	??F###	*****r   c                    |                                  }| j        } ||                    dd          ddg            ||                    dd          ddg            ||                    dd          d	d
g            ||                    dd          dg            ||                    dd          dg            ||                    dd          g             ||                    dd          g            d S )Nr   <<copy>>z<Control-Shift-Key-C>z<Control-Key-Insert>IDLE Classic Unixz<Alt-Key-w>z<Meta-Key-w>r   z<Control-Key-c>z<Control-Key-C>zIDLE Classic Mac<Command-Key-c>r   z
NOT EXISTS)r   r.   GetKeyBindingr   s      r   test_get_keybindingz IdleConfTest.test_get_keybinding  sE   !!
40*==$&<=	? 	? 	?
41:>>N+	- 	- 	-
44jAA 12	4 	4 	4
40*==@Q?RSSS
40*==@Q?RSSS 	4lJ77<<<
40,??DDDDDr   c                    t           j        }|                                 }dt           _        |                     |                                |                    |                                                     |t           _        d S )Nr   )r   r   r   r.   GetCurrentKeySet	GetKeySetr   r   s      r   test_get_current_keysetz$IdleConfTest.test_get_current_keyset  sk    <!! $..00$..AQAQASAS2T2TUUU (r   c                    |                                  }|j        d                             d           |j        d                             d           |j        d                             ddd           |j        d                             ddd           |                     |                    d          d	         d
           d S )Nr   r   Foobar_cfgBindingsenableTruenewfooz<Key-F3>r   z
<<newfoo>>r   )r   r   rU   setr.   r(  r   s     r   test_get_keysetzIdleConfTest.test_get_keyset  s    !! 	%11(;;;%112FGGG%))(HfEEE%))*>*UUU(:;;LI2NNNNNr   c                 n   |                                  }|                     |                    d                     |                     |                    d                     |                     |                    d                     |                     |                    d                     d S )Ncopycutzdel-word-rightz
not-exists)r   rV   IsCoreBindingrX   r   s     r   test_is_core_bindingz!IdleConfTest.test_is_core_binding  s    !!**622333**511222**+;<<===++L99:::::r   c                 <   |                                  }|                     |                    d          g            |                     |                    d          g            |                     t          j                  5  |                     |                    d          g            d d d            n# 1 swxY w Y   |                     |                                |                    d          |                    d          z              |j        d         	                    ddd           |j        d         	                    ddd	           |j        d         	                    dd
d           |j        d         	                    ddd           |                     |                    d          g d           |                     |                                |                    d          |                    d          z              d S )Nr+   r   r   r	   r   4zPython;https://python.org3zPython:https://python.org2z/Pillow;https://pillow.readthedocs.io/en/latest/1z/IDLE;C:/Programs/Python36/Lib/idlelib/help.html))IDLEz*C:/Programs/Python36/Lib/idlelib/help.htmlr:  )Pillowz(https://pillow.readthedocs.io/en/latest/r9  )Pythonzhttps://python.orgr7  )
r   r.   GetExtraHelpSourceListr   r   r   r8   GetAllExtraHelpSourcesListr   rW   r   s     r   test_extra_help_source_listz(IdleConfTest.test_extra_help_source_list  sk    !! 	44Y??DDD44V<<bAAAv677 	E 	ET88??DDD	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E++--''	22T5P5PQW5X5XX	Z 	Z 	Z
 	V&&{C9TUUUV&&{C9TUUUV&&{C9jkkkV&&{C9jkkk44V<<A A A	B 	B 	B 	++--''	22T5P5PQW5X5XX	Z 	Z 	Z 	Z 	Zs   *B<<C C c                    ddl m} ddlm} ddlm} |                                 } |d            |            }|                                 |                     |dd|                    }| 	                    |
                    |d	d
          |d         |d         dk    rdn|d         |d         f           |                                 ~d S )Nr   )requires)Tk)FontguiTkFixedFontT)rd   rp   rootr	   r   familysizer$   weight)test.supportrB  tkinterrC  tkinter.fontrD  r   withdrawactualr.   GetFontdestroy)r2   rB  rC  rD  r   rG  r   s          r   test_get_fontzIdleConfTest.test_get_font*  s    ))))))%%%%%%!!rttKK-4HHHIILLv~66x[&	Q""AfIq{K	M 	M 	M
 	DDr   c                 R   |                                  }| j        } ||                                d         dg            ||                                d         ddg            ||                                d         dg            ||                    d          d         d	d
g            ||                    d          d         dg            ||                    d          d         ddg            ||                    d          d         ddg           d S )Nz<<center-insert>>z<Control-l>r!  z<Control-c>z<Control-C>z<<history-next>>z<Alt-n>r   z<Control-Key-l>z<Control-Key-L>r   r#  r"  z<Alt-Key-n>z<Meta-Key-n>r   )r   r.   GetCoreKeysr   s      r   test_get_core_keyszIdleConfTest.test_get_core_keys=  s]   !!
412]ODDD
4j)M=+IJJJ
401I;???
42334GH01	3 	3 	3
4.//
;>O=PQQQ
4/001CD>*	, 	, 	,
4.//0BCN+	- 	- 	- 	- 	-r   N)F)&rG   rH   rI   classmethodr   r   r   r   unittestskipIfr   r   
startswithr   r   r   r   r   r   rY   r   r   r   r   r   r   r	  r  r  r  r  r%  r)  r0  r5  r@  rR  rU  r   r   r   rv   rv      s`         [  % % [%. . . .   X_S\,,U335STT) ) UT), X_007779Z[[) ) \[),Z Z Z6B B B*> > >
$ 
$ 
$I I I8 8 8"Q Q Q$
5 
5 
5S S SP P P
( ( ( + + +$Y Y Y+ + ++ + ++ + +E E E"( ( ("O O O; ; ;Z Z Z6  &- - - - -r   rv   c                   n    e Zd Z	 ej        ZdZe                                Zd Zd Z	d Z
d Zd Zd ZdS )	CurrentColorKeysTestr   c                    |                      |                     d          | j                   t                              d           |                      |                     d          | j                   dt          d         d<   |                      |                     d          d           dt          d         d<   |                      |                     d          | j                   t                              d           d S )Nr   z<
            [Theme]
            default = True
            IDLE Newrd   non-existent)r.   	colorkeysdefault_themeusermainr-   rr   r  s    r   test_old_builtin_themez+CurrentColorKeysTest.test_old_builtin_themeX  s    00$2DEEE  	 	 	
 	00$2DEEE$.&!00*===$2&!00$2DEEE(((((r   c                    t                               d           |                     |                     d          d           dt           d         d<   |                     |                     d          d           dt           d         d<   |                     |                     d          | j                   t                               d           d S )NzZ
            [Theme]
            default = True
            name2 = IDLE Dark
            r   z	IDLE Darkr]  rd   r^  name2)ra  r-   r.   r_  r`  rr   r  s    r   test_new_builtin_themez+CurrentColorKeysTest.test_new_builtin_themej  s      	 	 	
 	00+>>>$.&!00+>>>%3'"00$2DEEE(((((r   c                    t                               d           |                     |                     d          | j                   t
                              d           |                     |                     d          d           dt           d         d<   |                     |                     d          d           t                               d           t
                              d           d S )Nz\
            [Theme]
            default = False
            name = Custom Dark
            r   z[Custom Dark]
a=bzCustom Darkr^  rd  )ra  r-   r.   r_  r`  userhighrr   r  s    r   test_user_override_themez-CurrentColorKeysTest.test_user_override_themez  s      	 	 	
 	00$2DEEE122200-@@@%3'"00-@@@(((.....r   c                    |                      |                     d          | j                   t                              d           |                      |                     d          d           dt          d         d<   |                      |                     d          | j                   t                              d           d S )Nr   z`
            [Keys]
            default = True
            name = IDLE Classic Unix
            r"  r^  rd   )r.   r_  r   ra  r-   rr   r  s    r   test_old_builtin_keysz*CurrentColorKeysTest.test_old_builtin_keys  s    //1BCCC  	 	 	
 	//1DEEE#1 //1BCCC'''''r   c                    t                               d           |                     |                     d          d           dt           d         d<   |                     |                     d          d           dt           d         d<   |                     |                     d          | j                   t                               d           d S )Nz`
            [Keys]
            default = True
            name2 = IDLE Modern Unix
            r   r   r"  rd   r^  rd  )ra  r-   r.   r_  r   rr   r  s    r   test_new_builtin_keysz*CurrentColorKeysTest.test_new_builtin_keys  s      	 	 	
 	//1CDDD#6 //1CDDD$2!//1BCCC'''''r   c                    t                               d           |                     |                     d          | j                   t
                              d           |                     |                     d          d           dt           d         d<   |                     |                     d          d           t                               d           t
                              d           d S )Nz[
            [Keys]
            default = False
            name = Custom Keys
            r   z[Custom Keys]
a=bzCustom Keysr^  rd  )ra  r-   r.   r_  r   userkeysrr   r  s    r   test_user_override_keysz,CurrentColorKeysTest.test_user_override_keys  s      	 	 	
 	//1BCCC1222//???$2!//???'''.....r   N)rG   rH   rI   r   r   r_  r`  r   rb  re  rh  rj  rl  ro  r   r   r   r[  r[  M  s         0I"M((**L) ) )$) ) ) / / /"( ( (( ( ( / / / / /r   r[  c                   ~    e Zd Zi i i i dZd Zdddiidddiid	d
diii dZd Zd Zd Zd Z	d Z
d Zd Zd Zd ZdS )ChangesTest)r	   r
   r   r   c                     | j         }|                    dddd           |                    dddd           |                    d	d
dd           |S )Nr	   Msecmitemmvalr
   Hsechitemhvalr   Kseckitemkvalchanges
add_optionr2   r}  s     r   loadzChangesTest.load  s\    ,667F;;;;@@@667F;;;r   rs  rt  ru  rv  rw  rx  ry  rz  r{  c                 6    t          j                    | _        d S rM   )r   ConfigChangesr}  r  s    r   setUpzChangesTest.setUp  s    +--r   c                 F    |                      | j        | j                   d S rM   )r.   r}  emptyr  s    r   	test_initzChangesTest.test_init  s"    tz22222r   c                     |                                  }|                     || j                   |                    dddd           |                     || j                   d S )Nr	   rs  rt  ru  )r  r.   loadedr~  r  s     r   test_add_optionzChangesTest.test_add_option  s_    ))++$+...667F;;;$+.....r   c                 R   | j         j        }|                      |dddd                     |                      |dddd                     |                     t
          d         d         d           |                      |dddd                     |                     t
          d         d         d           |                      |dddd                     |                     t
                              dd                     t
                              d           d S )Nr	   r   what0
use-spacesr:  )r}  save_optionrV   rX   r.   ra  
has_optionrr   )r2   r  s     r   test_save_optionzChangesTest.test_save_option  s   l.FHfcBBCCCVXvsCCDDD(+F3S999FHlCHHIII(+L93???FHlCHHIII,,X|DDEEE)))))r   c                    |                                  }|                     |                                           |                     t          d         d         d           |                     t
          d         d         d           |                     t          d         d         d	           |                    d
ddd           |                     |                                           t          	                    d           t
          	                    d           t          	                    d           d S )Nrs  rt  ru  rv  rw  rx  ry  rz  r{  r	   )
r  rV   save_allr.   ra  rg  rn  r~  rX   rr   r  s     r   test_save_addedzChangesTest.test_save_added  s	   ))++((**+++&)'2F;;;&)'2F;;;&)'2F;;;667F;;;))++,,,'''''''''''r   c                 T   | j         }|                    dddd           |                    dddd           |                                 |                     t
                              dd                     |                     t
                              dd                     d S )Nr	   r   r;  idledocELDIcodeldi)r}  r  r~  r  rX   ra  r  rV   r  s     r   test_save_helpzChangesTest.test_save_help  s    ,FKCCC6;	BBB,,[&AABBB++K@@AAAAAr   c                 D    | j         }|                    dddd           d S )Nr	   r   r  r:  r|  r  s     r   test_save_defaultzChangesTest.test_save_default  s)    ,68\3?????r   c                    |                                  }|                    dd           |                     || j                   dD ]\  }}t          |                             |dd           |                    ||           |                     t                    5  ||         |          t          |         |          d d d            n# 1 swxY w Y   d S )Nr	   fake))r	   rs  )r   ry  rd   value)r  delete_sectionr.   r  r   rW   r   KeyError)r2   r}  cfgtypesections       r   test_delete_sectionzChangesTest.test_delete_section   s   ))++vv...$+... D 	* 	*GWG&&w@@@""7G444""8,, * * )) ))* * * * * * * * * * * * * * *	* 	*s   "CC	C	c                     |                                  }|                                 |                     || j                   d S rM   )r  clearr.   r  r  s     r   
test_clearzChangesTest.test_clear  s:    ))++$*-----r   N)rG   rH   rI   r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   rq  rq    s        BrCCE   01"Wf$56/0   F
. . .3 3 3/ / /
* 
* 
*
( 
( 
(B B B@ @ @	* 	* 	*. . . . .r   rq  c                       e Zd Zd ZdS )WarningTestc                    | j         }t                      t          _        t	                      5 }t          j        dd           d d d            n# 1 swxY w Y    |t          j        dh            ||                                d           t	                      5 }t          j        dd           d d d            n# 1 swxY w Y    ||                                d           t	                      5 }t          j        dd           d d d            n# 1 swxY w Y    |t          j        ddh            ||                                d	           d S )
Nwarningkey)r  r  zwarning
r   warn2yek)r  r  zwarn2
)r.   r/  r   _warnedr   r   getvalue)r2   Equalstderrs      r   	test_warnzWarningTest.test_warn  s     	+&LE***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+fn01222foo000 	+&LE***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+foo$$$ 	)&L%(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)fn0/BCCCfoo.....s5   AAAC  CC7DD DN)rG   rH   rI   r  r   r   r   r  r    s#        / / / / /r   r  rz      )	verbosity) r   r   r   rn   rl   rK  r   r   rW  r   idlelib.idle_test.mock_idler   r   r   r   r   rN   ra  rg  rn  r  r   r   TestCaser   rK   rv   r[  rq  r  rG   r	   r   r   r   <module>r     s  
       



 				  2 2 2 2 2 2 2 2         , , , , , , ?


6V6r:: :76?";&";B"?"? ?7;6V6r:: :76?#<6#<R#@#@ @7<     
8C 8C 8C 8C 8C* 8C 8C 8CvP3 P3 P3 P3 P3X. P3 P3 P3fV- V- V- V- V-8$ V- V- V-rl/ l/ l/ l/ l/8, l/ l/ l/^S. S. S. S. S.(# S. S. S.l/ / / / /(# / / /$ zHMA r   