o
    JAf.}  ã                   @   sP  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r¦e	j dd dS 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   ó   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                   @   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&   r1   r(   r)   r.   )r*   Úconfig_pathr+   r   r   r   Útest_load_fileW   s
   
z!IdleConfParserTest.test_load_fileN)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r-   r0   r4   r:   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)	rC   Ú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 )NrD   rE   r!   ZNotZExist)rC   Ú
AddSectionrI   rH   ZRemoveOptionrJ   r3   r   r   r   Útest_remove_optionw   s   
z)IdleUserConfParserTest.test_remove_optionc                 C   sN   |   ¡ }|  | ¡ g ¡ | d¡ | d¡ | d¡ |  | ¡ ddg¡ d S )NrD   rF   )rC   r(   r2   rL   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 )NrD   rF   ÚIdleÚnameÚval)rF   rD   rO   )rC   rL   rI   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 )NrD   rF   rE   r"   )	rC   rL   rH   ZIsEmptyr(   r2   rI   rJ   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.cfgrD   rE   r!   )ÚtempfileÚTemporaryDirectoryÚosrB   ÚjoinrC   rL   rI   rJ   ÚexistsZSaverH   Úremove_section)r*   ZtdirrB   r+   r   r   r   Ú	test_save¢   s   



"òz IdleUserConfParserTest.test_saveN)r   )r;   r<   r=   r>   rC   rK   rM   rN   rR   rS   rZ   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 ]'}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;   rV   rB   ÚdirnameÚ__file__ÚabspathÚsysÚconfig_typesrW   Ú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@   )rj   r   ri   )rk   r   r   r   ÚtearDownClassÈ   s   zIdleConfTest.tearDownClassFc                 C   s   t j|dS )Nr\   )r   ra   )r*   r]   r   r   r   Ú
new_configÌ   s   zIdleConfTest.new_configc                 C   sh   t jdd}|jD ](}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
        Tr\   r   )	r   ra   rf   r&   Ú
defaultCfgr'   r`   rA   r   )r*   rl   rn   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©rr   r   Úpatchr(   ZGetUserCfgDirÚassertRaisesÚ
SystemExitÚFileNotFoundError©r*   rl   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   rv   )NTr\   rw   zC:\foory   rz   zC:\foo\.idlercr{   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\   rx   r;   Z__foo__zos.path.dirnamery   zconfig-z.defú#z.cfg)rr   r   r   ÚdictZCreateConfigHandlersr/   rs   r
   rf   r   ÚvaluesZassertIsInstancer   r&   rA   Úitemsr(   ÚfilerV   rB   rW   Zuserdir)r*   rl   rm   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   )rr   r   r   r&   rs   rA   r   ZLoadCfgFilesr(   r)   r.   )r*   rl   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)rt   r   r   ZSaveUserCfgFilesr(   Ú
call_countÚlenr   )r*   rl   Ú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$   é   )rt   r(   Ú	GetOptionr   r   r   )r*   rl   r,   ri   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   rD   rE   r8   )rt   rI   r(   rš   r…   r   r   r   rK   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)rt   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—   )rt   r(   ZGetHighlightrI   r   r   ©r*   rl   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)rt   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ž   )rt   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¤   )rt   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)re   Úplatformrr   r(   Údefault_keys©r*   Zcurrent_platformrl   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GetExtensionsrY   )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¸   )rt   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GetExtnNameForEventrY   )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GetExtensionKeysrY   ©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GetExtensionBindingsrY   )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)rt   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²   )re   r´   rt   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   )rt   rs   rG   Ú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)rt   rH   ZIsCoreBindingrJ   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Ò   )
rt   r(   ZGetExtraHelpSourceListr‚   r   r¢   r/   ZGetAllExtraHelpSourcesListr   rI   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)rP   rX   Úrootr   r”   ÚfamilyÚsizer    Zweight)Útest.supportrÙ   ÚtkinterrÚ   Ztkinter.fontrÛ   rt   ZwithdrawÚactualr(   ZGetFontZdestroy)r*   rÙ   rÚ   rÛ   rl   rÜ   ro   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³   )rt   r(   ZGetCoreKeysr¦   r   r   r   Útest_get_core_keys=  s   ÿÿÿzIdleConfTest.test_get_core_keysN)F)'r;   r<   r=   r>   Úclassmethodrp   rq   rr   rt   ÚunittestZskipIfre   r´   Ú
startswithr†   rˆ   rŽ   r   r“   r›   rK   r£   r§   r©   r¬   r­   r·   r¼   r½   r¿   rÃ   rÅ   rÉ   rË   rÏ   rÑ   rØ   râ   rã   r   r   r   r   r[   ´   sF    






	r[   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 NewrP   únon-existent)r(   Ú	colorkeysÚdefault_themeÚusermainr'   rY   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è   rP   ré   Úname2)rì   r'   r(   rê   rë   rY   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ë   ÚuserhighrY   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é   rP   )r(   rê   rµ   rì   r'   rY   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Ç   rP   ré   rï   )rì   r'   r(   rê   rµ   rY   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µ   ÚuserkeysrY   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   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_optionrH   rJ   r(   rì   Ú
has_optionrY   )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  rH   Úsave_allr(   rì   ró   rø   r  rJ   rY   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  rJ   rì   r  rH   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  rP   Úvalue)r  Zdelete_sectionr(   r  r   rI   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   ri   Ú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   r   re   rV   rT   rß   r   r   rå   r   Zidlelib.idle_test.mock_idler   r   r   r   r   rA   rì   ró   rø   r»   r   r   ZTestCaser   r?   r[   rç   rú   r  r;   r   r   r   r   r   Ú<module>   s>    ;S   oVÿ