3 § f%€ã@sNdZddlmZddlZddlZddlZddlmZmZddl Z ddl m Z ddlZddl m Z ej Z e jZiZejdƒZed<ejdƒZed <ejdƒZed <ejdƒZed <d d „Zdd„ZGdd„de jƒZGdd„de jƒZGdd„de jƒZGdd„de jƒZGdd„de jƒZGdd„de jƒZedk�rJe j dd�dS)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Ú extensionscCstt_dt_dS)NT)ÚtestcfgÚidleConfÚuserCfgÚidlelibÚtesting©rrúB/opt/alt/python36/lib64/python3.6/idlelib/idle_test/test_config.pyÚ setUpModulesrcCstt_dt_dS)NF)Úusercfgr rrrrrrrÚtearDownModule!src@s4eZdZdZdZdd„Zdd„Zdd„Zd d „Zd S) ÚIdleConfParserTestzTest that IdleConfParser workszœ [one] one = false two = true three = 10 [two] one = a string two = true three = false cCsôtjdƒ}|j|jƒ|j}|j|jdddd�dƒ|j|jdddd�dƒ||jddd d�d ƒ||jddƒd ƒ|j|jdddd�dƒ|j|jdddd�dƒ||jddƒd ƒ||jddƒd ƒ|j|jddƒƒ||jdddd�dƒdS)NrÚoneÚbool)ÚtypeFÚtwoTÚthreeÚinté za stringÚtrueÚfalseÚnotZexistZDEFAULT)Údefault)rÚIdleConfParserÚ read_stringÚ assertEqualZassertIsÚGetZ assertIsNone)ÚselfÚparserÚeqrrrÚtest_get5s  zIdleConfParserTest.test_getcCs\tjdƒ}|j|jƒ|j}|j|dƒdddgƒ|j|dƒdddgƒ|j|dƒgƒdS)Nrrrrz not exist)rr"r#Ú GetOptionListÚassertCountEqualr$)r&r'Zget_listrrrÚtest_get_option_listJs   z'IdleConfParserTest.test_get_option_listcCs&tjdƒ}|jƒ|j|jƒgƒdS)Nr)rr"ÚLoadr$Úsections)r&r'rrrÚtest_load_nothingRs z$IdleConfParserTest.test_load_nothingcCsFtdƒ}tj|ƒ}|jƒ|j|jddƒdƒ|j|jdƒdgƒdS)Nz cfgparser.1zFoo BarÚfooÚnewbar)rrr"r-r$r%r*)r&Ú config_pathr'rrrÚtest_load_fileWs  z!IdleConfParserTest.test_load_fileN) Ú__name__Ú __module__Ú __qualname__Ú__doc__rr)r,r/r3rrrrr&s  rc@sReZdZdZddd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dS)ÚIdleUserConfParserTestz"Test that IdleUserConfParser worksrcCs tj|ƒS)N)rÚIdleUserConfParser)r&ÚpathrrrÚ new_parserdsz!IdleUserConfParserTest.new_parsercCs¢|jƒ}|jdƒ|j|jdddƒƒ|j|jdddƒƒ|j|jdddƒƒ|j|jddƒdƒ|j|jdddƒƒ|j|jƒddgƒ|j|jddƒdƒdS)NÚFooÚbarrrÚBar) r;Ú add_sectionÚ assertTrueÚ SetOptionÚ assertFalser$r%r+r.)r&r'rrrÚtest_set_optiongs z&IdleUserConfParserTest.test_set_optioncCsZ|jƒ}|jdƒ|jdddƒ|j|jddƒƒ|j|jddƒƒ|j|jddƒƒdS)Nr<r=rZNotZExist)r;Ú AddSectionrAr@Z RemoveOptionrB)r&r'rrrÚtest_remove_optionws  z)IdleUserConfParserTest.test_remove_optioncCsN|jƒ}|j|jƒgƒ|jdƒ|jdƒ|jdƒ|j|jƒddgƒdS)Nr<r>)r;r$r.rDr+)r&r'rrrÚtest_add_section€s    z'IdleUserConfParserTest.test_add_sectioncCs^|jƒ}|jdƒ|jdƒ|jdddƒ|j|jƒdddgƒ|jƒ|j|jƒdgƒdS)Nr<r>ZIdleÚnameÚval)r;rDrAr+r.ZRemoveEmptySectionsr$)r&r'rrrÚtest_remove_empty_sections‹s  z1IdleUserConfParserTest.test_remove_empty_sectionscCsv|jƒ}|jdƒ|jdƒ|j|jƒƒ|j|jƒgƒ|jdddƒ|jdƒ|j|jƒƒ|j|jƒdgƒdS)Nr<r>r=r) r;rDr@ZIsEmptyr$r.rArBr+)r&r'rrrÚ test_is_empty•s   z$IdleUserConfParserTest.test_is_emptyc Cs„tjƒ�r}tjj|dƒ}|j|ƒ}|jƒ|jdƒ|jdddƒ|j ƒ|j tjj |ƒƒ|jƒ|j tjj |ƒƒWdQRXdS)Nztest.cfgr<r=r) ÚtempfileÚTemporaryDirectoryÚosr:Újoinr;Z RemoveFilerDrAÚSaver@ÚexistsrB)r&Útdirr:r'rrrÚtest_remove_file¢s   z'IdleUserConfParserTest.test_remove_filec Cs˜tjƒ�†}tjj|dƒ}|j|ƒ}|jdƒ|jdddƒ|jtjj |ƒƒ|j ƒ|j tjj |ƒƒ|j dƒ|j ƒ|jtjj |ƒƒWdQRXdS)Nztest.cfgr<r=r) rKrLrMr:rNr;rDrArBrPrOr@Úremove_section)r&rQr:r'rrrÚ test_save¯s    z IdleUserConfParserTest.test_saveN)r) r4r5r6r7r;rCrErFrIrJrRrTrrrrr8as      r8c@s,eZdZdZedd„ƒZedd„ƒZdAdd„Zd d „Ze j e j j d ƒd ƒd d„ƒZe j e j j d ƒ dƒdd„ƒZdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zd d!„Zd"d#„Zd$d%„Zd&d'„Zd(d)„Zd*d+„Zd,d-„Zd.d/„Zd0d1„Zd2d3„Z d4d5„Z!d6d7„Z"d8d9„Z#d:d;„Z$dd?„Z&d@S)BÚ IdleConfTestzTest for idleConfc Cs”i|_tjdd�}tdkr(tjjtƒ}ntjjt jdƒ}xD|j D]:}tjj |d|ƒ}t |dƒ�}|j ƒ|j|<WdQRXqBWtj|_tƒt_dS)NT)Ú_utestÚ__main__rz../config-%s.defÚr)Ú config_stringrÚIdleConfr4rMr:ÚdirnameÚ__file__ÚabspathÚsysÚ config_typesrNÚopenÚreadÚ_warnÚ orig_warnr)ÚclsÚconfÚidle_dirÚctyper2ÚfrrrÚ setUpClassÄs   zIdleConfTest.setUpClasscCs |jt_dS)N)rcrrb)rdrrrÚ tearDownClassÕszIdleConfTest.tearDownClassFcCs tj|d�S)N)rV)rrZ)r&rVrrrÚ new_configÙszIdleConfTest.new_configcCsltjdd�}xZ|jD]P}tjdƒ|j|<|j|j|j|ƒtjdƒ|j|<|j|j|j|ƒqW|S)zbReturn a mocked idleConf Both default and user config used the same config-*.def T)rVr) rrZr_r"Ú defaultCfgr#rYr9r)r&rergrrrÚ mock_configÜs  zIdleConfTest.mock_configÚwinzthis is test for unix systemc:Csü|jdd�}tjddd��0tjddd��|j|jƒdƒWdQRXWdQRXtjdd d��Ftjd d d��,tjd ƒ�|j|jƒd ƒWdQRXWdQRXWdQRXtjddd��:|jtƒ�$|jtƒ�|jƒWdQRXWdQRXWdQRXdS)z,Test to get user config directory under unixT)rVzos.path.expanduserz /home/foo)Ú return_valuezos.path.existsz/home/foo/.idlercNú~z os.getcwdz/home/foo/cpythonzos.mkdirz/home/foo/cpython/.idlercz os.path.joinz/path/not/exists)rkrÚpatchr$Ú GetUserCfgDirÚ assertRaisesÚ SystemExitÚFileNotFoundError)r&rerrrÚtest_get_user_cfg_dir_unixês $  $  z'IdleConfTest.test_get_user_cfg_dir_unixzthis is test for Windows systemc:Csü|jdd�}tjddd��0tjddd��|j|jƒdƒWdQRXWdQRXtjdd d��Ftjd d d��,tjd ƒ�|j|jƒd ƒWdQRXWdQRXWdQRXtjddd��:|jtƒ�$|jtƒ�|jƒWdQRXWdQRXWdQRXdS)z/Test to get user config directory under WindowsT)rVzos.path.expanduserzC:\foo)rozos.path.existszC:\foo\.idlercNrpz os.getcwdzC:\foo\cpythonzos.mkdirzC:\foo\cpython\.idlercz os.path.joinz/path/not/exists)rkrrqr$rrrsrtru)r&rerrrÚtest_get_user_cfg_dir_windowss $  $  z*IdleConfTest.test_get_user_cfg_dir_windowscCs(|jdd�}d}tjjddiƒ�(tjd|d��|jƒWdQRXWdQRX|j|jjƒ|jƒ|j|j jƒ|jƒx |jj ƒD]}|j |t j ƒq‚Wx |j j ƒD]}|j |t jƒq¤Wx2|jjƒD]$\}}|j|jtjj|d|ƒƒqÆWx4|j jƒD]&\}}|j|jtjj|jd |ƒƒqúWdS) NT)rVz /home/foor4Z__foo__zos.path.dirname)roz config-%s.defz config-%s.cfg)rkrrqÚdictZCreateConfigHandlersr+rlr r_rÚvaluesZassertIsInstancerr"r9Úitemsr$ÚfilerMr:rNZuserdir)r&rerfZdefault_parserZ user_parserZ config_typer'rrrÚtest_create_config_handlerss" z(IdleConfTest.test_create_config_handlerscCs¦|jdd�}tdƒ}tj|ƒ|jd<tj|ƒ|jd<|jƒ|j}||jdj ddƒdƒ||jdj dƒdgƒ||jdj ddƒdƒ||jdj dƒdgƒdS)NT)rVz cfgparser.1r0zFoo Barr1) rkrrr"rlr9rZ LoadCfgFilesr$r%r*)r&rer2r(rrrÚtest_load_cfg_files3s z IdleConfTest.test_load_cfg_filesc Cs>|jƒ}tjdƒ�"}|jƒ|j|jt|jƒƒWdQRXdS)Nz&idlelib.config.IdleUserConfParser.Save)rmrrqZSaveUserCfgFilesr$Ú call_countÚlenr)r&reÚmrrrÚtest_save_user_cfg_filesHs z%IdleConfTest.test_save_user_cfg_filescCs¤|jƒ}|j}||jdddƒdƒ||jddddd�dƒtjdƒ�V}||jddd dd�dƒ||jddd ƒdƒ||jddd d d �d ƒ||jd ƒWdQRXdS)NrÚ EditorWindowÚwidthZ80r)réPzidlelib.config._warnZfontÚ NotExistsZNE)r!é)rmr$Ú GetOptionrrqr~)r&rer(rbrrrÚtest_get_optionOs zIdleConfTest.test_get_optioncCs2|jƒ}|jddddƒ|j|jdddƒdƒdS)Nrr<r=r1)rmrAr$r‡)r&rerrrrC[szIdleConfTest.test_set_optioncCsœ|jƒ}|j|jddƒddddddd d gƒ|j|jd dƒddddddd d gƒ|jtjƒ�|jd dƒWdQRX|jtjƒ�|jdd ƒWdQRXdS)Nr!rZGeneralr‚ZPyShellÚIndentÚThemeÚKeysZHistoryÚ HelpFilesÚuserZfoobarZ notexists)rmr+ÚGetSectionListrsrÚInvalidConfigSetZInvalidConfigType)r&rerrrÚtest_get_section_listas      z"IdleConfTest.test_get_section_listcCsÞ|jƒ}|j}||jddƒdddœƒ||jdddƒdƒ||jdddƒdƒ|jtjƒ�|jdddƒWdQRX||jdd ƒd ddœƒ|jd d d dƒ|jd d ddƒtjdƒ�||jd dƒdddœƒWdQRXdS)Nz IDLE ClassicZnormalz#000000z#ffffff)Z foregroundZ backgroundZfgZbgZfbZcursorZblackr ÚFoobarznormal-foregroundz#747474znormal-backgroundz#171717zidlelib.config._warn) rmr$Z GetHighlightrsrZ InvalidFgBgrArrq)r&rer(rrrÚtest_get_highlightrs   zIdleConfTest.test_get_highlightc CsL|jƒ}|j|jddƒ|jddƒƒ|jtjƒ�|jddƒWdQRXdS)zXXX: NOT YET DONEr!z IDLE Classicr�ÚbadN)rmr$Z GetThemeDictrsrZ InvalidTheme)r&rerrrÚtest_get_theme_dictˆs  z IdleConfTest.test_get_theme_dictcCs8|jƒ}|j|jƒ|jdƒƒ|j|jƒ|jdƒƒdS)NrŠr‹)rmr$Z CurrentThemeÚcurrent_colors_and_keysÚ CurrentKeys)r&rerrrÚtest_get_current_theme_and_keys”sz,IdleConfTest.test_get_current_theme_and_keyscCs|jƒ}|j|jdƒdƒdS)NrŠz IDLE Classic)rmr$r•)r&rerrrÚtest_current_colors_and_keysšsz)IdleConfTest.test_current_colors_and_keyscCs^tj}|jdd�}dt_|j|jƒdƒdt_|j|jƒdƒdt_|j|jƒdƒ|t_dS) NT)rVZwin32zIDLE Classic WindowsÚdarwinzIDLE Classic OSXz some-linuxzIDLE Modern Unix)r^Úplatformrkr$Ú default_keys)r&Úcurrent_platformrerrrÚtest_default_keysŸs zIdleConfTest.test_default_keyscCsˆtjdƒ|j}tj}||dd�gƒ||ƒdgƒ||dd�dgƒ||dd�ddgƒ||ddd �ddgƒtjdƒtjdƒdS) Nzn [ZzDummy] enable = True [DISABLE] enable = False T)Z shell_onlyÚZzDummy)Ú editor_onlyF)Ú active_onlyZDISABLE)r rŸ)Úuserextnr#r$r Z GetExtensionsrS)r&r(ZiGErrrÚtest_get_extensions¯s z IdleConfTest.test_get_extensionscCs0|jƒ}|j|j|jddƒƒdddddgƒdS)Nr!r Z AutoCompleteZ CodeContextZFormatParagraphZ ParenMatchrž)rmr+ZRemoveKeyBindNamesrŽ)r&rerrrÚtest_remove_key_bind_namesÁsz'IdleConfTest.test_remove_key_bind_namescCs>tjdƒ|j}|tjdƒdƒ|tjdƒdƒtjdƒdS)Nz= [ZzDummy] enable = True zz-inržzz-out)r¡r#r$r ZGetExtnNameForEventrS)r&r(rrrÚtest_get_extn_name_for_eventÈs z)IdleConfTest.test_get_extn_name_for_eventcCs0tjdƒ|jtjdƒddgiƒtjdƒdS)Nz= [ZzDummy] enable = True ržz<>z!)r¡r#r$r ZGetExtensionKeysrS)r&rrrÚtest_get_extension_keysÒs   z$IdleConfTest.test_get_extension_keyscCsNtjdƒ|j}tj}||dƒiƒdgdgdœ}||dƒ|ƒtjdƒdS)Nz= [ZzDummy] enable = True r…z!z!)z<>z <>rž)r¡r#r$r ZGetExtensionBindingsrS)r&r(ZiGEBZexpectrrrÚtest_get_extension_bindingsÞs z(IdleConfTest.test_get_extension_bindingscCs |jƒ}|j}||jddƒddgƒ||jddƒddgƒ||jddƒd d gƒ||jd dƒd gƒ||jd dƒd gƒ||jddƒgƒ||jddƒgƒdS)NzIDLE Modern Unixz<>zzzIDLE Classic Unixz z zIDLE Classic WindowszzzIDLE Classic MaczzIDLE Classic OSXz NOT EXISTS)rmr$Z GetKeyBinding)r&rer(rrrÚtest_get_keybindingës      z IdleConfTest.test_get_keybindingcCs8tj}|jƒ}dt_|j|jƒ|j|jƒƒƒ|t_dS)Nz some-linux)r^ršrmr$ZGetCurrentKeySetÚ GetKeySetr–)r&rœrerrrÚtest_get_current_keysetüs  z$IdleConfTest.test_get_current_keysetcCsj|jƒ}|jdjdƒ|jdjdƒ|jdjdddƒ|jdjdddƒ|j|jdƒd d ƒdS) Nr r‘ZFoobar_cfgBindingsÚenableÚTrueZnewfoozzIDLE Modern Unixz <>r)rmrlr?Úsetr$r¨)r&rerrrÚtest_get_keyset s zIdleConfTest.test_get_keysetcCsL|jƒ}|j|jdƒƒ|j|jdƒƒ|j|jdƒƒ|j|jdƒƒdS)NÚcopyZcutzdel-word-rightz not-exists)rmr@Z IsCoreBindingrB)r&rerrrÚtest_is_core_bindings z!IdleConfTest.test_is_core_bindingcCs|jƒ}|j|jdƒgƒ|j|jdƒgƒ|jtjƒ�|j|jdƒgƒWdQRX|j|jƒ|jdƒ|jdƒƒ|jdj dddƒ|jdj ddd ƒ|jdj dd d ƒ|jdj dd d ƒ|j|jdƒdddgƒ|j|jƒ|jdƒ|jdƒƒdS)Nr!r�r“rrŒÚ4zPython;https://python.orgÚ3zPython:https://python.orgÚ2z/Pillow;https://pillow.readthedocs.io/en/latest/Ú1z/IDLE;C:/Programs/Python36/Lib/idlelib/help.htmlÚIDLEú*C:/Programs/Python36/Lib/idlelib/help.htmlÚPillowú(https://pillow.readthedocs.io/en/latest/ÚPythonúhttps://python.org)r´rµr³)r¶r·r²)r¸r¹r°) rmr$ZGetExtraHelpSourceListrsrr�r+ZGetAllExtraHelpSourcesListrrA)r&rerrrÚtest_extra_help_source_list s& z(IdleConfTest.test_extra_help_source_listcCsœddlm}ddlm}ddlm}|jƒ}|dƒ|ƒ}|jƒ|j|dd|d�ƒ}|j |j |d d ƒ|d |d dkr|d n|d |dfƒ|j ƒ~dS)Nr)Úrequires)ÚTk)ÚFontZguiZ TkFixedFontT)rGrPÚrootrr‚ZfamilyÚsizerZweight) Ú test.supportr»Ztkinterr¼Z tkinter.fontr½rmZwithdrawZactualr$ZGetFontZdestroy)r&r»r¼r½rer¾rhrrrÚ test_get_font;s    (zIdleConfTest.test_get_fontcCs®|jƒ}|j}||jƒddgƒ||jƒdddgƒ||jƒddgƒ||jdƒdd d gƒ||jd ƒdd gƒ||jd ƒdddgƒ||jdƒdddgƒdS)Nz<>z z<>z z z<>zzIDLE Classic WindowszzzIDLE Classic OSXzzIDLE Classic Unixz z zIDLE Modern Unix)rmr$Z GetCoreKeys)r&rer(rrrÚtest_get_core_keysNs  zIdleConfTest.test_get_core_keysN)F)'r4r5r6r7Ú classmethodrirjrkrmÚunittestZskipIfr^ršÚ startswithrvrwr|r}r�rˆrCr�r’r”r—r˜r�r¢r£r¤r¥r¦r§r©r­r¯rºrÁrÂrrrrrUÁs<          rUc@sReZdZdZejZdZejƒZdd„Z dd„Z dd„Z d d „Z d d „Z d d„ZdS)Ú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 ClassiccCs~|j|jdƒ|jƒtjdƒ|j|jdƒ|jƒdtdd<|j|jdƒdƒdtdd<|j|jdƒ|jƒtjdƒdS)NrŠz< [Theme] default = True zIDLE NewrGz non-existent)r$Ú colorkeysÚ default_themeÚusermainr#rS)r&rrrÚtest_old_builtin_themeis  z+CurrentColorKeysTest.test_old_builtin_themecCshtjdƒ|j|jdƒdƒdtdd<|j|jdƒdƒdtdd<|j|jdƒ|jƒtjdƒdS)NzZ [Theme] default = True name2 = IDLE Dark rŠz IDLE DarkzIDLE NewrGz non-existentÚname2)rÉr#r$rÇrÈrS)r&rrrÚtest_new_builtin_theme{s  z+CurrentColorKeysTest.test_new_builtin_themecCsptjdƒ|j|jdƒ|jƒtjdƒ|j|jdƒdƒdtdd<|j|jdƒdƒtjdƒtjdƒdS)Nz\ [Theme] default = False name = Custom Dark rŠz[Custom Dark] a=bz Custom Darkz non-existentrË)rÉr#r$rÇrÈÚuserhighrS)r&rrrÚtest_user_override_theme‹s   z-CurrentColorKeysTest.test_user_override_themecCs^|j|jdƒ|jƒtjdƒ|j|jdƒdƒdtdd<|j|jdƒ|jƒtjdƒdS)Nr‹z` [Keys] default = True name = IDLE Classic Unix zIDLE Classic Unixz non-existentrG)r$rÇr›rÉr#rS)r&rrrÚtest_old_builtin_keysœs z*CurrentColorKeysTest.test_old_builtin_keyscCshtjdƒ|j|jdƒdƒdtdd<|j|jdƒdƒdtdd<|j|jdƒ|jƒtjdƒdS)Nz` [Keys] default = True name2 = IDLE Modern Unix r‹zIDLE Modern UnixzIDLE Classic UnixrGz non-existentrË)rÉr#r$rÇr›rS)r&rrrÚtest_new_builtin_keys«s  z*CurrentColorKeysTest.test_new_builtin_keyscCsptjdƒ|j|jdƒ|jƒtjdƒ|j|jdƒdƒdtdd<|j|jdƒdƒtjdƒtjdƒdS)Nz[ [Keys] default = False name = Custom Keys r‹z[Custom Keys] a=bz Custom Keysz non-existentrË)rÉr#r$rÇr›ÚuserkeysrS)r&rrrÚtest_user_override_keys»s   z,CurrentColorKeysTest.test_user_override_keysN)r4r5r6r7r r•rÇrÈr›rÊrÌrÎrÏrÐrÒrrrrrÆ^srÆc@s�eZdZiiiidœZdd„Zdddiiddd iid d d iiidœZd d„Zdd„Zdd„Zdd„Z dd„Z dd„Z dd„Z dd„Z dd„ZdS) Ú ChangesTest)rr r r cCs:|j}|jddddƒ|jddddƒ|jd d d d ƒ|S) NrÚMsecÚmitemÚmvalr ÚHsecÚhitemÚhvalr ÚKsecÚkitemÚkval)ÚchangesÚ add_option)r&rÝrrrÚloadÑs zChangesTest.loadrÔrÕrÖr×rØrÙrÚrÛrÜcCstjƒ|_dS)N)rZ ConfigChangesrÝ)r&rrrÚsetUpÝszChangesTest.setUpcCs|j|j|jƒdS)N)r$rÝÚempty)r&rrrÚ test_initàszChangesTest.test_initcCs8|jƒ}|j||jƒ|jddddƒ|j||jƒdS)NrrÔrÕrÖ)rßr$ÚloadedrÞ)r&rÝrrrÚtest_add_optionãszChangesTest.test_add_optioncCs |jj}|j|ddddƒƒ|j|ddddƒƒ|jtdddƒ|j|ddddƒƒ|jtdddƒ|j|ddddƒƒ|jtjddƒƒtjdƒdS)Nrr‰ZwhatÚ0z use-spacesr³)rÝÚ save_optionr@rBr$rÉÚ has_optionrS)r&rærrrÚtest_save_optionészChangesTest.test_save_optioncCs’|jƒ}|j|jƒƒ|jtdddƒ|jtdddƒ|jtddd ƒ|jd dddƒ|j|jƒƒtj dƒtj dƒtj dƒdS) NrÔrÕrÖr×rØrÙrÚrÛrÜr) rßr@Úsave_allr$rÉrÍrÑrÞrBrS)r&rÝrrrÚtest_save_addedõs  zChangesTest.test_save_addedcCsV|j}|jddddƒ|jddddƒ|jƒ|jtjddƒƒ|jtjddƒƒdS)NrrŒr´ZidledocZELDIZcodeldi)rÝrærÞrérBrÉrçr@)r&rÝrrrÚtest_save_helps zChangesTest.test_save_helpcCs|j}|jddddƒdS)Nrr‰z use-spacesr³)rÝrÞ)r&rÝrrrÚtest_save_default szChangesTest.test_save_defaultc Cs„|jƒ}|jddƒ|j||jƒx\d D]T\}}t|j|ddƒ|j||ƒ|jtƒ�|||t||WdQRXq(WdS) NrZfakerÔr rÚrGÚvalue©rrÔ©r rÚ)rîrï)rßZdelete_sectionr$rãr rArsÚKeyError)r&rÝZcfgtypeZsectionrrrÚtest_delete_sections    zChangesTest.test_delete_sectioncCs"|jƒ}|jƒ|j||jƒdS)N)rßÚclearr$rá)r&rÝrrrÚ test_clearszChangesTest.test_clearN)r4r5r6rárßrãràrârärèrêrërìrñrórrrrrÓÍs       rÓc@seZdZdd„ZdS)Ú WarningTestcCs´|j}tƒt_tƒ�}tjddƒWdQRX|tjdhƒ||jƒdƒtƒ�}tjddƒWdQRX||jƒdƒtƒ�}tjddƒWdQRX|tjd d hƒ||jƒd ƒdS) NÚwarningÚkeyÚ rÚwarn2Úyek)rõrözwarning )rõrö)rørùzwarn2 )r$r¬rZ_warnedrrbÚgetvalue)r&ZEqualÚstderrrrrÚ test_warn%szWarningTest.test_warnN)r4r5r6rürrrrrô#srôrWé)Ú verbosity)!r7rrr^rMrKrÀrrrÄrZidlelib.idle_test.mock_idlerr rrr r9rÉrÍrÑr¡rrZTestCaserr8rUrÆrÓrôr4rrrrrÚs:   ;` oV