HEX
Server: Apache
System: Linux zacp120.webway.host 4.18.0-553.50.1.lve.el8.x86_64 #1 SMP Thu Apr 17 19:10:24 UTC 2025 x86_64
User: govancoz (1003)
PHP: 8.3.26
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: //usr/local/lib/python3.10/unittest/test/__pycache__/test_discovery.cpython-310.opt-1.pyc
o

�i��@s�ddlZddlmZddlZddlZddlZddlZddlmZddl	m
Z
ddlZddlZddl
ZddlZGdd�dej�ZGdd�dej�Zed	krRe��dSdS)
�N)�abspath)�support)�
import_helperc@s<eZdZdZdZdZZZZdZ	dZ
dZZdd�Z
dS)�TestableTestProgramNT��cCsdS�N���selfr	r	�9/usr/local/lib/python3.10/unittest/test/test_discovery.py�__init__�zTestableTestProgram.__init__)�__name__�
__module__�__qualname__�module�exitZdefaultTest�failfast�
catchbreak�buffer�	verbosityZprogNameZ
testRunner�
testLoaderr
r	r	r	rrsrc@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3d4�Zd5d6�Zd7S)8�
TestDiscoverycCs*t��}d|_|�d�}|�|d�	dS)N�/fooz/foo/bar/baz.pyzbar.baz)�unittest�
TestLoader�_top_level_dirZ_get_name_from_path�assertEqual�assertRaises�AssertionError)r�loader�namer	r	r�test_get_name_from_paths
z%TestDiscovery.test_get_name_from_pathcs t��}tj��fdd�}tjj��fdd�}tjj��fdd�}gd�dd	gg��fd
d�t_|�|�dd
�}|tj_|�|�dd�}|tj_|�|�dd�|_|j	�d�fdd�	}||_	dd�|_
tj�d�}||_t
|�|d��}	dd�dD�}
|
�dd�dD��|�|	|
�dS)Nc�
�t_dSr��os�listdirr	��original_listdirr	r�restore_listdir0�
z6TestDiscovery.test_find_tests.<locals>.restore_listdirc��tj_dSr�r&�path�isfiler	��original_isfiler	r�restore_isfile3�z5TestDiscovery.test_find_tests.<locals>.restore_isfilecr,r�r&r.�isdirr	��original_isdirr	r�
restore_isdir6r3z4TestDiscovery.test_find_tests.<locals>.restore_isdir)ztest2.pyztest1.pyz
not_a_test.py�test_dirztest.fooztest-not-a-module.py�another_dirztest4.pyztest3.pyc�
��d�S�Nr��pop�r.��
path_listsr	r�<lambda><�
z/TestDiscovery.test_find_tests.<locals>.<lambda>cS�
|�d�S)N�dir��endswithr?r	r	rr5?r+z,TestDiscovery.test_find_tests.<locals>.isdircSs|�d�o	d|vS)NrEr:rFr?r	r	rr/Dsz-TestDiscovery.test_find_tests.<locals>.isfilecS�|dS�Nz moduler	r?r	r	rrBJ�c��||d�}||dgS�N��patternz testsr	�rrN�base��orig_load_testsr	r�loadTestsFromModuleL�z:TestDiscovery.test_find_tests.<locals>.loadTestsFromModulecS�|Srr	��thingr	r	rrBQ�r�test*.pycSsg|]}|dg�qS)�
 module testsr	��.0r"r	r	r�
<listcomp>Ysz1TestDiscovery.test_find_tests.<locals>.<listcomp>)Ztest1Ztest2r9cSsg|]	}d|dg�qS)ztest_dir.%srZr	r[r	r	rr][s)Ztest3Ztest4r)rrr&r'r.r/r5�
addCleanup�_get_module_from_namerS�
suiteClassrr�list�_find_tests�extendr)rr!r*r2r8r5r/rS�	top_level�suiteZexpectedr	�rRr7r1r)rAr�test_find_tests,sB�




�
�zTestDiscovery.test_find_testscs�t��}tj��fdd�}tjj��fdd�}tjj��fdd�}dgg��fdd	�t_|�|�d
d	�tj_|�|�dd	�tj_|�|�dd	�|_|j	�d�fd
d�	}||_	dd	�|_
tj�d�}||_t
|�|d��}|�|g�dS)Ncr$rr%r	r(r	rr*er+z=TestDiscovery.test_find_tests_socket.<locals>.restore_listdircr,rr-r	r0r	rr2hr3z<TestDiscovery.test_find_tests_socket.<locals>.restore_isfilecr,rr4r	r6r	rr8kr3z;TestDiscovery.test_find_tests_socket.<locals>.restore_isdir�socketcr;r<r=r?r@r	rrBorCz6TestDiscovery.test_find_tests_socket.<locals>.<lambda>cS�dS�NFr	r?r	r	rrBrrXcSrirjr	r?r	r	rrBurXcSrHrIr	r?r	r	rrBxrJcrKrLr	rOrQr	rrSzrTzATestDiscovery.test_find_tests_socket.<locals>.loadTestsFromModulecSrUrr	rVr	r	rrBrXrrYr)rrr&r'r.r/r5r^r_rSr`rrrarbr)rr!r*r2r8rSrdrer	rfr�test_find_tests_socket_s.




z$TestDiscovery.test_find_tests_socketc�<t��}tj��fdd�}tjj��fdd�}tjj��fdd�}gd���gggg��fdd	�t_|�|�d
d	�tj_|�|��fdd	�tj_|�|�Gdd
�d
t���fdd	�|_	|j
�d�fdd�	}||_
dd	�|_d|_t
|�dd��}|�|dgddgdgg�|��jgd��|��j|gdfg�dS)Ncr$rr%r	r(r	rr*�r+zCTestDiscovery.test_find_tests_with_package.<locals>.restore_listdircr,rr-r	r0r	rr2�r3zBTestDiscovery.test_find_tests_with_package.<locals>.restore_isfilecr,rr4r	r6r	rr8�r3zATestDiscovery.test_find_tests_with_package.<locals>.restore_isdir�Za_directory�test_directoryZtest_directory2cr;r<r=r?r@r	rrB�rCz<TestDiscovery.test_find_tests_with_package.<locals>.<lambda>cSri�NTr	r?r	r	rrB�rXc�tj�|��vSr�r&r.�basenamer?��directoriesr	rrB��c@�$eZdZgZgZdd�Zdd�ZdS)z:TestDiscovery.test_find_tests_with_package.<locals>.Modulec�<|�_�j�|�tj�|�dkr�fdd�}|�_dSdS)Nrnc��j�|||f��jdgS�N� load_tests��load_tests_args�appendr.�r!�testsrNr
r	r�
load_tests��zWTestDiscovery.test_find_tests_with_package.<locals>.Module.__init__.<locals>.load_tests�r.�pathsr}r&rrr��rr.r�r	r
rr
��
�zCTestDiscovery.test_find_tests_with_package.<locals>.Module.__init__cS�|j|jkSrr?�r�otherr	r	r�__eq__�r3zATestDiscovery.test_find_tests_with_package.<locals>.Module.__eq__N�rrrr�r|r
r�r	r	r	r�Module��
	r�c��|�Srr	�r"�r�r	rrB�rJc��||d�}||jdgS�NrMrZr?rOrQr	rrS��zGTestDiscovery.test_find_tests_with_package.<locals>.loadTestsFromModulecSrUrr	rVr	r	rrB�rXrztest*�a_directory module tests�test_directory load_tests�test_directory module tests�test_directory2 module testsr�rrr&r'r.r/r5r^�objectr_rSr`rrarbrr�r|�rr!r*r2r8rSrer	�r�rtrRr7r1r)rAr�test_find_tests_with_package�sJ



����
�z*TestDiscovery.test_find_tests_with_packagecrl)Ncr$rr%r	r(r	rr*�r+zWTestDiscovery.test_find_tests_default_calls_package_load_tests.<locals>.restore_listdircr,rr-r	r0r	rr2�r3zVTestDiscovery.test_find_tests_default_calls_package_load_tests.<locals>.restore_isfilecr,rr4r	r6r	rr8�r3zUTestDiscovery.test_find_tests_default_calls_package_load_tests.<locals>.restore_isdirrmcr;r<r=r?r@r	rrB�rCzPTestDiscovery.test_find_tests_default_calls_package_load_tests.<locals>.<lambda>cSriror	r?r	r	rrB�rXcrprrqr?rsr	rrB�ruc@rv)zNTestDiscovery.test_find_tests_default_calls_package_load_tests.<locals>.Modulecrw)Nrncrxryr{r~r
r	rr��r�zkTestDiscovery.test_find_tests_default_calls_package_load_tests.<locals>.Module.__init__.<locals>.load_testsr�r�r	r
rr
�r�zWTestDiscovery.test_find_tests_default_calls_package_load_tests.<locals>.Module.__init__cSr�rr?r�r	r	rr��r3zUTestDiscovery.test_find_tests_default_calls_package_load_tests.<locals>.Module.__eq__Nr�r	r	r	rr��r�r�cr�rr	r�r�r	rrB�rJcr�r�r?rOrQr	rrS�r�z[TestDiscovery.test_find_tests_default_calls_package_load_tests.<locals>.loadTestsFromModulecSrUrr	rVr	r	rrBrXrrYr�r�r�r�rr�r�r	r�r�0test_find_tests_default_calls_package_load_tests�sJ



����
�z>TestDiscovery.test_find_tests_default_calls_package_load_testscsHtj��fdd�}|�|�tjj��fdd�}|�|�tjj��fdd�}|�|�|�tjjtd��td�dgtd	�d
dgi��fdd
�}|t_dd�tj_dd�tj_Gdd�dt	��t
��}�fdd�|_dd�|_
td�|_t|�td�d��}|�|dgdggg�|��jddg�|��j|gdf|gdfg�dS)Ncr$rr%r	r(r	rr*r+zTTestDiscovery.test_find_tests_customize_via_package_pattern.<locals>.restore_listdircr,rr-r	r0r	rr2"r3zSTestDiscovery.test_find_tests_customize_via_package_pattern.<locals>.restore_isfilecr,rr4r	r6r	rr8&r3zRTestDiscovery.test_find_tests_customize_via_package_pattern.<locals>.restore_isdirr�
my_package�/foo/my_package�__init__.py�test_module.pyc�t�|�Sr�rar?��vfsr	r�list_dir8r3zMTestDiscovery.test_find_tests_customize_via_package_pattern.<locals>.list_dircS�|�d�S�Nz.pyrFr?r	r	rrB;�zMTestDiscovery.test_find_tests_customize_via_package_pattern.<locals>.<lambda>cSrDr�rFr?r	r	rrB<rCc@rv)zKTestDiscovery.test_find_tests_customize_via_package_pattern.<locals>.Modulecs@|�_�j�|�|�d�r�fdd�}n�fdd�}|�_dS)NZtest_modulecrxryr{r~r
r	rr�Fr�zhTestDiscovery.test_find_tests_customize_via_package_pattern.<locals>.Module.__init__.<locals>.load_testscsB�j�|||f�d}tj�|�}|j||d�}�jd|g|S)Nz/foo/my_package/__init__.py��	start_dirrNrz)r|r}r&r.�dirname�discover)r!rrN�__file__Zthis_dirZ	pkg_testsr
r	rr�Js��)r.r�r}rGr�r�r	r
rr
Bs

	zTTestDiscovery.test_find_tests_customize_via_package_pattern.<locals>.Module.__init__cSr�rr?r�r	r	rr�Ur3zRTestDiscovery.test_find_tests_customize_via_package_pattern.<locals>.Module.__eq__Nr�r	r	r	rr�>s
r�cr�rr	r�r�r	rrBYrJcSrUrr	rVr	r	rrBZrXrYzmy_package load_testsz!my_package.test_module load_testszmy_package.test_module)r&r'r^r.r/r5�sys�removerr�rrr_r`rrarbrr�r|)rr*r2r8r�r!rer	)r�r7r1r)r�r�-test_find_tests_customize_via_package_patternsH




�

�����z;TestDiscovery.test_find_tests_customize_via_package_patternc
svt��}tjj�tjj��fdd�}dd�tj_|�|�tjdd���fdd�}|�|�tj�tj�	d��}|�
t��|jddd	�Wd�n1sPwY|�
|j|�|�|tj�d
d�tj_dd�tj_�fdd
�}|�|�g�d�fdd�	}||_t|_|�ddd�}tj�d�}tj�d�}	|�
|d�|�
|j|�|�
�|	dfg�|�|tj�dS)Ncr,rr-r	r0r	rr2ur3z3TestDiscovery.test_discover.<locals>.restore_isfilecSrirjr	r?r	r	rrBxrXz-TestDiscovery.test_discover.<locals>.<lambda>cs�tjdd�<dSr)r�r.r	)�
orig_sys_pathr	r�restore_path|sz1TestDiscovery.test_discover.<locals>.restore_pathrz/foo/bar��
top_level_dircSriror	r?r	r	rrB�rXcSriror	r?r	r	rrB�rXcr,rr4r	r6r	rr8�r3z2TestDiscovery.test_discover.<locals>.restore_isdircs��||f�dgS�Nr�r}�r�rN�	namespace��_find_tests_argsr	rrb�sz0TestDiscovery.test_discover.<locals>._find_testsz/foo/bar/bazrNz	['tests']r)rrr&r.r/r5r^r�r�normpathr�ImportErrorr�rr�assertInrb�strr`)
rr!r2r��	full_pathr8rbrer�r�r	)r�r�r7r1r�
test_discoverps<

�
zTestDiscovery.test_discovercs�td�dgtd�dgi��fdd�}|�ttdtj�|t_|�ttjdtjj�d	d
�tj_|�ttjdtjj�dd
�tj_|�tjj	td��Gd
d�dt
��t��}�fdd
�|_
dd
�|_|jddd�}|�|dgg�dS)Nz	/toplevelZstartdirz/toplevel/startdirr�cr�rr�r?r�r	rr��r3z[TestDiscovery.test_discover_start_dir_is_package_calls_package_load_tests.<locals>.list_dirr'r/cSrDr�rFr?r	r	rrB�rCz[TestDiscovery.test_discover_start_dir_is_package_calls_package_load_tests.<locals>.<lambda>r5cSr�r�rFr?r	r	rrB�r�c@s,eZdZgZgZdd�Zdd�Zdd�ZdS)zYTestDiscovery.test_discover_start_dir_is_package_calls_package_load_tests.<locals>.ModulecSs
||_dSrr?)rr.r	r	rr
�r+zbTestDiscovery.test_discover_start_dir_is_package_calls_package_load_tests.<locals>.Module.__init__cSsd|jgS)Nzload_tests called r?)rr!rrNr	r	rr��r3zdTestDiscovery.test_discover_start_dir_is_package_calls_package_load_tests.<locals>.Module.load_testscSr�rr?r�r	r	rr��r3z`TestDiscovery.test_discover_start_dir_is_package_calls_package_load_tests.<locals>.Module.__eq__N)rrrr�r|r
r�r�r	r	r	rr��sr�cr�rr	r�r�r	rrB�rJcSrUrr	rVr	r	rrB�rXr�zload_tests called startdir)rr^�setattrr&r'r.r/r5r�r�r�rrr_r`r�r)rr�r!rer	)r�r�r�;test_discover_start_dir_is_package_calls_package_load_tests�s&
	
�

�zITestDiscovery.test_discover_start_dir_is_package_calls_package_load_testscsTtj��fdd�t_tjj�dd�tj_tjdd�����fdd�}|�|�dS)Ncs�gSrr	��_)�fakefiler	rrB��z8TestDiscovery.setup_import_issue_tests.<locals>.<lambda>cSriror	r�r	r	rrB�rXcs �tj_�t_�tjdd�<dSr)r&r.r/r'r�r	)r/r'r�r	r�restore�sz7TestDiscovery.setup_import_issue_tests.<locals>.restore)r&r'r.r/r�r^)rr�r�r	)r�r/r'r�r�setup_import_issue_tests�sz&TestDiscovery.setup_import_issue_testscs�|�ttdtj�|�ttjdtjj�|�ttjdtjj�|�tjjt	d�t
tj���fdd�}|t_dd�tj_dd�tj_dS)	Nr'r/r5cr�rr�r?r�r	rr��r3z@TestDiscovery.setup_import_issue_package_tests.<locals>.list_dircSr�r�rFr?r	r	rrB�r�z@TestDiscovery.setup_import_issue_package_tests.<locals>.<lambda>cSrDr�rFr?r	r	rrB�rC)r^r�r&r'r.r/r5r��__setitem__�slicera)rr�r�r	r�r� setup_import_issue_package_tests�sz.TestDiscovery.setup_import_issue_package_testscCs�t��}|�d�|�d�}|�t��tj�|�	|�
�d�|�g|j�|�	dt
|j��|jd}|�d|vd|�tt|�d�d}|�t��
|��Wd�dS1s]wYdS)N�test_this_does_not_exist.py�.rrz6Failed to import test module: test_this_does_not_exist�missing error string in %r)rrr�r�r�r&�getcwdr�r.r�countTestCases�assertNotEqual�errors�len�
assertTruerarr�Ztest_this_does_not_exist)rr!re�error�testr	r	r�.test_discover_with_modules_that_fail_to_import�s 


�
"�z<TestDiscovery.test_discover_with_modules_that_fail_to_importcs.td�dgtd�ddgi}|�|�g��fdd�}t��}||_|�td��}|�td�tj�|�	|�
�d�|�g|j�|�	dt
|j��|jd	}|�d
|vd|�tt|�d	�d	}|�t��|��Wd�n1svwY|�	�dg�ttjd�D]}t�t�||��q�dS)Nrr�r�r�r�cs��|�td��)NzCannot import Name)r}r�r��Zimport_callsr	rr_�s
z`TestDiscovery.test_discover_with_init_modules_that_fail_to_import.<locals>._get_module_from_namerrz(Failed to import test module: my_packager�)rr�rrr_r�r�r�r.rr�r�r�r�r�rarr�r��range�pickle�HIGHEST_PROTOCOL�loads�dumps)rr�r_r!rer�r��protor	r�r�3test_discover_with_init_modules_that_fail_to_import�s4
�

�
��zATestDiscovery.test_discover_with_init_modules_that_fail_to_importcCs�tjjs	t�d��t��}dd�}||_|�d�|�d�}|�|�	�d�t�
�}|�|�|�t|j
�d�ttjd�D]}t�t�||��q?dS)N�Suite cleanup is disabledcSs
t�d���NZ	skipperoo)r�SkipTestr�r	r	rr_r+zeTestDiscovery.test_discover_with_module_that_raises_SkipTest_on_import.<locals>._get_module_from_nameztest_skip_dummy.pyr�r)r�
BaseTestSuite�_cleanupr�rr_r�r�rr��
TestResult�runr��skippedr�r�r�r�r�)rr!r_re�resultr�r	r	r�8test_discover_with_module_that_raises_SkipTest_on_imports



�zFTestDiscovery.test_discover_with_module_that_raises_SkipTest_on_importcs�tjjs	t�d��td�dgtd�ddgi}|�|�g��fdd�}t��}||_|�td��}|�	td�t
j�|�|�
�d	�t��}|�|�|�t|j�d	�|�|jd	�|��dg�ttjd	�D]}t�t�||��qidS)
Nr�rr�r�r�r�cs��|�t�d��r�)r}rr�r�r�r	rr_3s

zjTestDiscovery.test_discover_with_init_module_that_raises_SkipTest_on_import.<locals>._get_module_from_namer)rr�r�r�rr�rr_r�r�r�r.rr�r�r�r�r�ZtestsRunr�r�r�r�r�)rr�r_r!rer�r�r	r�r�=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�|�|gg�g|dd�<|�gd��|�|ddgg�dS)N�	somethingr�)r�r��foo�barr�r�)rr}�
_do_discovery�	parseArgsr�r�program�argsr	r	r�$test_command_line_handling_parseArgsFsz2TestDiscovery.test_command_line_handling_parseArgscCsht�}g}|j|_|�dg�|�|gg�|�|jd�|�|jd�|�|jd�|�|j	d�dS)Nr�rF�
rr}r�r�rrZassertIsrrrr�r	r	r�.test_command_line_handling_discover_by_defaultRsz<TestDiscovery.test_command_line_handling_discover_by_defaultcCsjt�}g}|j|_|�gd��|�|gg�|�|jd�|�|jd�|�|jd�|�|j	d�dS)N)r��-vz-br��-c�-f�Tr�r�r	r	r�;test_command_line_handling_discover_by_default_with_options^szITestDiscovery.test_command_line_handling_discover_by_default_with_optionsc	Cs�t�}d|_t���$}|�t��}|�gd��Wd�n1s"wYWd�n1s1wY|�|jj	d�|�
d|���dS)N)ZoneZtwoZthreeZfour)r�zusage:)rrrZcaptured_stderrr�
SystemExitr�r�	exceptionr�r��getvalue)rr��stderr�cmr	r	r�:test_command_line_handling_do_discovery_too_many_argumentsks
���zHTestDiscovery.test_command_line_handling_do_discovery_too_many_argumentscCsLt�tj�}|��Gdd�dt�}|�|_|�dg�|�|jdg�dS)Nc@�eZdZgZdd�ZdS)zYTestDiscovery.test_command_line_handling_do_discovery_uses_default_loader.<locals>.LoadercS�|j�|||f�dSr��r�r}�rr�rNr�r	r	rr�}�zbTestDiscovery.test_command_line_handling_do_discovery_uses_default_loader.<locals>.Loader.discoverN�rrrr�r�r	r	r	r�Loader{�rr��r�rYN)	r��__new__r�TestProgramZ_initArgParsersrr�rr��rr�rr	r	r�;test_command_line_handling_do_discovery_uses_default_loaderwszITestDiscovery.test_command_line_handling_do_discovery_uses_default_loadercCs�t�}Gdd�dt�}|jdg|d�|�|jd�|�|jd�|�|jdg�g|_t�}|jdg|d�|�|jd�|�|jdg�g|_t�}|jg|d�|�|jd�|�|jdg�g|_t�}|jd	g|d�|�|jd�|�|jd
g�g|_t�}|jd	dg|d�|�|jd�|�|jdg�g|_t�}|jgd
�|d�|�|jd�|�|jd
g�g|_t�}|jdd	g|d�|�|jd�|�|jd
g�g|_t�}|jdd	g|d�|�|jd�|�|jdg�g|_t�}|jdd	g|d�|�|jd�|�|jdg�|�|j�|�|j	�g|_t�}|jgd�|d�|�|jd�|�|jdg�|�|jd�|�
|j�|�
|j	�dS)Nc@r)zRTestDiscovery.test_command_line_handling_do_discovery_calls_loader.<locals>.LoadercSrr�rrr	r	rr��rz[TestDiscovery.test_command_line_handling_do_discovery_calls_loader.<locals>.Loader.discoverNrr	r	r	rr�rrr�)rr�rr	z	--verbose�fish)rrYN�eggs)rrN)rrZham�-sz-t)r�rYr�-p)r�rN)rrrrr�r�r�)rr�r�rrr�r�ZassertFalserrr�rr	r	r�4test_command_line_handling_do_discovery_calls_loader�st
�zBTestDiscovery.test_command_line_handling_do_discovery_calls_loadercs�Gdd�dt�}|tjd<tj�d��tj�tjj�tjj�tjj	������fdd�}|�
|�dd�}dd	�}d
d�}|t_|tj_|tj_tjdkrStjjtj_	�S)
Nc@seZdZdZdS)z0TestDiscovery.setup_module_clash.<locals>.Modulez
bar/foo.pyN)rrrr�r	r	r	rr��sr�r�csD�t_�tj_�tj_�tj_tjd=�tjvr tj���dSdS)Nr�)	r&r'r.r/r5�realpathr��modulesr�r	�r�r7r1r)�original_realpathr	r�cleanup�s
�z1TestDiscovery.setup_module_clash.<locals>.cleanupcS�dgS�N�foo.pyr	r�r	r	rr'�sz1TestDiscovery.setup_module_clash.<locals>.listdircSriror	r�r	r	rr/�rz0TestDiscovery.setup_module_clash.<locals>.isfilecSriror	r�r	r	rr5�rz/TestDiscovery.setup_module_clash.<locals>.isdir�nt)r�r�rr&r.rr'r/r5rr^r")rr�rr'r/r5r	rr�setup_module_clash�s$


z TestDiscovery.setup_module_clashcCsj|��}t��}tj�d�}tj�d�}t�d||f�}|jt	d||j
ddd�|�tjd|�dS)Nr�r�zZ'foo' module incorrectly imported from %r. Expected %r. Is this module globally installed?z^%s$rr�r)
rrrr&r.r�re�escapeZassertRaisesRegexr�r�rr�)rr�r!�mod_dir�expected_dir�msgr	r	r�test_detect_module_clash�s��z&TestDiscovery.test_detect_module_clashcsn|��}tjj�tj�d��tj�d���fdd�}|�|���fdd�}|tj_t��}|jddd�dS)	Nr�r�cr,r)r&r.rr	)rr	rrr3z5TestDiscovery.test_module_symlink_ok.<locals>.cleanupcs$|tj��d�krtj��d�S|Sr)r&r.�joinr?)r rr	rrsz6TestDiscovery.test_module_symlink_ok.<locals>.realpathrr�)	rr&r.rrr^rrr�)rr�rrr!r	)r rrr�test_module_symlink_oks
z$TestDiscovery.test_module_symlink_okcslt��}�g�tj�tj�tjj���d�_d���fdd�	}||_	|�
d�}���j���|j
��dS)NFcsd�_��|���Sro)�wasRunrr��ZexpectedPathrrr	rrbszBTestDiscovery.test_discovery_from_dotted_path.<locals>._find_testsz
unittest.testr)rrr&r.rr�r�r�r%rbr�r�rZ_tests)rr!rbrer	r&r�test_discovery_from_dotted_paths
z-TestDiscovery.test_discovery_from_dotted_pathcs�t��}tj�dd�t_tjj�tjj�dd�tj_tjdd������fdd�}|�|�|�	t
��
}|�d�Wd�n1sDwY|�t
|j�d�dS)NcSr)Nr�r	r�r	r	rrB*r�zOTestDiscovery.test_discovery_from_dotted_path_builtin_modules.<locals>.<lambda>cSrirjr	r�r	r	rrB-rXcs(�tj_�tj_�t_�tjdd�<dSr)r&r.r/r5r'r�r	�r5r/r'r�r	rr�/szNTestDiscovery.test_discovery_from_dotted_path_builtin_modules.<locals>.restorer�z2Can not use builtin modules as dotted module names)rrr&r'r.r/r5r�r^r�	TypeErrorr�rr�r�)rr!r�r�r	r(r�/test_discovery_from_dotted_path_builtin_modules%s

��z=TestDiscovery.test_discovery_from_dotted_path_builtin_modulesc
s�t��}t�d��ddg�_tjdddgd��_�fdd�}g�d�fdd�	}||_t|_	tj
�d	|��8t�
��$tjj�d��
|�d�}Wd�n1sQwYWd�n1s`wYWd�n1sowY|�|d
dg�dS)
N�packagez/az/b)r!�submodule_search_locationsc��tj|<�Sr�r�r�Zpackagenamer��kwargs�r+r	r�_importF�
zLTestDiscovery.test_discovery_from_dotted_namespace_packages.<locals>._importcs��||f�d|gS)Nz%s/testsr�r�r�r	rrbKs
zPTestDiscovery.test_discovery_from_dotted_namespace_packages.<locals>._find_tests�builtins.__import__z/a/testsz/b/testsr)rr�types�
ModuleType�__path__�SimpleNamespace�__spec__rbrar`�mock�patchr�
DirsOnSysPathr��test_importlib�util�uncacher�r)rr!r2rbrer	)r�r+r�-test_discovery_from_dotted_namespace_packages<s,

�
�����z;TestDiscovery.test_discovery_from_dotted_namespace_packagescst��}t�d���fdd�}tj�d|��bt���Etj	j
�d��.|�t
��
}|�d�Wd�n1s9wY|�t|j�d����Wd�n1sTwYWd�n1scwYWd�dSWd�dS1s{wYdS)Nr+cr-rr.r/r1r	rr2_r3z>TestDiscovery.test_discovery_failed_discovery.<locals>._importr4z$don't know how to discover from {!r})rrr5r6r:r;rr<r�r=r>r?rr)r�rr�r��format)rr!r2r�r	r1r�test_discovery_failed_discovery[s&

������"�z-TestDiscovery.test_discovery_failed_discoveryN)rrrr#rgrkr�r�r�r�r�r�r�r�r�r�r�r�r�r�rr
rrr"r$r'r*r@rBr	r	r	rrs8
3(JGX.-
J#r�__main__)Zos.pathr&rrr�r5r�r�rZtest.supportrZtest.test_importlib.utilrZ
unittest.mockZ
unittest.testrrZTestCaserr�mainr	r	r	r�<module>s.Y�