a  ze.}@sJddlmZddlZddlZddlZddlmZmZddlZddlm Z ddlZddl m Z ej Z e j ZiZedZed<edZed<edZed <edZed <d d Zd dZGdddejZGdddejZGdddejZGdddejZGdddejZGdddejZedkrFejdddS))configN)captured_stderrfindfile)mock)Funcmain highlightkeys extensionscCstt_dt_dS)NT)testcfgidleConfuserCfgidlelibtestingrrQ/opt/bitninja-python-dojo/embedded/lib/python3.9/idlelib/idle_test/test_config.py setUpModulesrcCstt_dt_dS)NF)usercfgr rrrrrrrtearDownModule!src@s0eZdZdZddZddZddZdd Zd S) IdleConfParserTestz [one] one = false two = true three = 10 [two] one = a string two = true three = false cCstd}||j|j}||jddddd||jddddd||jddd dd ||ddd ||jddddd||jddddd||ddd ||ddd ||dd||jddddddS)NronebooltypeFtwoTthreeint za stringtruefalsenotZexistZDEFAULTdefault)rIdleConfParser read_string assertEqualZassertIsGetZ assertIsNone)selfparsereqrrrtest_get5s  zIdleConfParserTest.test_getcCsXtd}||j|j}||dgd||dgd||dgdS)Nrr)rrrrz not exist)rr$r% GetOptionListassertCountEqualr&)r(r)Zget_listrrrtest_get_option_listJs   z'IdleConfParserTest.test_get_option_listcCs&td}|||gdS)Nr)rr$Loadr&sectionsr(r)rrrtest_load_nothingRs z$IdleConfParserTest.test_load_nothingcCsFtd}t|}|||ddd||ddgdS)N cfgparser.1Foo Barfoonewbar)rrr$r/r&r'r,)r( config_pathr)rrrtest_load_fileWs  z!IdleConfParserTest.test_load_fileN)__name__ __module__ __qualname__rr+r.r2r8rrrrr&s  rc@sFeZdZdddZddZddZdd Zd d Zd d ZddZ dS)IdleUserConfParserTestrcCs t|SN)rIdleUserConfParser)r(pathrrr new_parserdsz!IdleUserConfParserTest.new_parsercCs|}|d||ddd||ddd||ddd||ddd||ddd||ddg||ddddS)NFoobarrr Bar) r@ add_section assertTrue SetOption assertFalser&r'r-r0r1rrrtest_set_optiongs z&IdleUserConfParserTest.test_set_optioncCsZ|}|d|ddd||dd||dd||dddS)NrArBrZNotZExist)r@ AddSectionrFrEZ RemoveOptionrGr1rrrtest_remove_optionws  z)IdleUserConfParserTest.test_remove_optioncCsN|}||g|d|d|d||ddgdS)NrArC)r@r&r0rIr-r1rrrtest_add_sections    z'IdleUserConfParserTest.test_add_sectioncCs\|}|d|d|ddd||gd|||dgdS)NrArCIdlenameval)rCrArL)r@rIrFr-r0ZRemoveEmptySectionsr&r1rrrtest_remove_empty_sectionss  z1IdleUserConfParserTest.test_remove_empty_sectionscCsv|}|d|d||||g|ddd|d||||dgdS)NrArCrBr ) r@rIrEZIsEmptyr&r0rFrGr-r1rrr test_is_emptys   z$IdleUserConfParserTest.test_is_emptycCst}tj|d}||}|d|ddd|tj || | tj || d| |tj |Wdn1s0YdS)Nztest.cfgrArBr) tempfileTemporaryDirectoryosr?joinr@rIrFrGexistsZSaverEremove_section)r(Ztdirr?r)rrr test_saves    z IdleUserConfParserTest.test_saveN)r) r9r:r;r@rHrJrKrOrPrWrrrrr<as     r<c@s(eZdZeddZeddZd@ddZdd Ze e j d d d d Z e e j d  dddZddZddZddZddZddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.Zd/d0Zd1d2Zd3d4Z d5d6Z!d7d8Z"d9d:Z#d;d<Z$d=d>Z%d?S)A IdleConfTestc Csi|_tjdd}tdkr(tjt}ntjt jd}|j D]N}tj |d|}t |d}| |j|<Wdq@1s0Yq@tj|_tt_dS)NT_utest__main__rz../config-%s.defr) config_stringrIdleConfr9rSr?dirname__file__abspathsys config_typesrTopenread_warn orig_warnr)clsconfidle_dirctyper7frrr setUpClasss   .zIdleConfTest.setUpClasscCs |jt_dSr=)rgrrf)rhrrr tearDownClassszIdleConfTest.tearDownClassFcCs tj|dS)NrY)rr^)r(rZrrr new_configszIdleConfTest.new_configcCshtjdd}|jD]P}td|j|<|j||j|td|j|<|j||j|q|S)NTrYr) rr^rcr$ defaultCfgr%r]r>r)r(rirkrrr mock_configs  zIdleConfTest.mock_configwinzthis is test for unix systemc Cs|jdd}tjdddNtjddd ||dWdn1sP0YWdn1sn0Ytjdddxtjd d dJtd  ||d Wdn1s0YWdn1s0YWdn1s0Ytjd ddp|tD|t|Wdn1sV0YWdn1sv0YWdn1s0YdS)NTrYos.path.expanduser /home/fooZ return_valueos.path.existsz/home/foo/.idlerc~ os.getcwdz/home/foo/cpythonos.mkdirz/home/foo/cpython/.idlerc os.path.join/path/not/existsrorpatchr&Z GetUserCfgDir assertRaises SystemExitFileNotFoundErrorr(rirrrtest_get_user_cfg_dir_unixs L  `  z'IdleConfTest.test_get_user_cfg_dir_unixzthis is test for Windows systemc Cs|jdd}tjdddNtjddd ||dWdn1sP0YWdn1sn0Ytjdddxtjd d dJtd  ||d Wdn1s0YWdn1s0YWdn1s0Ytjd ddp|tD|t|Wdn1sV0YWdn1sv0YWdn1s0YdS)NTrYrszC:\foorurvzC:\foo\.idlercrwrxzC:\foo\cpythonryzC:\foo\cpython\.idlercrzr{r|rrrrtest_get_user_cfg_dir_windowss L  `  z*IdleConfTest.test_get_user_cfg_dir_windowsc CsP|jdd}d}tjddiFtjd|d|Wdn1sN0YWdn1sl0Y||j|j||j |j|j D]}| |t j q|j D]}| |t jq|jD](\}}||jtj|d|d q|j D]2\}}||jtj|jp8d d|d qdS) NTrYrtr9Z__foo__zos.path.dirnameruzconfig-z.def#z.cfg)rorr}dictZCreateConfigHandlersr-rpr rcrvaluesZassertIsInstancerr$r>itemsr&filerSr?rTZuserdir)r(rirjZdefault_parserZ user_parserZcfg_typer)rrrtest_create_config_handlers s& Dz(IdleConfTest.test_create_config_handlerscCs|jdd}td}t||jd<t||jd<||j}||jd ddd||jd ddg||jd ddd||jd ddgdS)NTrYr3r5r4r6) rorrr$rpr>rZ LoadCfgFilesr&r'r,)r(rir7r*rrrtest_load_cfg_files&s z IdleConfTest.test_load_cfg_filescCsR|}td,}|||jt|jWdn1sD0YdS)Nz&idlelib.config.IdleUserConfParser.Save)rqrr}ZSaveUserCfgFilesr& call_countlenr)r(rimrrrtest_save_user_cfg_files;s z%IdleConfTest.test_save_user_cfg_filescCs|}|j}||dddd||jddddddtd`}||jddd ddd||ddd d||jddd d d d ||jd Wdn1s0YdS)Nr EditorWindowwidthZ80rrPidlelib.config._warnZfont NotExistsZNEr")rqr& GetOptionrr}r)r(rir*rfrrrtest_get_optionBs zIdleConfTest.test_get_optioncCs2|}|dddd||dddddS)NrrArBr6)rqrFr&rrrrrrHNszIdleConfTest.test_set_optioncCs|}||ddgd||ddgd|tj|ddWdn1sf0Y|tj|ddWdn1s0YdS)Nr#r)ZGeneralrZPyShellIndentThemeKeysZHistory HelpFilesuserZfoobarZ notexists)rqr-GetSectionListr~rInvalidConfigSetZInvalidConfigTyperrrrtest_get_section_listTs  *z"IdleConfTest.test_get_section_listcCs|}|j}||ddddd||ddddd|dd d d |dd d d td(||d dd d dWdn1s0YdS)N IDLE ClassicZnormalz#000000z#ffffff)Z foregroundZ backgroundZcursorZblackr Foobarznormal-foregroundz#747474znormal-backgroundz#171717r)rqr&Z GetHighlightrFrr}r(rir*rrrtest_get_highlightes zIdleConfTest.test_get_highlightcCs`|}||dd|dd|tj|ddWdn1sR0YdS)Nr#rrbad)rqr&Z GetThemeDictr~rZ InvalidThemerrrrtest_get_theme_dictws  z IdleConfTest.test_get_theme_dictcCs8|}|||d|||ddS)Nrr)rqr&Z CurrentThemecurrent_colors_and_keys CurrentKeysrrrrtest_get_current_theme_and_keyssz,IdleConfTest.test_get_current_theme_and_keyscCs|}||dddS)Nrr)rqr&rrrrrtest_current_colors_and_keyssz)IdleConfTest.test_current_colors_and_keyscCs^tj}|jdd}dt_||ddt_||ddt_||d|t_dS) NTrYwin32IDLE Classic WindowsdarwinIDLE Classic OSX some-linuxIDLE Modern Unix)rbplatformror& default_keysr(Zcurrent_platformrirrrtest_default_keyss zIdleConfTest.test_default_keyscCstd|j}tj}||ddg||dg||dddg||ddddg||ddd ddgtdtddS) Nzn [ZzDummy] enable = True [DISABLE] enable = False T)Z shell_onlyZzDummy) editor_onlyF) active_onlyZDISABLE)rr)userextnr%r&r Z GetExtensionsrV)r(r*ZiGErrrtest_get_extensionss  z IdleConfTest.test_get_extensionscCs*|}|||ddgddS)Nr#r )Z AutoCompleteZ CodeContextZFormatParagraphZ ParenMatchr)rqr-ZRemoveKeyBindNamesrrrrrtest_remove_key_bind_namess z'IdleConfTest.test_remove_key_bind_namescCs>td|j}|tdd|tddtddS)N= [ZzDummy] enable = True zz-inrzz-out)rr%r&r ZGetExtnNameForEventrV)r(r*rrrtest_get_extn_name_for_events  z)IdleConfTest.test_get_extn_name_for_eventcCs0td|tdddgitddS)Nrr<>!)rr%r&r ZGetExtensionKeysrVr(rrrtest_get_extension_keyss   z$IdleConfTest.test_get_extension_keyscCsNtd|j}tj}||didgdgd}||d|tddS)Nrrrz!)rz <>r)rr%r&r ZGetExtensionBindingsrV)r(r*ZiGEBexpectrrrtest_get_extension_bindingss z(IdleConfTest.test_get_extension_bindingscCs|}|j}||ddddg||ddddg||ddd d g||d dd g||d dd g||ddg||ddgdS)Nr<>zzIDLE Classic Unixz z rzzzIDLE Classic Macrz NOT EXISTS)rqr&Z GetKeyBindingrrrrtest_get_keybindings   z IdleConfTest.test_get_keybindingcCs8tj}|}dt_|||||t_dS)Nr)rbrrqr&ZGetCurrentKeySet GetKeySetrrrrrtest_get_current_keysets  z$IdleConfTest.test_get_current_keysetcCsj|}|jdd|jdd|jdddd|jdddd||dd d dS) Nr rZFoobar_cfgBindingsenableTrueZnewfoozrz <>r)rqrprDsetr&rrrrrtest_get_keysets zIdleConfTest.test_get_keysetcCsL|}||d||d||d||ddS)NcopyZcutzdel-word-rightz not-exists)rqrEZ IsCoreBindingrGrrrrtest_is_core_bindings z!IdleConfTest.test_is_core_bindingcCs|}||dg||dg|tj"||dgWdn1s`0Y|||d|d|jd ddd|jd ddd |jd dd d |jd dd d ||dgd|||d|ddS)Nr#rrrr4zPython;https://python.org3zPython:https://python.org2z/Pillow;https://pillow.readthedocs.io/en/latest/1z/IDLE;C:/Programs/Python36/Lib/idlelib/help.html))IDLEz*C:/Programs/Python36/Lib/idlelib/help.htmlr)ZPillowz(https://pillow.readthedocs.io/en/latest/r)Pythonzhttps://python.orgr) rqr&ZGetExtraHelpSourceListr~rrr-ZGetAllExtraHelpSourcesListrrFrrrrtest_extra_help_source_lists(0 z(IdleConfTest.test_extra_help_source_listcCsddlm}ddlm}ddlm}|}|d|}|||dd|d}| | |d d |d |d dkr|d n|d |df| ~dS)Nr)requires)Tk)FontZguiZ TkFixedFontT)rMrUrootrrfamilysizerZweight) test.supportrtkinterrZ tkinter.fontrrqZwithdrawactualr&ZGetFontZdestroy)r(rrrrirrlrrr test_get_font*s    $zIdleConfTest.test_get_fontcCs|}|j}||ddg||dddg||ddg||ddd d g||d dd g||d dddg||ddddgdS)Nz<>z rz z z<>zrzzrrrz z r)rqr&Z GetCoreKeysrrrrtest_get_core_keys=szIdleConfTest.test_get_core_keysN)F)&r9r:r; classmethodrmrnrorqunittestZskipIfrbr startswithrrrrrrrHrrrrrrrrrrrrrrrrrrrrrrrXsB            rXc@sNeZdZejZdZeZddZddZ ddZ dd Z d d Z d d Z dS)CurrentColorKeysTestrcCs~||d|jtd||d|jdtdd<||dddtdd<||d|jtddS)Nrz< [Theme] default = True IDLE NewrM non-existent)r& colorkeys default_themeusermainr%rVrrrrtest_old_builtin_themeXs   z+CurrentColorKeysTest.test_old_builtin_themecCshtd||dddtdd<||dddtdd<||d|jtddS)NzZ [Theme] default = True name2 = IDLE Dark rz IDLE DarkrrMrname2)rr%r&rrrVrrrrtest_new_builtin_themejs   z+CurrentColorKeysTest.test_new_builtin_themecCsptd||d|jtd||dddtdd<||ddtdtddS)Nz\ [Theme] default = False name = Custom Dark rz[Custom Dark] a=bz Custom Darkrr)rr%r&rruserhighrVrrrrtest_user_override_themezs    z-CurrentColorKeysTest.test_user_override_themecCs^||d|jtd||dddtdd<||d|jtddS)Nrz` [Keys] default = True name = IDLE Classic Unix rrrM)r&rrrr%rVrrrrtest_old_builtin_keyss   z*CurrentColorKeysTest.test_old_builtin_keyscCshtd||dddtdd<||dddtdd<||d|jtddS)Nz` [Keys] default = True name2 = IDLE Modern Unix rrrrMrr)rr%r&rrrVrrrrtest_new_builtin_keyss   z*CurrentColorKeysTest.test_new_builtin_keyscCsptd||d|jtd||dddtdd<||ddtdtddS)Nz[ [Keys] default = False name = Custom Keys rz[Custom Keys] a=bz Custom Keysrr)rr%r&rruserkeysrVrrrrtest_user_override_keyss    z,CurrentColorKeysTest.test_user_override_keysN)r9r:r;r rrrrrrrrrrrrrrrMsrc@seZdZiiiidZddZdddiiddd iid d d iiidZd dZddZddZddZ ddZ ddZ ddZ ddZ ddZdS) ChangesTest)rr r r cCs:|j}|dddd|dddd|d d d d |S) NrMsecmitemmvalr Hsechitemhvalr Kseckitemkvalchanges add_optionr(rrrrloads zChangesTest.loadrrrrrrrrrcCst|_dSr=)rZ ConfigChangesrrrrrsetUpszChangesTest.setUpcCs||j|jdSr=)r&remptyrrrr test_initszChangesTest.test_initcCs8|}|||j|dddd|||jdS)Nrrrr)rr&loadedrrrrrtest_add_optionszChangesTest.test_add_optioncCs|jj}||dddd||dddd|tddd||dddd|tddd||dddd|tddtddS)NrrZwhat0 use-spacesr)r save_optionrErGr&r has_optionrV)r(rrrrtest_save_optionszChangesTest.test_save_optioncCs|}|||tddd|tddd|tddd |d ddd||t dt dt ddS) Nrrrrrrrrrr) rrEsave_allr&rrrrrGrVrrrrtest_save_addeds  zChangesTest.test_save_addedcCsV|j}|dddd|dddd||tdd|tdddS)NrrrZidledocZELDIZcodeldi)rrrr rGrrrErrrrtest_save_helps zChangesTest.test_save_helpcCs|j}|dddddS)Nrrrrrrrrrtest_save_defaultszChangesTest.test_save_defaultc Cs|}|dd|||jdD]h\}}t||dd||||t(|||t||Wdq&1s0Yq&dS)NrZfake))rr)r rrMvalue)rZdelete_sectionr&rr rFr~KeyError)r(rZcfgtypesectionrrrtest_delete_sections     zChangesTest.test_delete_sectioncCs"|}||||jdSr=)rclearr&rrrrr test_clear szChangesTest.test_clearN)r9r:r;rrrrrrr r r r rrrrrrrs        rc@seZdZddZdS) WarningTestcCs|j}tt_t}tddWdn1s60Y|tjdh||dt}tddWdn1s0Y||dt}tddWdn1s0Y|tjddh||d dS) Nwarningkey)rrzwarning rwarn2yek)rrzwarn2 )r&rrZ_warnedrrfgetvalue)r(ZEqualstderrrrr test_warns***zWarningTest.test_warnN)r9r:r;rrrrrrsrr[) verbosity) rrrbrSrQrrrrrZidlelib.idle_test.mock_idlerr rrr r>rrrrrrZTestCaserr<rXrrrr9rrrrrs8   ;SoV