a
    ›êKb.}  ã                   @   sN  d Z 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rJe	j dd dS )zÒTest config, coverage 93%.
(100% for IdleConfParser, IdleUserConfParser*, ConfigChanges).
* Exception is OSError clause in Save method.
Much of IdleConf is also exercised by ConfigDialog and test_configdialog.
é    )ÚconfigN)Úcaptured_stderrÚfindfile)Úmock)ÚFuncÚ ÚmainÚ	highlightÚkeysÚ
extensionsc                   C   s   t t_dt_d S )NT)ÚtestcfgÚidleConfÚuserCfgÚidlelibÚtesting© r   r   ú.lib/python3.9/idlelib/idle_test/test_config.pyÚsetUpModule   s    r   c                   C   s   t t_dt_d S )NF)Úusercfgr   r   r   r   r   r   r   r   ÚtearDownModule!   s    r   c                   @   s4   e Zd ZdZdZdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚIdleConfParserTestzTest that IdleConfParser workszœ
        [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$   r/   r&   r'   r,   )r(   Úconfig_pathr)   r   r   r   Útest_load_fileW   s
    
z!IdleConfParserTest.test_load_fileN)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r+   r.   r2   r8   r   r   r   r   r   &   s   r   c                   @   sJ   e Zd 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 )ÚIdleUserConfParserTestz"Test that IdleUserConfParser worksr   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)	rA   Úadd_sectionÚ
assertTrueÚ	SetOptionÚassertFalser&   r'   r-   r0   r1   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 )NrB   rC   r   ZNotZExist)rA   Ú
AddSectionrG   rF   ZRemoveOptionrH   r1   r   r   r   Útest_remove_optionw   s    
z)IdleUserConfParserTest.test_remove_optionc                 C   sN   |   ¡ }|  | ¡ g ¡ | d¡ | d¡ | d¡ |  | ¡ ddg¡ d S )NrB   rD   )rA   r&   r0   rJ   r-   r1   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 )NrB   rD   ÚIdleÚnameÚval)rD   rB   rM   )rA   rJ   rG   r-   r0   ZRemoveEmptySectionsr&   r1   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 )NrB   rD   rC   r    )	rA   rJ   rF   ZIsEmptyr&   r0   rG   rH   r-   r1   r   r   r   Útest_is_empty•   s    


z$IdleUserConfParserTest.test_is_emptyc                 C   s¬   t  ¡ }tj |d¡}|  |¡}| d¡ | ddd¡ |  tj 	|¡¡ | 
¡  |  tj 	|¡¡ | d¡ | 
¡  |  tj 	|¡¡ W d   ƒ n1 sž0    Y  d S )Nztest.cfgrB   rC   r   )ÚtempfileZTemporaryDirectoryÚosr@   ÚjoinrA   rJ   rG   rH   ÚexistsZSaverF   Úremove_section)r(   Ztdirr@   r)   r   r   r   Ú	test_save¢   s    



z IdleUserConfParserTest.test_saveN)r   )r9   r:   r;   r<   rA   rI   rK   rL   rP   rQ   rW   r   r   r   r   r=   a   s   
	
r=   c                   @   s,  e Zd ZdZedd„ ƒZedd„ ƒZdAd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d0d1„ Zd2d3„ Z d4d5„ Z!d6d7„ Z"d8d9„ Z#d:d;„ Z$d<d=„ Z%d>d?„ Z&d@S )BÚIdleConfTestzTest for idleConfc              	   C   s¤   i | _ tjdd}tdkr(tj t¡}ntj t	jd ¡}|j
D ]N}tj |d| ¡}t|dƒ}| ¡ | j |< W d   ƒ q@1 s„0    Y  q@tj| _tƒ t_d S )NT©Ú_utestÚ__main__r   z../config-%s.defÚr)Úconfig_stringr   ÚIdleConfr9   rS   r@   ÚdirnameÚ__file__ÚabspathÚsysÚconfig_typesrT   ÚopenÚreadÚ_warnÚ	orig_warnr   )ÚclsÚconfÚidle_dirÚctyper7   Úfr   r   r   Ú
setUpClass·   s    
.zIdleConfTest.setUpClassc                 C   s   | j t_d S r>   )rg   r   rf   )rh   r   r   r   ÚtearDownClassÈ   s    zIdleConfTest.tearDownClassFc                 C   s   t j|dS )NrY   )r   r^   )r(   rZ   r   r   r   Ú
new_configÌ   s    zIdleConfTest.new_configc                 C   sh   t jdd}|jD ]P}t  d¡|j|< |j|  | j| ¡ t  d¡|j|< |j|  | j| ¡ q|S )zbReturn a mocked idleConf

        Both default and user config used the same config-*.def
        TrY   r   )	r   r^   rc   r$   Ú
defaultCfgr%   r]   r?   r   )r(   ri   rk   r   r   r   Úmock_configÏ   s    
zIdleConfTest.mock_configÚwinzthis is test for unix systemc              
   C   s¤  | j dd}tjdddN tjddd  |  | ¡ d¡ W d   ƒ n1 sP0    Y  W d   ƒ n1 sn0    Y  tjdddx tjd	d
dJ t d¡  |  | ¡ d¡ W d   ƒ n1 sÈ0    Y  W d   ƒ n1 sæ0    Y  W d   ƒ n1 s0    Y  tjdddp |  t¡D |  t¡ | ¡  W d   ƒ n1 sV0    Y  W d   ƒ n1 sv0    Y  W d   ƒ n1 s–0    Y  d S )NTrY   ú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©ro   r   Úpatchr&   ZGetUserCfgDirÚassertRaisesÚ
SystemExitÚFileNotFoundError©r(   ri   r   r   r   Útest_get_user_cfg_dir_unixÝ   s    L
ÿ`z'IdleConfTest.test_get_user_cfg_dir_unixzthis is test for Windows systemc              
   C   s¤  | j dd}tjdddN tjddd  |  | ¡ d¡ W d   ƒ n1 sP0    Y  W d   ƒ n1 sn0    Y  tjdddx tjd	d
dJ t d¡  |  | ¡ d¡ W d   ƒ n1 sÈ0    Y  W d   ƒ n1 sæ0    Y  W d   ƒ n1 s0    Y  tjdddp |  t¡D |  t¡ | ¡  W d   ƒ n1 sV0    Y  W d   ƒ n1 sv0    Y  W d   ƒ n1 s–0    Y  d S )NTrY   rs   zC:\fooru   rv   zC:\foo\.idlercrw   rx   zC:\foo\cpythonry   zC:\foo\cpython\.idlercrz   r{   r|   r   r   r   r   Útest_get_user_cfg_dir_windowsô   s    L
ÿ`z*IdleConfTest.test_get_user_cfg_dir_windowsc              
   C   sP  | j dd}d}tj ddi¡F tjd|d | ¡  W d   ƒ n1 sN0    Y  W d   ƒ n1 sl0    Y  |  |j ¡ |j¡ |  |j	 ¡ |j¡ |j 
¡ D ]}|  |tj¡ q¨|j	 
¡ D ]}|  |tj¡ qÆ|j ¡ D ](\}}|  |jtj |d|› d	¡¡ qä|j	 ¡ D ]2\}}|  |jtj |jp8d
d|› d¡¡ qd S )NTrY   rt   r9   Z__foo__zos.path.dirnameru   zconfig-z.defú#z.cfg)ro   r   r}   ÚdictZCreateConfigHandlersr-   rp   r
   rc   r   ÚvaluesZassertIsInstancer   r$   r?   Úitemsr&   ÚfilerS   r@   rT   Zuserdir)r(   ri   rj   Zdefault_parserZuser_parserZcfg_typer)   r   r   r   Útest_create_config_handlers  s&    Dÿÿ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 )NTrY   r3   r5   r4   r6   )ro   r   r   r$   rp   r?   r   ZLoadCfgFilesr&   r'   r,   )r(   ri   r7   r*   r   r   r   Útest_load_cfg_files&  s    z IdleConfTest.test_load_cfg_filesc                 C   sR   |   ¡ }t d¡,}| ¡  |  |jt|jƒ¡ W d   ƒ n1 sD0    Y  d S )Nz&idlelib.config.IdleUserConfParser.Save)rq   r   r}   ZSaveUserCfgFilesr&   Ú
call_countÚlenr   )r(   ri   Ú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¡`}||jddd	ddd ƒ || ddd
¡d ƒ ||jddd
dddƒ ||jdƒ W d   ƒ n1 sª0    Y  d S )Nr   ÚEditorWindowÚwidthZ80r   r   éP   úidlelib.config._warnZfontÚ	NotExistsZNEr"   é   )rq   r&   Ú	GetOptionr   r}   r‹   )r(   ri   r*   rf   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   rB   rC   r6   )rq   rG   r&   r•   r   r   r   r   rI   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 sf0    Y  |  tj¡ | dd¡ W d   ƒ n1 sž0    Y  d S )Nr#   r   )ZGeneralr   ZPyShellÚIndentÚThemeÚKeysZHistoryÚ	HelpFilesÚuserZfoobarZ	notexists)rq   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   ƒ n1 s–0    Y  d S )NúIDLE ClassicZnormalz#000000z#ffffff)Z
foregroundZ
backgroundZcursorZblackr	   ÚFoobarznormal-foregroundz#747474znormal-backgroundz#171717r’   )rq   r&   ZGetHighlightrG   r   r}   ©r(   ri   r*   r   r   r   Útest_get_highlighte  s    ÿÿÿzIdleConfTest.test_get_highlightc                 C   s`   |   ¡ }|  | dd¡| dd¡¡ |  tj¡ | dd¡ W d   ƒ n1 sR0    Y  d S )Nr#   rŸ   r›   Úbad)rq   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™   )rq   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Ÿ   )rq   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 )	NTrY   Zwin32úIDLE Classic WindowsÚdarwinúIDLE Classic OSXú
some-linuxúIDLE Modern Unix)rb   Úplatformro   r&   Údefault_keys©r(   Zcurrent_platformri   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GetExtensionsrV   )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²   )rq   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GetExtnNameForEventrV   )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GetExtensionKeysrV   ©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GetExtensionBindingsrV   )r(   r*   ZiGEBZ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)rq   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¬   )rb   r®   rq   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   )rq   rp   rE   Ú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)rq   rF   ZIsCoreBindingrH   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 s`0    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Ë   )
rq   r&   ZGetExtraHelpSourceListr~   r   r   r-   ZGetAllExtraHelpSourcesListr   rG   r   r   r   r   Útest_extra_help_source_list  s(    0þÿþ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)rN   rU   Úrootr   r   ZfamilyÚsizer   Zweight)Útest.supportrÒ   ZtkinterrÓ   Ztkinter.fontrÔ   rq   ZwithdrawZactualr&   ZGetFontZdestroy)r(   rÒ   rÓ   rÔ   ri   rÕ   rl   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­   )rq   r&   ZGetCoreKeysr¡   r   r   r   Útest_get_core_keys=  s    ÿÿÿzIdleConfTest.test_get_core_keysN)F)'r9   r:   r;   r<   Úclassmethodrm   rn   ro   rq   ÚunittestZskipIfrb   r®   Ú
startswithr‚   rƒ   r‰   rŠ   rŽ   r–   rI   rž   r¢   r¤   r§   r¨   r±   r¶   r·   r¹   r½   r¾   rÂ   rÄ   rÈ   rÊ   rÑ   rØ   rÙ   r   r   r   r   rX   ´   sD   






	rX   c                   @   sR   e Zd 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 )ÚCurrentColorKeysTesta   Test colorkeys function with user config [Theme] and [Keys] patterns.

        colorkeys = config.IdleConf.current_colors_and_keys
        Test all patterns written by IDLE and some errors
        Item 'default' should really be 'builtin' (versus 'custom).
    rŸ   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 NewrN   únon-existent)r&   Ú	colorkeysÚdefault_themeÚusermainr%   rV   r¼   r   r   r   Útest_old_builtin_themeX  s    
z+CurrentColorKeysTest.test_old_builtin_themec                 C   sh   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Þ   rN   rß   Úname2)râ   r%   r&   rà   rá   rV   r¼   r   r   r   Útest_new_builtin_themej  s    
z+CurrentColorKeysTest.test_new_builtin_themec                 C   sp   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á   ÚuserhighrV   r¼   r   r   r   Útest_user_override_themez  s    


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ß   rN   )r&   rà   r¯   râ   r%   rV   r¼   r   r   r   Útest_old_builtin_keys‹  s    
z*CurrentColorKeysTest.test_old_builtin_keysc                 C   sh   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À   rN   rß   rä   )râ   r%   r&   rà   r¯   rV   r¼   r   r   r   Útest_new_builtin_keysš  s    
z*CurrentColorKeysTest.test_new_builtin_keysc                 C   sp   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ß   rä   )râ   r%   r&   rà   r¯   ÚuserkeysrV   r¼   r   r   r   Útest_user_override_keysª  s    


z,CurrentColorKeysTest.test_user_override_keysN)r9   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_optionrF   rH   r&   râ   Ú
has_optionrV   )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ú   rF   Úsave_allr&   râ   ræ   rê   rø   rH   rV   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  rH   râ   r  rF   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 ]h\}}t|  |dd¡ | ||¡ |  t¡( || |  t| |  W d   ƒ q&1 s„0    Y  q&d S )Nr   Zfake))r   rí   )r
   ró   rN   Úvalue)rú   Zdelete_sectionr&   rþ   r   rG   r~   ÚKeyError)r(   r÷   ZcfgtypeZ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)r9   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 s60    Y  |tjdhƒ || ¡ dƒ tƒ }t dd¡ W d   ƒ n1 s„0    Y  || ¡ dƒ tƒ }t dd¡ W d   ƒ n1 sÄ0    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   rf   Úgetvalue)r(   ZEqualÚstderrr   r   r   Ú	test_warn  s    ***zWarningTest.test_warnN)r9   r:   r;   r  r   r   r   r   r    s   r  r[   é   )Ú	verbosity)!r<   r   r   rb   rS   rR   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=   rX   rÝ   rì   r  r9   r   r   r   r   r   Ú<module>   s:   ;S   oV
