a  ze؄@sddlZddlmZddlZddlZddlZddlZddlmZddl Zddl Z ddl Z ddl Z Gddde j ZGddde jZedkre dS) N)abspath)supportc@s<eZdZdZdZdZZZZdZ dZ dZ Z ddZ dS)TestableTestProgramNTcCsdSNselfrrP/opt/bitninja-python-dojo/embedded/lib/python3.9/unittest/test/test_discovery.py__init__szTestableTestProgram.__init__)__name__ __module__ __qualname__moduleexitZ defaultTestfailfast catchbreakbuffer verbosityZprogNameZ testRunner testLoaderr rrrr rsrc@seZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.Zd/d0Zd1d2Zd3d4Zd5d6Zd7S)8 TestDiscoverycCs\t}d|_|d}||d|t|dWdn1sN0YdS)N/fooz/foo/bar/baz.pyzbar.bazz /bar/baz.py)unittest TestLoader_top_level_dirZ_get_name_from_path assertEqual assertRaisesAssertionError)r loadernamerrr test_get_name_from_paths    z%TestDiscovery.test_get_name_from_pathc s t}tjfdd}tjjfdd}tjjfdd}gddd ggfd d t_||d d }|tj_||dd}|tj_||dd |_|j dfdd }||_ dd |_ tj d}||_ t ||d} dddD} | dddD|| | dS)Ncs t_dSroslistdirroriginal_listdirrr restore_listdir/sz6TestDiscovery.test_find_tests..restore_listdircs tj_dSrr#pathisfileroriginal_isfilerr restore_isfile2sz5TestDiscovery.test_find_tests..restore_isfilecs tj_dSrr#r)isdirroriginal_isdirrr restore_isdir5sz4TestDiscovery.test_find_tests..restore_isdir)ztest2.pyztest1.pyz not_a_test.pytest_dirztest.fooztest-not-a-module.py another_dirztest4.pyztest3.pycs dSNrpopr) path_listsrr ;z/TestDiscovery.test_find_tests..cSs |dS)Ndirendswithr8rrr r/>sz,TestDiscovery.test_find_tests..isdircSs|d od|vS)Nr=r4r>r8rrr r*Csz-TestDiscovery.test_find_tests..isfilecSs|dSNz modulerr8rrr r;Ir<cs||d}||dgSNpatternz testsrrrCbaseorig_load_testsrr loadTestsFromModuleKs z:TestDiscovery.test_find_tests..loadTestsFromModulecSs|Srrthingrrr r;Pr<rtest*.pycSsg|]}|dgqS) module testsr.0r rrr Xr<z1TestDiscovery.test_find_tests..)Ztest1Ztest2r3cSsg|]}d|dgqS)z test_dir.%srLrrMrrr rOZr<)Ztest3Ztest4)N)rrr#r$r)r*r/ addCleanup_get_module_from_namerH suiteClassrrlist _find_testsextendr) r rr'r-r2r/r*rH top_levelsuiteZexpectedrrGr1r,r&r:r test_find_tests+sB          zTestDiscovery.test_find_testscst}tjfdd}tjjfdd}tjjfdd}dggfdd t_||d d tj_||d d tj_||d d |_|j dfd d }||_ dd |_ tj d}||_ t ||d}||gdS)Ncs t_dSrr"rr%rr r'dsz=TestDiscovery.test_find_tests_socket..restore_listdircs tj_dSrr(rr+rr r-gsz.restore_isfilecs tj_dSrr.rr0rr r2jsz;TestDiscovery.test_find_tests_socket..restore_isdirsocketcs dSr5r6r8r9rr r;nr<z6TestDiscovery.test_find_tests_socket..cSsdSNFrr8rrr r;qr<cSsdSr[rr8rrr r;tr<cSs|dSr@rr8rrr r;wr<cs||d}||dgSrArrDrFrr rHys zATestDiscovery.test_find_tests_socket..loadTestsFromModulecSs|SrrrIrrr r;~r<rrK)N)rrr#r$r)r*r/rPrQrHrRrrrSrTr)r rr'r-r2rHrVrWrrXr test_find_tests_socket^s.           z$TestDiscovery.test_find_tests_socketcs<t}tjfdd}tjjfdd}tjjfdd}gdggggfdd t_||d d tj_||fd d tj_||Gd d d tfdd |_ |j dfdd }||_ dd |_ d|_ t |dd}||dgddgdgg|jgd|j|gdfgdS)Ncs t_dSrr"rr%rr r'szCTestDiscovery.test_find_tests_with_package..restore_listdircs tj_dSrr(rr+rr r-szBTestDiscovery.test_find_tests_with_package..restore_isfilecs tj_dSrr.rr0rr r2szATestDiscovery.test_find_tests_with_package..restore_isdirZ a_directorytest_directoryZtest_directory2cs dSr5r6r8r9rr r;r<z.cSsdSNTrr8rrr r;r<cstj|vSrr#r)basenamer8 directoriesrr r;r<c@s$eZdZgZgZddZddZdS)z:TestDiscovery.test_find_tests_with_package..Modulecs8|_j|tj|dkr4fdd}|_dS)Nr^csj|||fjdgSN load_testsload_tests_argsappendr)rtestsrCr rr load_testsszWTestDiscovery.test_find_tests_with_package..Module.__init__..load_testsr)pathsrhr#rarkr r)rkrr r r s   zCTestDiscovery.test_find_tests_with_package..Module.__init__cSs |j|jkSrr8r otherrrr __eq__szATestDiscovery.test_find_tests_with_package..Module.__eq__Nr rrrmrgr rqrrrr Modules rscs|Srrr rsrr r;r<cs||d}||jdgSNrBrLr8rDrFrr rHs zGTestDiscovery.test_find_tests_with_package..loadTestsFromModulecSs|SrrrIrrr r;r<rztest*a_directory module teststest_directory load_teststest_directory module teststest_directory2 module tests)Nrrr#r$r)r*r/rPobjectrQrHrRrrSrTrrmrgr rr'r-r2rHrWrrsrcrGr1r,r&r:r test_find_tests_with_packagesJ          z*TestDiscovery.test_find_tests_with_packagecs<t}tjfdd}tjjfdd}tjjfdd}gdggggfdd t_||d d tj_||fd d tj_||Gd d d tfdd |_ |j dfdd }||_ dd |_ d|_ t |dd}||dgddgdgg|jgd|j|gdfgdS)Ncs t_dSrr"rr%rr r'szWTestDiscovery.test_find_tests_default_calls_package_load_tests..restore_listdircs tj_dSrr(rr+rr r-szVTestDiscovery.test_find_tests_default_calls_package_load_tests..restore_isfilecs tj_dSrr.rr0rr r2szUTestDiscovery.test_find_tests_default_calls_package_load_tests..restore_isdirr]cs dSr5r6r8r9rr r;r<zPTestDiscovery.test_find_tests_default_calls_package_load_tests..cSsdSr_rr8rrr r;r<cstj|vSrr`r8rbrr r;r<c@s$eZdZgZgZddZddZdS)zNTestDiscovery.test_find_tests_default_calls_package_load_tests..Modulecs8|_j|tj|dkr4fdd}|_dS)Nr^csj|||fjdgSrdrfrir rr rkszkTestDiscovery.test_find_tests_default_calls_package_load_tests..Module.__init__..load_testsrlrnrr r r s   zWTestDiscovery.test_find_tests_default_calls_package_load_tests..Module.__init__cSs |j|jkSrr8rorrr rqszUTestDiscovery.test_find_tests_default_calls_package_load_tests..Module.__eq__Nrrrrrr rss rscs|Srrrtrurr r;r<cs||d}||jdgSrvr8rDrFrr rHs z[TestDiscovery.test_find_tests_default_calls_package_load_tests..loadTestsFromModulecSs|SrrrIrrr r;r<rrKrwrxryrz)Nr{r}rr~r 0test_find_tests_default_calls_package_load_testssJ          z>TestDiscovery.test_find_tests_default_calls_package_load_testscsHtjfdd}||tjjfdd}||tjjfdd}|||tjjtdtddgtd d d gifd d }|t_ddtj_ddtj_Gdddt t }fdd|_ dd|_ td|_t|tdd}||dgdggg|jddg|j|gdf|gdfgdS)Ncs t_dSrr"rr%rr r'szTTestDiscovery.test_find_tests_customize_via_package_pattern..restore_listdircs tj_dSrr(rr+rr r-!szSTestDiscovery.test_find_tests_customize_via_package_pattern..restore_isfilecs tj_dSrr.rr0rr r2%szRTestDiscovery.test_find_tests_customize_via_package_pattern..restore_isdirr my_package/foo/my_package __init__.pytest_module.pycs t|SrrSr8vfsrr list_dir7szMTestDiscovery.test_find_tests_customize_via_package_pattern..list_dircSs |d SNz.pyr>r8rrr r;:r<zMTestDiscovery.test_find_tests_customize_via_package_pattern..cSs |dSrr>r8rrr r;;r<c@s$eZdZgZgZddZddZdS)zKTestDiscovery.test_find_tests_customize_via_package_pattern..Modulecs@|_j||dr*fdd}n fdd}|_dS)NZ test_modulecsj|||fjdgSrdrfrir rr rkEszhTestDiscovery.test_find_tests_customize_via_package_pattern..Module.__init__..load_testscsBj|||fd}tj|}|j||d}jd|g|S)Nz/foo/my_package/__init__.py start_dirrCre)rgrhr#r)dirnamediscover)rrjrC__file__Zthis_dirZ pkg_testsr rr rkIs  )r)rmrhr?rkrnrr r r As    zTTestDiscovery.test_find_tests_customize_via_package_pattern..Module.__init__cSs |j|jkSrr8rorrr rqTszRTestDiscovery.test_find_tests_customize_via_package_pattern..Module.__eq__Nrrrrrr rs=srscs|Srrrtrurr r;Xr<cSs|SrrrIrrr r;Yr<rKzmy_package load_testsz!my_package.test_module load_testszmy_package.test_module)r#r$rPr)r*r/sysremoverr|rrrQrRrrSrTrrmrg)r r'r-r2rrrWr)rsr1r,r&rr -test_find_tests_customize_via_package_patternsH             z;TestDiscovery.test_find_tests_customize_via_package_patternc svt}tjjtjjfdd}ddtj_||tjddfdd}||tjtj d}| t |j ddd Wdn1s0Y| |j|||tjd dtj_d dtj_fd d }||gdfdd }||_t|_| ddd}tjd}tjd} | |d| |j|| | dfg||tjdS)Ncs tj_dSrr(rr+rr r-tsz3TestDiscovery.test_discover..restore_isfilecSsdSr[rr8rrr r;wr<z-TestDiscovery.test_discover..cstjdd<dSr)rr)r) orig_sys_pathrr restore_path{sz1TestDiscovery.test_discover..restore_pathrz/foo/bar top_level_dircSsdSr_rr8rrr r;r<cSsdSr_rr8rrr r;r<cs tj_dSrr.rr0rr r2sz2TestDiscovery.test_discover..restore_isdircs||fdgSNrjrhrrC namespace_find_tests_argsrr rTsz0TestDiscovery.test_discover.._find_testsz /foo/bar/bazrCz ['tests'])N)rrr#r)r*r/rPrrnormpathr ImportErrorrrrassertInrTstrrR) r rr-r full_pathr2rTrWrrr)rrr1r,r test_discoveros:      ,       zTestDiscovery.test_discovercstddgtddgifdd}|ttdtj|t_|ttjdtjjd d tj_|ttjd tjjd d tj_|tjj tdGd ddt t }fdd |_ dd |_|jddd}||dggdS)Nz /toplevelZstartdirz/toplevel/startdirrcs t|Srrr8rrr rsz[TestDiscovery.test_discover_start_dir_is_package_calls_package_load_tests..list_dirr$r*cSs |dSrr>r8rrr r;r<z[TestDiscovery.test_discover_start_dir_is_package_calls_package_load_tests..r/cSs |d Srr>r8rrr r;r<c@s,eZdZgZgZddZddZddZdS)zYTestDiscovery.test_discover_start_dir_is_package_calls_package_load_tests..ModulecSs ||_dSrr8)r r)rrr r szbTestDiscovery.test_discover_start_dir_is_package_calls_package_load_tests..Module.__init__cSs d|jgS)Nzload_tests called r8)r rrjrCrrr rkszdTestDiscovery.test_discover_start_dir_is_package_calls_package_load_tests..Module.load_testscSs |j|jkSrr8rorrr rqsz`TestDiscovery.test_discover_start_dir_is_package_calls_package_load_tests..Module.__eq__N)r rrrmrgr rkrqrrrr rss rscs|Srrrtrurr r;r<cSs|SrrrIrrr r;r<rzload_tests called startdir)rrPsetattrr#r$r)r*r/rrr|rrrQrRrr)r rrrWr)rsrr ;test_discover_start_dir_is_package_calls_package_load_testss&       zITestDiscovery.test_discover_start_dir_is_package_calls_package_load_testscsTtjfddt_tjjddtj_tjddfdd}||dS)NcsgSrr_)fakefilerr r;r<z8TestDiscovery.setup_import_issue_tests..cSsdSr_rrrrr r;r<cs tj_t_tjdd<dSr)r#r)r*r$rr)r*r$rrr restoresz7TestDiscovery.setup_import_issue_tests..restore)r#r$r)r*rrP)r rrr)rr*r$rr setup_import_issue_testss z&TestDiscovery.setup_import_issue_testscs|ttdtj|ttjdtjj|ttjdtjj|tjjt dt tjfdd}|t_ddtj_ddtj_dS) Nr$r*r/cs t|Srrr8rrr rsz@TestDiscovery.setup_import_issue_package_tests..list_dircSs |d Srr>r8rrr r;r<z@TestDiscovery.setup_import_issue_package_tests..cSs |dSrr>r8rrr r;r<) rPrr#r$r)r*r/r __setitem__slicerS)r rrrrr setup_import_issue_package_testss  z.TestDiscovery.setup_import_issue_package_testscCst}|d|d}|ttj| | d| g|j | dt |j |j d}|d|vd|tt|dd}|t|Wdn1s0YdS)Ntest_this_does_not_exist.py.rrz6Failed to import test module: test_this_does_not_existmissing error string in %r)rrrrrr#getcwdrr)rcountTestCasesassertNotEqualerrorslen assertTruerSrrZtest_this_does_not_exist)r rrWerrortestrrr .test_discover_with_modules_that_fail_to_imports    z._get_module_from_namerrz(Failed to import test module: my_packager)rrrrrQrrrr)rrrrrrrSrrrrangepickleHIGHEST_PROTOCOLloadsdumps)r rrQrrWrrprotorrr 3test_discover_with_init_modules_that_fail_to_imports0      &zATestDiscovery.test_discover_with_init_modules_that_fail_to_importcCstjjstdt}dd}||_|d|d}|| dt }| ||t |j dttjdD]}tt||q~dS)NSuite cleanup is disabledcSstddSNZ skipperoo)rSkipTestrtrrr rQszeTestDiscovery.test_discover_with_module_that_raises_SkipTest_on_import.._get_module_from_nameztest_skip_dummy.pyrr)r BaseTestSuite_cleanuprrrQrrrr TestResultrunrskippedrrrrr)r rrQrWresultrrrr 8test_discover_with_module_that_raises_SkipTest_on_imports    zFTestDiscovery.test_discover_with_module_that_raises_SkipTest_on_importcstjjstdtddgtdddgi}||gfdd}t}||_|td}| tdt j | | d t}||| t|jd | |jd | dgttjd D]}tt||qdS) Nrrrrrrcs|tddSr)rhrrrtrrr rQ2s zjTestDiscovery.test_discover_with_init_module_that_raises_SkipTest_on_import.._get_module_from_namer)rrrrrrrrQrrrr)rrrrrrZtestsRunrrrrr)r rrQrrWrrrrr =test_discover_with_init_module_that_raises_SkipTest_on_import*s(      zKTestDiscovery.test_discover_with_init_module_that_raises_SkipTest_on_importcCs^t}g}|j|_|ddg||ggg|dd<|gd||ddggdS)N somethingr)rrfoobarrr)rrh _do_discovery parseArgsrr programargsrrr $test_command_line_handling_parseArgsEs z2TestDiscovery.test_command_line_handling_parseArgscCsht}g}|j|_|dg||gg||jd||jd||jd||j ddS)NrrF rrhrrrrZassertIsrrrrrrr .test_command_line_handling_discover_by_defaultQs z.LoadercSs|j|||fdSrrrhr rrCrrrr r|szbTestDiscovery.test_command_line_handling_do_discovery_uses_default_loader..Loader.discoverNr rrrrrrrr LoaderzsrrrrKN) r|__new__r TestProgramZ_initArgParsersrrrrr rrrrr ;test_command_line_handling_do_discovery_uses_default_loadervs   zITestDiscovery.test_command_line_handling_do_discovery_uses_default_loadercCst}Gdddt}|jdg|d||jd||jd||jdgg|_t}|jdg|d||jd||jdgg|_t}|jg|d||jd||jdgg|_t}|jd g|d||jd||jd gg|_t}|jd d g|d||jd||jd gg|_t}|jgd |d||jd||jd gg|_t}|jdd g|d||jd||jd gg|_t}|jdd g|d||jd||jdgg|_t}|jdd g|d||jd||jdg||j||j g|_t}|jgd|d||jd||jd g||jd| |j| |j dS)Nc@seZdZgZddZdS)zRTestDiscovery.test_command_line_handling_do_discovery_calls_loader..LoadercSs|j|||fdSrrrrrr rsz[TestDiscovery.test_command_line_handling_do_discovery_calls_loader..Loader.discoverNrrrrr rsrr)rrrjrz --verbosefish)rrKNeggs)rrN)rrZham-sz-t)rrKr-p)rrN)rrrrrrr) rr|rrrrrZ assertFalserrrrrrr 4test_command_line_handling_do_discovery_calls_loaderst    zBTestDiscovery.test_command_line_handling_do_discovery_calls_loadercsGdddt}|tjd<tjdtjtjjtjjtjj fdd}| |dd}dd }d d }|t_|tj_|tj_tj d krtjjtj_ S) Nc@seZdZdZdS)z0TestDiscovery.setup_module_clash..Modulez bar/foo.pyN)r rrrrrrr rssrsrcs@t_tj_tj_tj_tjd=tjvr.cleanupcSsdgSNfoo.pyrrrrr r$sz1TestDiscovery.setup_module_clash..listdircSsdSr_rrrrr r*sz0TestDiscovery.setup_module_clash..isfilecSsdSr_rrrrr r/sz/TestDiscovery.setup_module_clash..isdirnt) r|rrr#r)rr$r*r/rrPr )r rsrr$r*r/rrr setup_module_clashs$     z TestDiscovery.setup_module_clashcCsj|}t}tjd}tjd}td||f}|jt d||j ddd| t jd|dS)NrrzZ'foo' module incorrectly imported from %r. Expected %r. Is this module globally installed?z^%s$rrr) rrrr#r)rreescapeZassertRaisesRegexrrrr)r rrmod_dir expected_dirmsgrrr test_detect_module_clashs   z&TestDiscovery.test_detect_module_clashcsn|}tjjtjdtjdfdd}||fdd}|tj_t}|jddddS) Nrrcs tj_dSr)r#r)rr)rrr rsz5TestDiscovery.test_module_symlink_ok..cleanupcs$|tjdkr tjdS|Sr)r#r)joinr8)rrrr r sz6TestDiscovery.test_module_symlink_ok..realpathrr) rr#r)rrrPrrr)r rrrrr)rrrr test_module_symlink_oks    z$TestDiscovery.test_module_symlink_okcslt}gtjtjtjjd_dfdd }||_ | d} j |j dS)NFcsd_|Sr_)wasRunrrZ expectedPathr rjrr rTs zBTestDiscovery.test_discovery_from_dotted_path.._find_testsz unittest.test)N)rrr#r)rrrrrrTrrrZ_tests)r rrTrWrrr test_discovery_from_dotted_paths  z-TestDiscovery.test_discovery_from_dotted_pathcst}tjddt_tjjtjjddtj_tjddfdd}||| t }| dWdn1s0Y| t |jddS)NcSsdgS)Nrrrrrr r;)r<zOTestDiscovery.test_discovery_from_dotted_path_builtin_modules..cSsdSr[rrrrr r;,r<cs(tj_tj_t_tjdd<dSr)r#r)r*r/r$rrr/r*r$rrr r.szNTestDiscovery.test_discovery_from_dotted_path_builtin_modules..restorerz2Can not use builtin modules as dotted module names)rrr#r$r)r*r/rrPr TypeErrorrrrr)r rrrrrr /test_discovery_from_dotted_path_builtin_modules$s    ( z=TestDiscovery.test_discovery_from_dotted_path_builtin_modulesc st}tdddg_tjdddgd_fdd}gd fdd }||_t|_ tj d |pt Htjjd|d}Wdn1s0YWdn1s0YWdn1s0Y||d d gdS) Npackagez/az/b)rsubmodule_search_locationscstj|<SrrrZ packagenamerkwargsrrr _importEs zLTestDiscovery.test_discovery_from_dotted_namespace_packages.._importcs||fd|gS)Nz%s/testsrrrrr rTJszPTestDiscovery.test_discovery_from_dotted_namespace_packages.._find_testsbuiltins.__import__z/a/testsz/b/tests)N)rrtypes ModuleType__path__SimpleNamespace__spec__rTrSrRmockpatchr DirsOnSysPathrtest_importlibutiluncacherr)r rr rTrWr)rrr -test_discovery_from_dotted_namespace_packages;s"    dz;TestDiscovery.test_discovery_from_dotted_namespace_packagesc st}tdfdd}tjd|ttj j d\| t }|dWdn1sr0Y|t|jdWdn1s0YWdn1s0YWdn1s0YdS)Nrcstj|<Srrr r rr r ^s z>TestDiscovery.test_discovery_failed_discovery.._importr z$don't know how to discover from {!r})rrrrrrrrrrrrrrrrrrformat)r rr rrr r test_discovery_failed_discoveryZs    ( z-TestDiscovery.test_discovery_failed_discoveryN)r rrr!rYr\rrrrrrrrrrrrrrrrrrrrrrrrrrrr rs6 3(JGX.-      J#r__main__)Zos.pathr#rrrrrrrZtest.test_importlib.utilrZ unittest.mockZ unittest.testrrZTestCaserr mainrrrr s(   Y