o
    JAf.}  ã                   @   sN  	 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 d¡ Zed< e d¡ Zed< e d¡ Zed	< e d¡ Zed
< dd„ Zdd„ ZG dd„ dejƒZG dd„ dejƒZG dd„ dejƒZG dd„ dejƒZG dd„ dejƒZG dd„ dejƒZedkr¥ejdd dS dS )é    )ÚconfigN)Úcaptured_stderrÚfindfile)Úmock)ÚFuncÚ ÚmainÚ	highlightÚkeysÚ
extensionsc                   C   ó   t t_dt_d S )NT)ÚtestcfgÚidleConfÚuserCfgÚidlelibÚtesting© r   r   ú4/usr/lib/python3.10/idlelib/idle_test/test_config.pyÚsetUpModule   ó   
r   c                   C   r   )NF)Úusercfgr   r   r   r   r   r   r   r   ÚtearDownModule!   r   r   c                   @   s2   e Zd Z	 dZdd„ Zdd„ Zdd„ Zdd	„ Zd
S )ÚIdleConfParserTestzœ
        [one]
        one = false
        two = true
        three = 10

        [two]
        one = a string
        two = true
        three = false
    c                 C   sô   t  d¡}| | j ¡ | j}|  |jddddd¡ |  |jddddd¡ ||jddd	dd
ƒ || dd¡dƒ |  |jddddd¡ |  |jddddd¡ || dd¡dƒ || dd¡dƒ |  | dd¡¡ ||jdddddƒ d S )Nr   ÚoneÚbool©ÚtypeFÚtwoTÚthreeÚinté
   za stringÚtrueÚfalseÚnotZexistZDEFAULT©Údefault)r   ÚIdleConfParserÚread_stringÚassertEqualZassertIsÚGetZassertIsNone)ÚselfÚparserÚeqr   r   r   Útest_get5   s   
zIdleConfParserTest.test_getc                 C   sX   t  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(   )r*   r+   Zget_listr   r   r   Útest_get_option_listJ   s   
z'IdleConfParserTest.test_get_option_listc                 C   s&   t  d¡}| ¡  |  | ¡ g ¡ d S )Nr   )r   r&   ÚLoadr(   Úsections©r*   r+   r   r   r   Útest_load_nothingR   s   
z$IdleConfParserTest.test_load_nothingc                 C   sF   t dƒ}t |¡}| ¡  |  | dd¡d¡ |  | d¡dg¡ d S )Núcfgparser.1úFoo BarÚfooÚnewbar)r   r   r&   r1   r(   r)   r.   )r*   Úconfig_pathr+   r   r   r   Útest_load_fileW   s
   
z!IdleConfParserTest.test_load_fileN)Ú__name__Ú
__module__Ú__qualname__r   r-   r0   r4   r:   r   r   r   r   r   &   s    r   c                   @   sH   e Zd Z	 ddd„Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Zdd„ Z	dS )ÚIdleUserConfParserTestr   c                 C   s
   t  |¡S ©N)r   ÚIdleUserConfParser)r*   Úpathr   r   r   Ú
new_parserd   s   
z!IdleUserConfParserTest.new_parserc                 C   s¢   |   ¡ }| 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)	rB   Úadd_sectionÚ
assertTrueÚ	SetOptionÚassertFalser(   r)   r/   r2   r3   r   r   r   Útest_set_optiong   s   
z&IdleUserConfParserTest.test_set_optionc                 C   sZ   |   ¡ }| d¡ | ddd¡ |  | dd¡¡ |  | dd¡¡ |  | dd¡¡ d S )NrC   rD   r!   ZNotZExist)rB   Ú
AddSectionrH   rG   ZRemoveOptionrI   r3   r   r   r   Útest_remove_optionw   s   
z)IdleUserConfParserTest.test_remove_optionc                 C   sN   |   ¡ }|  | ¡ g ¡ | d¡ | d¡ | d¡ |  | ¡ ddg¡ d S )NrC   rE   )rB   r(   r2   rK   r/   r3   r   r   r   Útest_add_section€   s   


z'IdleUserConfParserTest.test_add_sectionc                 C   s\   |   ¡ }| d¡ | d¡ | ddd¡ |  | ¡ g d¢¡ | ¡  |  | ¡ dg¡ d S )NrC   rE   ÚIdleÚnameÚval)rE   rC   rN   )rB   rK   rH   r/   r2   ZRemoveEmptySectionsr(   r3   r   r   r   Útest_remove_empty_sections‹   s   

z1IdleUserConfParserTest.test_remove_empty_sectionsc                 C   sv   |   ¡ }| d¡ | d¡ |  | ¡ ¡ |  | ¡ g ¡ | ddd¡ | d¡ |  | ¡ ¡ |  | ¡ dg¡ d S )NrC   rE   rD   r"   )	rB   rK   rG   ZIsEmptyr(   r2   rH   rI   r/   r3   r   r   r   Útest_is_empty•   s   


z$IdleUserConfParserTest.test_is_emptyc                 C   s®   t  ¡ I}tj |d¡}|  |¡}| d¡ | ddd¡ |  tj 	|¡¡ | 
¡  |  tj 	|¡¡ | d¡ | 
¡  |  tj 	|¡¡ W d   ƒ d S 1 sPw   Y  d S )Nztest.cfgrC   rD   r!   )ÚtempfileÚTemporaryDirectoryÚosrA   ÚjoinrB   rK   rH   rI   ÚexistsZSaverG   Úremove_section)r*   ZtdirrA   r+   r   r   r   Ú	test_save¢   s   



"òz IdleUserConfParserTest.test_saveN)r   )
r;   r<   r=   rB   rJ   rL   rM   rQ   rR   rY   r   r   r   r   r>   a   s    
	
r>   c                   @   s*  e Zd Z	 edd„ ƒZedd„ ƒZd@dd„Zdd	„ Ze 	e
j d
¡d¡dd„ ƒZe 	e
j d
¡ d¡dd„ ƒZdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zd-d.„ Zd/d0„ Zd1d2„ Zd3d4„ Z d5d6„ Z!d7d8„ Z"d9d:„ Z#d;d<„ Z$d=d>„ Z%d?S )AÚIdleConfTestc              	   C   s¤   i | _ tjdd}tdkrtj t¡}n	tj t	jd ¡}|j
D ]'}tj |d| ¡}t|dƒ}| ¡ | j |< W d   ƒ n1 sBw   Y  q tj| _tƒ t_d S )NT©Ú_utestÚ__main__r   z../config-%s.defÚr)Úconfig_stringr   ÚIdleConfr;   rU   rA   ÚdirnameÚ__file__ÚabspathÚsysÚconfig_typesrV   ÚopenÚreadÚ_warnÚ	orig_warnr   )ÚclsÚconfÚidle_dirÚctyper9   Úfr   r   r   Ú
setUpClass·   s   
ÿ€zIdleConfTest.setUpClassc                 C   s   | j t_d S r?   )ri   r   rh   )rj   r   r   r   ÚtearDownClassÈ   s   zIdleConfTest.tearDownClassFc                 C   s   t j|dS )Nr[   )r   r`   )r*   r\   r   r   r   Ú
new_configÌ   s   zIdleConfTest.new_configc                 C   sj   	 t jdd}|jD ](}t  d¡|j|< |j|  | j| ¡ t  d¡|j|< |j|  | j| ¡ q
|S )NTr[   r   )	r   r`   re   r&   Ú
defaultCfgr'   r_   r@   r   )r*   rk   rm   r   r   r   Úmock_configÏ   s   
zIdleConfTest.mock_configÚwinzthis is test for unix systemc              
   C   ó®  | j dd}tjddd' tjddd |  | ¡ d¡ W d   ƒ n1 s(w   Y  W d   ƒ n1 s7w   Y  tjddd< tjd	d
d% t d¡ |  | ¡ d¡ W d   ƒ n1 sdw   Y  W d   ƒ n1 ssw   Y  W d   ƒ n1 s‚w   Y  tjddd? |  t¡! |  t¡ | ¡  W d   ƒ n1 s©w   Y  W d   ƒ n1 s¸w   Y  W d   ƒ d S W d   ƒ d S 1 sÐw   Y  d S )NTr[   úos.path.expanduserú	/home/foo©Z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©rq   r   Úpatchr(   ZGetUserCfgDirÚassertRaisesÚ
SystemExitÚFileNotFoundError©r*   rk   r   r   r   Útest_get_user_cfg_dir_unixÝ   ó8   ÿ€ÿ
ÿÿ€ÿ€ÿ
ÿ€ÿÿ"ÿz'IdleConfTest.test_get_user_cfg_dir_unixzthis is test for Windows systemc              
   C   ru   )NTr[   rv   zC:\foorx   ry   zC:\foo\.idlercrz   r{   zC:\foo\cpythonr|   zC:\foo\cpython\.idlercr}   r~   r   r„   r   r   r   Útest_get_user_cfg_dir_windowsô   r†   z*IdleConfTest.test_get_user_cfg_dir_windowsc              
   C   sL  | j dd}d}tj ddi¡# tjd|d | ¡  W d   ƒ n1 s'w   Y  W d   ƒ n1 s6w   Y  |  |j ¡ |j¡ |  |j	 ¡ |j¡ |j 
¡ D ]	}|  |tj¡ qT|j	 
¡ D ]	}|  |tj¡ qc|j ¡ D ]\}}|  |jtj |d|› d	¡¡ qr|j	 ¡ D ]\}}|  |jtj |jp›d
d|› d¡¡ qŒd S )NTr[   rw   r;   Z__foo__zos.path.dirnamerx   zconfig-z.defú#z.cfg)rq   r   r€   ÚdictZCreateConfigHandlersr/   rr   r
   re   r   ÚvaluesZassertIsInstancer   r&   r@   Úitemsr(   ÚfilerU   rA   rV   Zuserdir)r*   rk   rl   Zdefault_parserZuser_parserZcfg_typer+   r   r   r   Útest_create_config_handlers  s.   
ÿ€ÿÿÿÿz(IdleConfTest.test_create_config_handlersc                 C   s¦   | j dd}tdƒ}t |¡|jd< t |¡|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 )NTr[   r5   r7   r6   r8   )rq   r   r   r&   rr   r@   r   ZLoadCfgFilesr(   r)   r.   )r*   rk   r9   r,   r   r   r   Útest_load_cfg_files&  s   z IdleConfTest.test_load_cfg_filesc                 C   sT   |   ¡ }t d¡}| ¡  |  |jt|jƒ¡ W d   ƒ d S 1 s#w   Y  d S )Nz&idlelib.config.IdleUserConfParser.Save)rs   r   r€   ZSaveUserCfgFilesr(   Ú
call_countÚlenr   )r*   rk   Úmr   r   r   Útest_save_user_cfg_files;  s
   "þz%IdleConfTest.test_save_user_cfg_filesc                 C   sº   |   ¡ }| j}|| ddd¡dƒ ||jddddddƒ t d¡1}||jddd	ddd ƒ || ddd
¡d ƒ ||jddd
dddƒ ||jdƒ W d   ƒ d S 1 sVw   Y  d S )Nr   ÚEditorWindowÚwidthZ80r   r   éP   úidlelib.config._warnZfontÚ	NotExistsZNEr$   é   )rs   r(   Ú	GetOptionr   r€   r   )r*   rk   r,   rh   r   r   r   Útest_get_optionB  s   "üzIdleConfTest.test_get_optionc                 C   s2   |   ¡ }| dddd¡ |  | ddd¡d¡ d S )Nr   rC   rD   r8   )rs   rH   r(   r™   r„   r   r   r   rJ   N  s   zIdleConfTest.test_set_optionc                 C   s®   |   ¡ }|  | dd¡g d¢¡ |  | dd¡g d¢¡ |  tj¡ | dd¡ W d   ƒ n1 s3w   Y  |  tj¡ | dd¡ W d   ƒ d S 1 sPw   Y  d S )Nr%   r   )ZGeneralr“   ZPyShellÚIndentÚThemeÚKeysZHistoryÚ	HelpFilesÚuserZfoobarZ	notexists)rs   r/   ÚGetSectionListr   r   ÚInvalidConfigSetZInvalidConfigTyper„   r   r   r   Útest_get_section_listT  s   
þ
þÿ"ÿz"IdleConfTest.test_get_section_listc                 C   s¦   |   ¡ }| j}|| dd¡dddœƒ || dd¡dddœƒ | dd	d
d¡ | dd	dd¡ t d¡ || d	d¡dddœƒ W d   ƒ d S 1 sLw   Y  d S )NúIDLE ClassicZnormalz#000000z#ffffff)Z
foregroundZ
backgroundZcursorZblackr	   ÚFoobarznormal-foregroundz#747474znormal-backgroundz#171717r–   )rs   r(   ZGetHighlightrH   r   r€   ©r*   rk   r,   r   r   r   Útest_get_highlighte  s   ÿÿ
ÿ"ÿzIdleConfTest.test_get_highlightc                 C   sb   |   ¡ }|  | dd¡| dd¡¡ |  tj¡ | dd¡ W d   ƒ d S 1 s*w   Y  d S )Nr%   r£   rŸ   Úbad)rs   r(   ZGetThemeDictr   r   ZInvalidThemer„   r   r   r   Útest_get_theme_dictw  s   

þ"ÿz IdleConfTest.test_get_theme_dictc                 C   s8   |   ¡ }|  | ¡ | d¡¡ |  | ¡ | d¡¡ d S )Nrœ   r   )rs   r(   ZCurrentThemeÚcurrent_colors_and_keysÚCurrentKeysr„   r   r   r   Útest_get_current_theme_and_keysƒ  s   z,IdleConfTest.test_get_current_theme_and_keysc                 C   s   |   ¡ }|  | d¡d¡ d S )Nrœ   r£   )rs   r(   r©   r„   r   r   r   Útest_current_colors_and_keys‰  s   z)IdleConfTest.test_current_colors_and_keysc                 C   s^   t j}| jdd}dt _|  | ¡ d¡ dt _|  | ¡ d¡ dt _|  | ¡ d¡ |t _d S )	NTr[   Úwin32úIDLE Classic WindowsÚdarwinúIDLE Classic OSXú
some-linuxúIDLE Modern Unix)rd   Úplatformrq   r(   Údefault_keys©r*   Zcurrent_platformrk   r   r   r   Útest_default_keysŽ  s   
zIdleConfTest.test_default_keysc                 C   sˆ   t  d¡ | j}tj}||ddg ƒ ||ƒ dgƒ ||dddgƒ ||ddddgƒ ||ddd	ddgƒ t  d¡ t  d¡ d S )
Nzn
            [ZzDummy]
            enable = True
            [DISABLE]
            enable = False
            T)Z
shell_onlyÚZzDummy)Úeditor_onlyF)Úactive_onlyZDISABLE)r¹   r¸   )Úuserextnr'   r(   r   ZGetExtensionsrX   )r*   r,   ZiGEr   r   r   Útest_get_extensionsž  s   

z IdleConfTest.test_get_extensionsc                 C   s*   |   ¡ }|  | | dd¡¡g d¢¡ d S )Nr%   r   )ZAutoCompleteZCodeContextZFormatParagraphZ
ParenMatchr·   )rs   r/   ZRemoveKeyBindNamesr    r„   r   r   r   Útest_remove_key_bind_names°  s
   þz'IdleConfTest.test_remove_key_bind_namesc                 C   s>   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   ZGetExtnNameForEventrX   )r*   r,   r   r   r   Útest_get_extn_name_for_event·  s
   
z)IdleConfTest.test_get_extn_name_for_eventc                 C   s0   t  d¡ |  t d¡ddgi¡ t  d¡ d S )Nr½   r·   ú<<z-in>>ú!<Control-Shift-KeyRelease-Insert>)rº   r'   r(   r   ZGetExtensionKeysrX   ©r*   r   r   r   Útest_get_extension_keysÁ  s
   
ÿz$IdleConfTest.test_get_extension_keysc                 C   sN   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   ZGetExtensionBindingsrX   )r*   r,   ZiGEBÚexpectr   r   r   Útest_get_extension_bindingsÍ  s   
ÿz(IdleConfTest.test_get_extension_bindingsc                 C   s    |   ¡ }| 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)rs   r(   ZGetKeyBindingr¥   r   r   r   Útest_get_keybindingÚ  s   ÿÿÿz IdleConfTest.test_get_keybindingc                 C   s8   t j}|  ¡ }dt _|  | ¡ | | ¡ ¡¡ |t _d S )Nr±   )rd   r³   rs   r(   ZGetCurrentKeySetÚ	GetKeySetrª   rµ   r   r   r   Útest_get_current_keysetë  s
   
	z$IdleConfTest.test_get_current_keysetc                 C   sj   |   ¡ }|jd  d¡ |jd  d¡ |jd  ddd¡ |jd  ddd¡ |  | d¡d	 d
¡ d S )Nr   r¤   ZFoobar_cfgBindingsÚenableÚTrueZnewfooz<Key-F3>r²   z
<<newfoo>>r   )rs   rr   rF   Úsetr(   rÉ   r„   r   r   r   Útest_get_keysetü  s   zIdleConfTest.test_get_keysetc                 C   sL   |   ¡ }|  | d¡¡ |  | d¡¡ |  | d¡¡ |  | d¡¡ d S )NÚcopyZcutzdel-word-rightz
not-exists)rs   rG   ZIsCoreBindingrI   r„   r   r   r   Útest_is_core_binding  s
   z!IdleConfTest.test_is_core_bindingc                 C   s  |   ¡ }|  | d¡g ¡ |  | d¡g ¡ |  tj¡ |  | d¡g ¡ W d   ƒ n1 s0w   Y  |  | ¡ | d¡| d¡ ¡ |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¡ ¡ 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Ô   )ZPillowz(https://pillow.readthedocs.io/en/latest/rÓ   )ÚPythonzhttps://python.orgrÑ   )
rs   r(   ZGetExtraHelpSourceListr   r   r¡   r/   ZGetAllExtraHelpSourcesListr   rH   r„   r   r   r   Útest_extra_help_source_list  s*   ÿþÿþz(IdleConfTest.test_extra_help_source_listc                 C   sœ   ddl m} ddlm} ddlm} |  ¡ }|dƒ |ƒ }| ¡  | |dd|d¡}|  	| 
|d	d
¡|d |d dkr>dn|d |d f¡ | ¡  ~d S )Nr   )Úrequires)ÚTk)ÚFontZguiZTkFixedFontT)rO   rW   Úrootr   r“   ÚfamilyÚsizer    Zweight)Útest.supportrØ   ÚtkinterrÙ   Ztkinter.fontrÚ   rs   ZwithdrawÚactualr(   ZGetFontZdestroy)r*   rØ   rÙ   rÚ   rk   rÛ   rn   r   r   r   Útest_get_font*  s   $þzIdleConfTest.test_get_fontc                 C   s®   |   ¡ }| 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²   )rs   r(   ZGetCoreKeysr¥   r   r   r   Útest_get_core_keys=  s   ÿÿÿzIdleConfTest.test_get_core_keysN)F)&r;   r<   r=   Úclassmethodro   rp   rq   rs   ÚunittestZskipIfrd   r³   Ú
startswithr…   r‡   r   rŽ   r’   rš   rJ   r¢   r¦   r¨   r«   r¬   r¶   r»   r¼   r¾   rÂ   rÄ   rÈ   rÊ   rÎ   rÐ   r×   rá   râ   r   r   r   r   rZ   ´   sF    






	rZ   c                   @   sP   e Zd Z	 ejZdZe ¡ Zdd„ Zdd„ Z	dd„ Z
dd	„ Zd
d„ Zdd„ ZdS )ÚCurrentColorKeysTestr£   c                 C   s~   |   |  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 NewrO   únon-existent)r(   Ú	colorkeysÚdefault_themeÚusermainr'   rX   rÁ   r   r   r   Útest_old_builtin_themeX  s   
z+CurrentColorKeysTest.test_old_builtin_themec                 C   óh   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ç   rO   rè   Úname2)rë   r'   r(   ré   rê   rX   rÁ   r   r   r   Útest_new_builtin_themej  ó   
z+CurrentColorKeysTest.test_new_builtin_themec                 C   óp   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è   rî   )rë   r'   r(   ré   rê   ÚuserhighrX   rÁ   r   r   r   Útest_user_override_themez  ó   


z-CurrentColorKeysTest.test_user_override_themec                 C   s^   |   |  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è   rO   )r(   ré   r´   rë   r'   rX   rÁ   r   r   r   Útest_old_builtin_keys‹  s   
z*CurrentColorKeysTest.test_old_builtin_keysc                 C   rí   )Nz`
            [Keys]
            default = True
            name2 = IDLE Modern Unix
            r   r²   rÆ   rO   rè   rî   )rë   r'   r(   ré   r´   rX   rÁ   r   r   r   Útest_new_builtin_keysš  rð   z*CurrentColorKeysTest.test_new_builtin_keysc                 C   rñ   )Nz[
            [Keys]
            default = False
            name = Custom Keys
            r   z[Custom Keys]
a=bzCustom Keysrè   rî   )rë   r'   r(   ré   r´   ÚuserkeysrX   rÁ   r   r   r   Útest_user_override_keysª  rô   z,CurrentColorKeysTest.test_user_override_keysN)r;   r<   r=   r   r©   ré   rê   r´   rì   rï   ró   rõ   rö   rø   r   r   r   r   ræ   M  s    ræ   c                   @   s   e Zd Zi i i i dœZdd„ Zdddiiddd	iid
ddiii dœZdd„ Zdd„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ ZdS ) ÚChangesTest)r   r	   r
   r   c                 C   s:   | 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©r*   r  r   r   r   ÚloadÀ  s
   zChangesTest.loadrú   rû   rü   rý   rþ   rÿ   r   r  r  c                 C   s   t  ¡ | _d S r?   )r   ZConfigChangesr  rÁ   r   r   r   ÚsetUpÌ  s   zChangesTest.setUpc                 C   s   |   | j| j¡ d S r?   )r(   r  ÚemptyrÁ   r   r   r   Ú	test_initÏ  s   zChangesTest.test_initc                 C   s8   |   ¡ }|  || j¡ | dddd¡ |  || j¡ d S )Nr   rú   rû   rü   )r  r(   Úloadedr  r  r   r   r   Útest_add_optionÒ  s   zChangesTest.test_add_optionc                 C   s    | 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›   ZwhatÚ0ú
use-spacesrÔ   )r  Úsave_optionrG   rI   r(   rë   Ú
has_optionrX   )r*   r  r   r   r   Útest_save_optionØ  s   zChangesTest.test_save_optionc                 C   s’   |   ¡ }|  | ¡ ¡ |  td d d¡ |  td d d¡ |  td d d	¡ | d
ddd¡ |  | ¡ ¡ t 	d¡ t 	d¡ t 	d¡ d S )Nrú   rû   rü   rý   rþ   rÿ   r   r  r  r   )
r  rG   Úsave_allr(   rë   rò   r÷   r  rI   rX   r  r   r   r   Útest_save_addedä  s   

zChangesTest.test_save_addedc                 C   sV   | j }| dddd¡ | dddd¡ | ¡  |  t dd¡¡ |  t dd¡¡ d S )Nr   rž   rÕ   ZidledocZELDIZcodeldi)r  r  r  r  rI   rë   r  rG   r  r   r   r   Útest_save_helpð  s   zChangesTest.test_save_helpc                 C   s   | j }| dddd¡ d S )Nr   r›   r  rÔ   r  r  r   r   r   Útest_save_defaultù  s   zChangesTest.test_save_defaultc              	   C   s”   |   ¡ }| dd¡ |  || j¡ dD ]4\}}t|  |dd¡ | ||¡ |  t¡ || |  t| |  W d   ƒ n1 sBw   Y  qd S )Nr   Zfake))r   rú   )r
   r   rO   Úvalue)r  Zdelete_sectionr(   r  r   rH   r   ÚKeyError)r*   r  ZcfgtypeÚsectionr   r   r   Útest_delete_section   s   þ€ýzChangesTest.test_delete_sectionc                 C   s"   |   ¡ }| ¡  |  || j¡ d S r?   )r  Úclearr(   r	  r  r   r   r   Ú
test_clear  s   zChangesTest.test_clearN)r;   r<   r=   r	  r  r  r  r
  r  r  r  r  r  r  r  r   r   r   r   rù   ¼  s"    


ý	rù   c                   @   s   e Zd Zdd„ ZdS )ÚWarningTestc                 C   sð   | j }tƒ t_tƒ }t dd¡ W d   ƒ n1 sw   Y  |tjdhƒ || ¡ dƒ tƒ }t dd¡ W d   ƒ n1 sBw   Y  || ¡ dƒ tƒ }t dd¡ W d   ƒ n1 sbw   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   Z_warnedr   rh   Úgetvalue)r*   ZEqualÚstderrr   r   r   Ú	test_warn  s    ÿÿÿzWarningTest.test_warnN)r;   r<   r=   r#  r   r   r   r   r    s    r  r]   é   )Ú	verbosity) r   r   rd   rU   rS   rÞ   r   r   rä   r   Zidlelib.idle_test.mock_idler   r   r   r   r   r@   rë   rò   r÷   rº   r   r   ZTestCaser   r>   rZ   ræ   rù   r  r;   r   r   r   r   r   Ú<module>   s>    ;S   oVÿ