B
    v9a"  ã               @   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   ú!/usr/lib/python3.7/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   s\   t  d¡}| | j ¡ |j}|  |dƒdddg¡ |  |dƒdddg¡ |  |dƒg ¡ d S )Nr   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 )Nzcfgparser.1z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,   r/   r3   r   r   r   r   r   &   s   r   c               @   sR   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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)	r;   Úadd_sectionÚ
assertTrueÚ	SetOptionÚassertFalser$   r%   r+   r.   )r&   r'   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 )Nr<   r=   r   ZNotZExist)r;   Ú
AddSectionrA   r@   ZRemoveOptionrB   )r&   r'   r   r   r   Útest_remove_optionw   s    
z)IdleUserConfParserTest.test_remove_optionc             C   sN   |   ¡ }|  | ¡ g ¡ | d¡ | d¡ | d¡ |  | ¡ ddg¡ d S )Nr<   r>   )r;   r$   r.   rD   r+   )r&   r'   r   r   r   Útest_add_section€   s    


z'IdleUserConfParserTest.test_add_sectionc             C   s^   |   ¡ }| d¡ | d¡ | ddd¡ |  | ¡ dddg¡ | ¡  |  | ¡ dg¡ d S )Nr<   r>   ZIdleÚnameÚval)r;   rD   rA   r+   r.   ZRemoveEmptySectionsr$   )r&   r'   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 )Nr<   r>   r=   r   )	r;   rD   r@   ZIsEmptyr$   r.   rA   rB   r+   )r&   r'   r   r   r   Útest_is_empty•   s    


z$IdleUserConfParserTest.test_is_emptyc          	   C   s„   t  ¡ r}tj |d¡}|  |¡}| ¡  | d¡ | ddd¡ | 	¡  |  
tj |¡¡ | ¡  |  tj |¡¡ W d Q R X d S )Nztest.cfgr<   r=   r   )ÚtempfileÚTemporaryDirectoryÚosr:   Újoinr;   Z
RemoveFilerD   rA   ÚSaver@   ÚexistsrB   )r&   Útdirr:   r'   r   r   r   Útest_remove_file¢   s    


z'IdleUserConfParserTest.test_remove_filec          	   C   s˜   t  ¡ †}tj |d¡}|  |¡}| d¡ | ddd¡ |  tj 	|¡¡ | 
¡  |  tj 	|¡¡ | d¡ | 
¡  |  tj 	|¡¡ W d Q R X d S )Nztest.cfgr<   r=   r   )rK   rL   rM   r:   rN   r;   rD   rA   rB   rP   rO   r@   Úremove_section)r&   rQ   r:   r'   r   r   r   Ú	test_save¯   s    



z IdleUserConfParserTest.test_saveN)r   )r4   r5   r6   r7   r;   rC   rE   rF   rI   rJ   rR   rT   r   r   r   r   r8   a   s   
	
r8   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 ¡}xD|j
D ]:}tj |d| ¡}t|dƒ}| ¡ | j |< W d Q R X qBW tj| _tƒ t_d S )NT)Ú_utestÚ__main__r   z../config-%s.defÚr)Úconfig_stringr   ÚIdleConfr4   rM   r:   ÚdirnameÚ__file__ÚabspathÚsysÚconfig_typesrN   ÚopenÚreadÚ_warnÚ	orig_warnr   )ÚclsÚconfÚidle_dirÚctyper2   Úfr   r   r   Ú
setUpClassÄ   s    zIdleConfTest.setUpClassc             C   s   | j t_d S )N)rc   r   rb   )rd   r   r   r   ÚtearDownClassÕ   s    zIdleConfTest.tearDownClassFc             C   s   t j|dS )N)rV   )r   rZ   )r&   rV   r   r   r   Ú
new_configÙ   s    zIdleConfTest.new_configc             C   sl   t jdd}xZ|jD ]P}t  d¡|j|< |j|  | j| ¡ t  d¡|j|< |j|  | j| ¡ qW |S )zbReturn a mocked idleConf

        Both default and user config used the same config-*.def
        T)rV   r   )	r   rZ   r_   r"   Ú
defaultCfgr#   rY   r9   r   )r&   re   rg   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0 tjddd |  | ¡ d¡ W dQ R X W dQ R X tjdd	dF tjd
dd, t d¡ |  | ¡ d¡ W dQ R X W dQ R X W dQ R X tjddd: |  t¡$ |  t¡ | ¡  W dQ R X W dQ R X W dQ R X dS )z,Test to get user config directory under unixT)rV   zos.path.expanduserz	/home/foo)Úreturn_valuezos.path.existsz/home/foo/.idlercNú~z	os.getcwdz/home/foo/cpythonzos.mkdirz/home/foo/cpython/.idlerczos.path.joinz/path/not/exists)rk   r   Úpatchr$   ÚGetUserCfgDirÚassertRaisesÚ
SystemExitÚFileNotFoundError)r&   re   r   r   r   Útest_get_user_cfg_dir_unixê   s    $
$z'IdleConfTest.test_get_user_cfg_dir_unixzthis is test for Windows systemc             C   sü   | j dd}tjddd0 tjddd |  | ¡ d¡ W dQ R X W dQ R X tjdd	dF tjd
dd, t d¡ |  | ¡ d¡ W dQ R X W dQ R X W dQ R X tjddd: |  t¡$ |  t¡ | ¡  W dQ R X W dQ R X W dQ R X dS )z/Test to get user config directory under WindowsT)rV   zos.path.expanduserzC:\foo)ro   zos.path.existszC:\foo\.idlercNrp   z	os.getcwdzC:\foo\cpythonzos.mkdirzC:\foo\cpython\.idlerczos.path.joinz/path/not/exists)rk   r   rq   r$   rr   rs   rt   ru   )r&   re   r   r   r   Útest_get_user_cfg_dir_windows  s    $
$z*IdleConfTest.test_get_user_cfg_dir_windowsc          
   C   s(  | j dd}d}tj ddi¡( tjd|d | ¡  W d Q R X W d Q R X |  |j ¡ |j¡ |  |j	 ¡ |j¡ x |j 
¡ D ]}|  |tj¡ q‚W x |j	 
¡ D ]}|  |tj¡ q¤W x2|j ¡ D ]$\}}|  |jtj |d| ¡¡ qÆW x4|j	 ¡ D ]&\}}|  |jtj |jd	| ¡¡ qúW d S )
NT)rV   z	/home/foor4   Z__foo__zos.path.dirname)ro   zconfig-%s.defzconfig-%s.cfg)rk   r   rq   ÚdictZCreateConfigHandlersr+   rl   r
   r_   r   ÚvaluesZassertIsInstancer   r"   r9   Úitemsr$   ÚfilerM   r:   rN   Zuserdir)r&   re   rf   Zdefault_parserZuser_parserZconfig_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 )NT)rV   zcfgparser.1r0   zFoo Barr1   )rk   r   r   r"   rl   r9   r   ZLoadCfgFilesr$   r%   r*   )r&   re   r2   r(   r   r   r   Útest_load_cfg_files3  s    z IdleConfTest.test_load_cfg_filesc          	   C   s>   |   ¡ }t d¡"}| ¡  |  |jt|jƒ¡ W d Q R X d S )Nz&idlelib.config.IdleUserConfParser.Save)rm   r   rq   ZSaveUserCfgFilesr$   Ú
call_countÚlenr   )r&   re   Úmr   r   r   Útest_save_user_cfg_filesH  s    z%IdleConfTest.test_save_user_cfg_filesc          	   C   s¤   |   ¡ }| j}|| ddd¡dƒ ||jddddddƒ t d¡V}||jddd	ddd ƒ || ddd
¡d ƒ ||jddd
dddƒ ||jdƒ W d Q R X d S )Nr   ÚEditorWindowÚwidthZ80r   )r   éP   zidlelib.config._warnZfontÚ	NotExistsZNE)r!   é   )rm   r$   Ú	GetOptionr   rq   r~   )r&   re   r(   rb   r   r   r   Útest_get_optionO  s    zIdleConfTest.test_get_optionc             C   s2   |   ¡ }| dddd¡ |  | ddd¡d¡ d S )Nr   r<   r=   r1   )rm   rA   r$   r‡   )r&   re   r   r   r   rC   [  s    zIdleConfTest.test_set_optionc             C   sœ   |   ¡ }|  | dd¡ddddddd	d
g¡ |  | dd¡ddddddd	d
g¡ |  tj¡ | dd¡ W d Q R X |  tj¡ | dd¡ W d Q R X d S )Nr!   r   ZGeneralr‚   ZPyShellÚIndentÚThemeÚKeysZHistoryÚ	HelpFilesÚuserZfoobarZ	notexists)rm   r+   ÚGetSectionListrs   r   ÚInvalidConfigSetZInvalidConfigType)r&   re   r   r   r   Útest_get_section_lista  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 Q R X d S )NzIDLE ClassicZnormalz#000000z#ffffff)Z
foregroundZ
backgroundZcursorZblackr	   ÚFoobarznormal-foregroundz#747474znormal-backgroundz#171717zidlelib.config._warn)rm   r$   ZGetHighlightrA   r   rq   )r&   re   r(   r   r   r   Útest_get_highlightr  s    

zIdleConfTest.test_get_highlightc          	   C   sL   |   ¡ }|  | dd¡| dd¡¡ |  tj¡ | dd¡ W dQ R X dS )zXXX: NOT YET DONEr!   zIDLE Classicr   ÚbadN)rm   r$   ZGetThemeDictrs   r   ZInvalidTheme)r&   re   r   r   r   Útest_get_theme_dict„  s    
z IdleConfTest.test_get_theme_dictc             C   s8   |   ¡ }|  | ¡ | d¡¡ |  | ¡ | d¡¡ d S )NrŠ   r‹   )rm   r$   ZCurrentThemeÚcurrent_colors_and_keysÚCurrentKeys)r&   re   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Š   zIDLE Classic)rm   r$   r•   )r&   re   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 )	NT)rV   Úwin32zIDLE Classic WindowsÚdarwinzIDLE Classic OSXz
some-linuxzIDLE Modern Unix)r^   Úplatformrk   r$   Údefault_keys)r&   Úcurrent_platformre   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GetExtensionsrS   )r&   r(   ZiGEr   r   r   Útest_get_extensions«  s    
z IdleConfTest.test_get_extensionsc             C   s0   |   ¡ }|  | | dd¡¡dddddg¡ d S )Nr!   r   ZAutoCompleteZCodeContextZFormatParagraphZ
ParenMatchrŸ   )rm   r+   ZRemoveKeyBindNamesrŽ   )r&   re   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 )Nz=
            [ZzDummy]
            enable = True
            zz-inrŸ   zz-out)r¢   r#   r$   r   ZGetExtnNameForEventrS   )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 )Nz=
            [ZzDummy]
            enable = True
            rŸ   z<<z-in>>z!<Control-Shift-KeyRelease-Insert>)r¢   r#   r$   r   ZGetExtensionKeysrS   )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 )Nz=
            [ZzDummy]
            enable = True
            r…   z!<Control-Shift-KeyRelease-Insert>z!<Control-Shift-KeyRelease-Delete>)z<<z-in>>z	<<z-out>>rŸ   )r¢   r#   r$   r   ZGetExtensionBindingsrS   )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 )NzIDLE Modern Unixz<<copy>>z<Control-Shift-Key-C>z<Control-Key-Insert>zIDLE Classic Unixz<Alt-Key-w>z<Meta-Key-w>zIDLE Classic Windowsz<Control-Key-c>z<Control-Key-C>zIDLE Classic Macz<Command-Key-c>zIDLE Classic OSXz
NOT EXISTS)rm   r$   ZGetKeyBinding)r&   re   r(   r   r   r   Útest_get_keybindingç  s    


z IdleConfTest.test_get_keybindingc             C   s8   t j}|  ¡ }dt _|  | ¡ | | ¡ ¡¡ |t _d S )Nz
some-linux)r^   r›   rm   r$   ZGetCurrentKeySetÚ	GetKeySetr–   )r&   r   re   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_cfgBindingsZenableÚTrueZnewfooz<Key-F3>zIDLE Modern Unixz
<<newfoo>>r   )rm   rl   r?   Úsetr$   rª   )r&   re   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)rm   r@   ZIsCoreBindingrB   )r&   re   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 Q R X |  | ¡ | d¡| d¡ ¡ |jd  	ddd¡ |jd  	ddd	¡ |jd  	dd
d¡ |jd  	ddd¡ |  | d¡dddg¡ |  | ¡ | 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±   )
rm   r$   ZGetExtraHelpSourceListrs   r   r   r+   ZGetAllExtraHelpSourcesListr   rA   )r&   re   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)rG   rP   Úrootr   r‚   ZfamilyÚsizer   Zweight)Útest.supportr¸   Ztkinterr¹   Ztkinter.fontrº   rm   ZwithdrawÚactualr$   ZGetFontZdestroy)r&   r¸   r¹   rº   re   r»   rh   r   r   r   Útest_get_font7  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>z<<copy>>z<Control-c>z<Control-C>z<<history-next>>z<Alt-n>zIDLE Classic Windowsz<Control-Key-l>z<Control-Key-L>zIDLE Classic OSXz<Command-Key-c>zIDLE Classic Unixz<Alt-Key-n>z<Meta-Key-n>zIDLE Modern Unix)rm   r$   ZGetCoreKeys)r&   re   r(   r   r   r   Útest_get_core_keysJ  s    

zIdleConfTest.test_get_core_keysN)F)'r4   r5   r6   r7   Úclassmethodri   rj   rk   rm   ÚunittestZskipIfr^   r›   Ú
startswithrv   rw   r|   r}   r   rˆ   rC   r   r’   r”   r—   r˜   rž   r£   r¤   r¥   r¦   r¨   r©   r«   r®   r°   r·   r¿   rÀ   r   r   r   r   rU   Á   s<   


	rU   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).
    zIDLE Classicc             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
            zIDLE NewrG   znon-existent)r$   Ú	colorkeysÚdefault_themeÚusermainr#   rS   )r&   r   r   r   Útest_old_builtin_themee  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 DarkzIDLE NewrG   znon-existentÚname2)rÇ   r#   r$   rÅ   rÆ   rS   )r&   r   r   r   Útest_new_builtin_themew  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 Darkznon-existentrÉ   )rÇ   r#   r$   rÅ   rÆ   ÚuserhighrS   )r&   r   r   r   Útest_user_override_theme‡  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
            zIDLE Classic Unixznon-existentrG   )r$   rÅ   rœ   rÇ   r#   rS   )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‹   zIDLE Modern UnixzIDLE Classic UnixrG   znon-existentrÉ   )rÇ   r#   r$   rÅ   rœ   rS   )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 Keysznon-existentrÉ   )rÇ   r#   r$   rÅ   rœ   ÚuserkeysrS   )r&   r   r   r   Útest_user_override_keys·  s    

z,CurrentColorKeysTest.test_user_override_keysN)r4   r5   r6   r7   r   r•   rÅ   rÆ   rœ   rÈ   rÊ   rÌ   rÍ   rÎ   rÐ   r   r   r   r   rÄ   Z  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 )N)r   ZConfigChangesrÛ   )r&   r   r   r   ÚsetUpÙ  s    zChangesTest.setUpc             C   s   |   | j| j¡ d S )N)r$   rÛ   Úempty)r&   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   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Ú0z
use-spacesr´   )rÛ   Úsave_optionr@   rB   r$   rÇ   Ú
has_optionrS   )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Ý   r@   Úsave_allr$   rÇ   rË   rÏ   rÜ   rB   rS   )r&   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ç   rB   rÇ   rå   r@   )r&   rÛ   r   r   r   Útest_save_helpý  s    zChangesTest.test_save_helpc             C   s   | j }| dddd¡ d S )Nr   r‰   z
use-spacesr´   )rÛ   rÜ   )r&   rÛ   r   r   r   Útest_save_default  s    zChangesTest.test_save_defaultc          
   C   s„   |   ¡ }| dd¡ |  || j¡ x\dD ]T\}}t|  |dd¡ | ||¡ |  t¡ || |  t| |  W d Q R X q(W d S )Nr   Zfake))r   rÒ   )r
   rØ   rG   Úvalue)rÝ   Zdelete_sectionr$   rá   r   rA   rs   ÚKeyError)r&   rÛ   ZcfgtypeÚsectionr   r   r   Útest_delete_section  s    zChangesTest.test_delete_sectionc             C   s"   |   ¡ }| ¡  |  || j¡ d S )N)rÝ   Úclearr$   rß   )r&   rÛ   r   r   r   Ú
test_clear  s    zChangesTest.test_clearN)r4   r5   r6   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 Q R X |tjdhƒ || ¡ dƒ tƒ }t dd¡ W d Q R X || ¡ dƒ tƒ }t dd¡ W d Q R X |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   rb   Úgetvalue)r&   ZEqualÚstderrr   r   r   Ú	test_warn!  s    zWarningTest.test_warnN)r4   r5   r6   rø   r   r   r   r   rñ     s   rñ   rW   é   )Ú	verbosity)!r7   r   r   r^   rM   rK   r½   r   r   rÂ   r   Zidlelib.idle_test.mock_idler   r   r   r   r   r9   rÇ   rË   rÏ   r¢   r   r   ZTestCaser   r8   rU   rÄ   rÑ   rñ   r4   r   r   r   r   r   Ú<module>   s:   ;`   oV
