a 9êdgZ<ã@s~dZddlmZddlZddlmZddlmZmZddl Z ddlm Z ddl m Z Gdd „d ej ƒZGd d „d ej ƒZGd d „d ej ƒZGdd„dej ƒZGdd„dej ƒZGdd„dej ƒZGdd„dej ƒZGdd„dej ƒZGdd„dej ƒZGdd„dej ƒZGdd„dej ƒZGdd„dej ƒZGd d!„d!ej ƒZGd"d#„d#ej ƒZGd$d%„d%ej ƒZed&krzejd'd(d)dS)*a½Test query, coverage 93%). Non-gui tests for Query, SectionName, ModuleName, and HelpSource use dummy versions that extract the non-gui methods and add other needed attributes. GUI tests create an instance of each class and simulate entries and button clicks. Subclass tests only target the new code in the subclass definition. The appearance of the widgets is checked by the Query and HelpSource htests. These are run by running query.py. é)ÚqueryN©Úrequires)ÚTkÚEND)Úmock)ÚVarc@sFeZdZdZGdd„dƒZdd„Zdd„Zdd „Zd d „Zd d „Z dS)Ú QueryTestzTest Query base class.c@s<eZdZejjZejjZejjZdd„Zdd„Z dd„Z dS)zQueryTest.Dummy_QuerycCs&t|d|_ddi|_d|_d|_dS)N©ÚvalueÚtextÚF)rÚentryÚ entry_errorÚresultÚ destroyed©ÚselfZ dummy_entry©rú8/usr/local/lib/python3.9/idlelib/idle_test/test_query.pyÚ__init__!s  zQueryTest.Dummy_Query.__init__cCs||jd<dS©Nr ©r©rÚmessagerrrÚ showerror&szQueryTest.Dummy_Query.showerrorcCs d|_dS©NT)r©rrrrÚdestroy(szQueryTest.Dummy_Query.destroyN) Ú__name__Ú __module__Ú __qualname__rÚQueryÚentry_okÚokÚcancelrrrrrrrÚ Dummy_Querys r&cCsD| d¡}| | ¡d¡| |j|jfd¡| d|jd¡dS)Nú ©NFz blank liner )r&Ú assertEqualr#rrÚassertInr©rÚdialogrrrÚtest_entry_ok_blank+s zQueryTest.test_entry_ok_blankcCsD| d¡}|j}|| ¡dƒ||j|jfdƒ||jddƒdS)Nú good Úgoodr(r r )r&r)r#rrr)rr,ÚEqualrrrÚtest_entry_ok_good1s  zQueryTest.test_entry_ok_goodcCsT| d¡}t ¡|j_| | ¡d¡| |jjj¡|j`| |j |j fd¡dS)Nr r() r&rÚMockrZ focus_setr)r$Ú assertTrueÚcalledrrr+rrrÚ test_ok_blank8s   zQueryTest.test_ok_blankcCs2| d¡}| | ¡d¡| |j|jfd¡dS)Nr/)r/T)r&r)r$rrr+rrrÚ test_ok_good@s zQueryTest.test_ok_goodcCs2| d¡}| | ¡d¡| |j|jfd¡dS)Nzdoes not matterr)r&r)r%rrr+rrrÚ test_cancelEs zQueryTest.test_cancelN) rr r!Ú__doc__r&r-r1r5r6r7rrrrr sr c@s>eZdZdZGdd„dƒZdd„Zdd„Zdd „Zd d „Zd S) ÚSectionNameTestz#Test SectionName subclass of Query.c@s*eZdZejjZdgZdd„Zdd„ZdS)z!SectionNameTest.Dummy_SectionNameÚusedcCst|d|_ddi|_dS©Nr r r ©rrrrrrrrQs z*SectionNameTest.Dummy_SectionName.__init__cCs||jd<dSrrrrrrrTsz+SectionNameTest.Dummy_SectionName.showerrorN) rr r!rÚ SectionNamer#Ú used_namesrrrrrrÚDummy_SectionNameNsr?cCs0| d¡}| | ¡d¡| d|jd¡dS©Nr'zno namer ©r?r)r#r*rr+rrrÚtest_blank_section_nameWs z'SectionNameTest.test_blank_section_namecCs0| d¡}| | ¡d¡| d|jd¡dS)Nr:Zuser rAr+rrrÚtest_used_section_name\s z&SectionNameTest.test_used_section_namecCs0| d¡}| | ¡d¡| d|jd¡dS)NZ goodgoodgoodgoodgoodgoodgoodgoodzlonger than 30r rAr+rrrÚtest_long_section_nameas z&SectionNameTest.test_long_section_namecCs0| d¡}| | ¡d¡| |jdd¡dS)Nr.r/r r )r?r)r#rr+rrrÚtest_good_section_namefs z&SectionNameTest.test_good_section_nameN) rr r!r8r?rBrCrDrErrrrr9Ks  r9c@s>eZdZdZGdd„dƒZdd„Zdd„Zdd „Zd d „Zd S) ÚModuleNameTestz"Test ModuleName subclass of Query.c@s(eZdZejjZdZdd„Zdd„ZdS)zModuleNameTest.Dummy_ModuleNamer cCst|d|_ddi|_dSr;r<rrrrrrs z(ModuleNameTest.Dummy_ModuleName.__init__cCs||jd<dSrrrrrrrusz)ModuleNameTest.Dummy_ModuleName.showerrorN) rr r!rÚ ModuleNamer#Útext0rrrrrrÚDummy_ModuleNameosrIcCs0| d¡}| | ¡d¡| d|jd¡dSr@©rIr)r#r*rr+rrrÚtest_blank_module_namexs z%ModuleNameTest.test_blank_module_namecCs0| d¡}| | ¡d¡| d|jd¡dS)NZ __name_xyz123_should_not_exist__z not foundr rJr+rrrÚtest_bogus_module_name}s z%ModuleNameTest.test_bogus_module_namecCs0| d¡}| | ¡d¡| d|jd¡dS)NÚ itertoolsz source-basedr rJr+rrrÚtest_c_source_name‚s z!ModuleNameTest.test_c_source_namecCsd| d¡}| | ¡ d¡¡| |jdd¡| d¡}| | ¡ d¡¡| |jdd¡dS)NÚidlelibú __init__.pyr r zos.pathzpath.py)rIr3r#Úendswithr)rr+rrrÚtest_good_module_name‡s   z$ModuleNameTest.test_good_module_nameN) rr r!r8rIrKrLrNrRrrrrrFls  rFc@s6eZdZdZGdd„dƒZdd„Zdd„Zdd „Zd S) ÚGotoTestzTest Goto subclass of Query.c@s$eZdZejjZdd„Zdd„ZdS)zGotoTest.Dummy_ModuleNamecCst|d|_ddi|_dSr;r<rrrrr•s z"GotoTest.Dummy_ModuleName.__init__cCs||jd<dSrrrrrrr˜sz#GotoTest.Dummy_ModuleName.showerrorN)rr r!rÚGotor#rrrrrrrI“srIcCs0| d¡}| | ¡d¡| d|jd¡dS)NÚaznot a base 10 integerr rJr+rrrÚtest_bogus_goto›s zGotoTest.test_bogus_gotocCs0| d¡}| | ¡d¡| d|jd¡dS)NÚ0znot a positive integerr rJr+rrrÚ test_bad_goto s zGotoTest.test_bad_gotocCs0| d¡}| | ¡d¡| |jdd¡dS)NÚ1ér r )rIr)r#rr+rrrÚtest_good_goto¥s zGotoTest.test_good_gotoN)rr r!r8rIrVrXr[rrrrrSs rSc@s&eZdZdZGdd„dƒZdd„ZdS)ÚHelpsourceBrowsefileTestz8Test browse_file method of ModuleName subclass of Query.c@seZdZejjZeƒZdS)z)HelpsourceBrowsefileTest.Dummy_HelpSourceN)rr r!rÚ HelpSourceÚ browse_filerÚpathvarrrrrÚDummy_HelpSource°sr`c Cs | ¡}ddd„dfddd„tfddd„dfddd„tffD]^\}}}| ¡<|j |¡||_| ¡| |j ¡|¡Wdƒq<1s0Yq»ózBHelpsourceBrowsefileTest.test_file_replaces_path..cSstS©N©Ú__file__rbrrrre¼rfZhtestcSsdSrarrbrrrre½rfcSstSrgrhrbrrrre¾rf) r`riÚsubTestr_ÚsetZ askfilenamer^r)Úget)rr,ÚpathÚfuncrrrrÚtest_file_replaces_path´s    ü  z0HelpsourceBrowsefileTest.test_file_replaces_pathN)rr r!r8r`rorrrrr\­sr\c@sPeZdZdZGdd„dƒZejZedd„ƒZ dd„Z dd „Z d d „Z d d „Z dS)ÚHelpsourcePathokTestz4Test path_ok method of HelpSource subclass of Query.c@s&eZdZejjZdd„Zddd„ZdS)z%HelpsourcePathokTest.Dummy_HelpSourcecCst|d|_ddi|_dSr;)rrmÚ path_error)rZ dummy_pathrrrrËs z.HelpsourcePathokTest.Dummy_HelpSource.__init__NcCs||jd<dSr)rq)rrZwidgetrrrrÎsz/HelpsourcePathokTest.Dummy_HelpSource.showerror)N)rr r!rr]Úpath_okrrrrrrr`Ésr`cCs |jt_dSrg)Ú orig_platformrÚplatform©ÚclsrrrÚ tearDownClassÒsz"HelpsourcePathokTest.tearDownClasscCs0| d¡}| | ¡d¡| d|jd¡dS)Nr'z no help filer )r`r)rrr*rqr+rrrÚtest_path_ok_blankÖs z'HelpsourcePathokTest.test_path_ok_blankcCs4| td¡}| | ¡d¡| d|jd¡dS)Nz bad-bad-badz not existr )r`rir)rrr*rqr+rrrÚtest_path_ok_badÛsz%HelpsourcePathokTest.test_path_ok_badc Cst| d¡}|j}dD]Z}| ¡>|j |¡| | ¡|¡| |jdd¡Wdƒq1sd0YqdS)Nr )z www.py.orgz http://py.orgr )r`r)rjrmrkrrrq)rr,r0ÚurlrrrÚtest_path_ok_webàs   z%HelpsourcePathokTest.test_path_ok_webc Cs|| d¡}dD]h\}}| ¡H|t_|j t¡| | ¡|t¡| |j dd¡Wdƒq1sl0YqdS)Nr ))Údarwinúfile://)Úotherr r ) r`rjrrtrmrkrir)rrrq)rr,rtÚprefixrrrÚtest_path_ok_fileés    z&HelpsourcePathokTest.test_path_ok_fileN)rr r!r8r`rrtrsÚ classmethodrwrxryr{r€rrrrrpÆs  rpc@s&eZdZdZGdd„dƒZdd„ZdS)ÚHelpsourceEntryokTestz5Test entry_ok method of HelpSource subclass of Query.c@s,eZdZejjZiZiZdd„Zdd„Z dS)z&HelpsourceEntryokTest.Dummy_HelpSourcecCs|jSrg)ÚnamerrrrÚitem_okúsz.HelpsourceEntryokTest.Dummy_HelpSource.item_okcCs|jSrg)rmrrrrrrüsz.HelpsourceEntryokTest.Dummy_HelpSource.path_okN) rr r!rr]r#rrqr„rrrrrrr`ös r`c Csb| ¡}dD]P\}}}| ¡.|||_|_| | ¡|¡Wdƒq 1sR0Yq dS)N))NNN)Núdoc.txtN)ÚdocNN)r†r…)r†r…)r`rjrƒrmr)r#)rr,rƒrmrrrrÚtest_entry_ok_helpsourceÿs  z.HelpsourceEntryokTest.test_entry_ok_helpsourceN)rr r!r8r`r‡rrrrr‚ós r‚c@s6eZdZdZGdd„dƒZdd„Zdd„Zdd „Zd S) ÚCustomRunCLIargsokTestz6Test cli_ok method of the CustomRun subclass of Query.c@s$eZdZejjZdd„Zdd„ZdS)z&CustomRunCLIargsokTest.Dummy_CustomRuncCst|d|_ddi|_dSr;r<rrrrrs z/CustomRunCLIargsokTest.Dummy_CustomRun.__init__cCs||jd<dSrrrrrrrsz0CustomRunCLIargsokTest.Dummy_CustomRun.showerrorN)rr r!rÚ CustomRunÚ cli_args_okrrrrrrÚDummy_CustomRunsr‹cCs| d¡}| | ¡g¡dS)Nr')r‹r)rŠr+rrrÚtest_blank_argss z&CustomRunCLIargsokTest.test_blank_argscCs0| d¡}| | ¡d¡| d|jd¡dS)Nz'no-closing-quotez No closingr )r‹r)rŠr*rr+rrrÚtest_invalid_argss z(CustomRunCLIargsokTest.test_invalid_argscCsHgd¢}| d |¡d¡}| | ¡|dg¡| |jdd¡dS)N)z-nZ10z --verbosez-pz/pathz--namer'z "my name"zmy namer r )r‹Újoinr)rŠr)rÚargsr,rrrÚtest_good_args sz%CustomRunCLIargsokTest.test_good_argsN)rr r!r8r‹rŒrrrrrrrˆ s rˆc@s&eZdZdZGdd„dƒZdd„ZdS)ÚCustomRunEntryokTestz8Test entry_ok method of the CustomRun subclass of Query.c@s&eZdZejjZiZeƒZdd„Z dS)z$CustomRunEntryokTest.Dummy_CustomRuncCs|jSrg)Úcli_argsrrrrrŠ.sz0CustomRunEntryokTest.Dummy_CustomRun.cli_args_okN) rr r!rr‰r#rrÚ restartvarrŠrrrrr‹*sr‹c Cs„| ¡}dD]r}|j |¡ddgdg|fffD]L\}}|j||d&||_| | ¡|¡Wdƒq01sr0Yq0q dS)N>FT)NNzmy arg)Úrestartr’)r‹r“rkrjr’r)r#)rr,r”r’rrrrÚtest_entry_ok_customrun1s ÿ z,CustomRunEntryokTest.test_entry_ok_customrunN)rr r!r8r‹r•rrrrr‘'sr‘c@sDeZdZedd„ƒZedd„ƒZdd„Zdd„Zd d „Zd d „Z d S)Ú QueryGuiTestcCsBtdƒtƒ|_}|j ¡tj|dddd|_t ¡|j_ dS)NÚguiZTESTÚtestT©Ú_utest) rrÚrootÚwithdrawrr"r,rr2r)rvr›rrrÚ setUpClass@s   zQueryGuiTest.setUpClasscCs|j`|`|j ¡|`dSrg)r,rr›rurrrrwHs zQueryGuiTest.tearDownClasscCs(|jj dd¡d|j_|jj ¡dS)NrÚend)r,rÚdeleterrZ reset_mockrrrrÚsetUpOszQueryGuiTest.setUpcCs>|j}|j dd¡|j ¡| |jd¡| |jj ¡dS©NrÚabc) r,rÚinsertÚ button_okÚinvoker)rr3rr4r+rrrÚ test_click_okTs  zQueryGuiTest.test_click_okcCs0|j}|j ¡| |jd¡| |jj¡dSrg)r,r¤r¥r)rZ assertFalserr4r+rrrÚtest_click_blank[s zQueryGuiTest.test_click_blankcCs>|j}|j dd¡|j ¡| |jd¡| |jj ¡dSr¡) r,rr£Z button_cancelr¥r)rr3rr4r+rrrÚtest_click_cancelas  zQueryGuiTest.test_click_cancelN) rr r!rrrwr r¦r§r¨rrrrr–>s  r–c@s eZdZedd„ƒZdd„ZdS)ÚSectionnameGuiTestcCs tdƒdS©Nr—rrurrrrkszSectionnameGuiTest.setUpClasscCsltƒ}| ¡tj|dddhdd}|j}| |jdh¡|j dd¡|j  ¡| |j d¡|  ¡dS)NÚTÚtr¢Tr™rZokay) rrœrr=r)r>rr£r¤r¥rr)rr›r,r0rrrÚtest_click_section_nameos z*SectionnameGuiTest.test_click_section_nameN)rr r!rrr­rrrrr©is r©c@s eZdZedd„ƒZdd„ZdS)ÚModulenameGuiTestcCs tdƒdSrªrrurrrr}szModulenameGuiTest.setUpClasscCsjtƒ}| ¡tj|ddddd}| |jd¡| |j ¡d¡|j  ¡|  |j   d¡¡|  ¡dS)Nr«r¬rOTr™rP)rrœrrGr)rHrrlr¤r¥r3rrQr©rr›r,rrrÚtest_click_module_names z(ModulenameGuiTest.test_click_module_nameN©rr r!rrr°rrrrr®{s r®c@s eZdZedd„ƒZdd„ZdS)Ú GotoGuiTestcCs tdƒdSrªrrurrrrŽszGotoGuiTest.setUpClasscCsRtƒ}| ¡tj|dddd}|j dd¡|j ¡| |j d¡|  ¡dS)Nr«r¬Tr™rZ22é) rrœrrTrr£r¤r¥r)rrr¯rrrr°’s z"GotoGuiTest.test_click_module_nameNr±rrrrr²Œs r²c@s eZdZedd„ƒZdd„ZdS)ÚHelpsourceGuiTestcCs tdƒdSrªrrurrrržszHelpsourceGuiTest.setUpClasscCs„tƒ}| ¡tj|ddtdd}|j}||j ¡dƒ||j ¡tƒ|j   ¡t j dkr`dnd}||j d|tfƒ| ¡dS)Nr«Z__test__T)ZmenuitemÚfilepathršr|r}r )rrœrr]rir)rrlrmr¤r¥Úsysrtrr)rr›r,r0rrrrÚtest_click_help_source¢s ÿ z(HelpsourceGuiTest.test_click_help_sourceN)rr r!rrr·rrrrr´œs r´c@s eZdZedd„ƒZdd„ZdS)ÚCustomRunGuiTestcCs tdƒdSrªrrurrrr²szCustomRunGuiTest.setUpClasscCsptƒ}| ¡tj|dddgdd}| |j ¡d¡|j td¡|j   ¡| |j gd¢df¡|  ¡dS) NZTitlerUúb=1T)r’ršza b=1z c)rUr¹rd) rrœrr‰r)rrlr£rr¤r¥rrr¯rrrÚtest_click_args¶sÿ z CustomRunGuiTest.test_click_argsN)rr r!rrrºrrrrr¸°s r¸Ú__main__éF)Ú verbosityÚexit)r8rOrZunittestZ test.supportrÚtkinterrrr¶rZidlelib.idle_test.mock_tkrZTestCaser r9rFrSr\rpr‚rˆr‘r–r©r®r²r´r¸rÚmainrrrrÚs0    3!$-+