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.7/unittest/test/__pycache__/test_discovery.cpython-37.opt-1.pyc
B

"��g���@s�ddlZddlmZddlZddlZddlZddlZddlmZddl	Zddl
Z
ddlZ
ddlZ
Gdd�de
j
�ZGdd�de
j�Zedkr�e
��dS)	�N)�abspath)�supportc@s<eZdZdZdZdZZZZdZ	dZ
dZZdd�Z
dS)�TestableTestProgramNT��cCsdS)N�)�selfrr�8/usr/local/lib/python3.7/unittest/test/test_discovery.py�__init__szTestableTestProgram.__init__)�__name__�
__module__�__qualname__�module�exitZdefaultTest�failfast�
catchbreak�buffer�	verbosityZprogNameZ
testRunner�
testLoaderr
rrrr	rsrc@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�
TestDiscoverycCs2t��}d|_|�d�}|�|d�dSQRXdS)Nz/fooz/foo/bar/baz.pyzbar.bazz/bar/baz.py)�unittest�
TestLoader�_top_level_dirZ_get_name_from_path�assertEqual�assertRaises�AssertionError)r�loader�namerrr	�test_get_name_from_paths
z%TestDiscovery.test_get_name_from_pathcs*t��}tj��fdd�}tjj��fdd�}tjj��fdd�}ddd	d
ddd
gddgg��fdd�t_|�|�dd�}|tj_|�|�dd�}|tj_|�|�dd�|_|j	�d!�fdd�	}||_	dd�|_
tj�d�}||_t
|�|d��}	dd�dD�}
|
�dd�d D��|�|	|
�dS)"Ncs
�t_dS)N)�os�listdirr)�original_listdirrr	�restore_listdir/sz6TestDiscovery.test_find_tests.<locals>.restore_listdircs�tj_dS)N)r�path�isfiler)�original_isfilerr	�restore_isfile2sz5TestDiscovery.test_find_tests.<locals>.restore_isfilecs�tj_dS)N)rr#�isdirr)�original_isdirrr	�
restore_isdir5sz4TestDiscovery.test_find_tests.<locals>.restore_isdirztest2.pyztest1.pyz
not_a_test.py�test_dirztest.fooztest-not-a-module.py�another_dirztest4.pyztest3.pycs
��d�S)Nr)�pop)r#)�
path_listsrr	�<lambda>;�z/TestDiscovery.test_find_tests.<locals>.<lambda>cSs
|�d�S)N�dir)�endswith)r#rrr	r'>sz,TestDiscovery.test_find_tests.<locals>.isdircSs|�d�od|kS)Nr0r+)r1)r#rrr	r$Csz-TestDiscovery.test_find_tests.<locals>.isfilecSs|dS)Nz moduler)r#rrr	r.Ir/cs�||d�}||dgS)N)�patternz testsr)rr2�base)�orig_load_testsrr	�loadTestsFromModuleKsz:TestDiscovery.test_find_tests.<locals>.loadTestsFromModulecSs|S)Nr)�thingrrr	r.Pr/z/fooztest*.pycSsg|]}|dg�qS)z
 module testsr)�.0rrrr	�
<listcomp>Xsz1TestDiscovery.test_find_tests.<locals>.<listcomp>)Ztest1Ztest2r*cSsg|]}d|dg�qS)ztest_dir.%sz
 module testsr)r7rrrr	r8Zs)Ztest3Ztest4)N)rrrr r#r$r'�
addCleanup�_get_module_from_namer5�
suiteClassrr�list�_find_tests�extendr)rrr"r&r)r'r$r5�	top_level�suiteZexpectedr)r4r(r%r!r-r	�test_find_tests+s>







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)Ncs
�t_dS)N)rr r)r!rr	r"dsz=TestDiscovery.test_find_tests_socket.<locals>.restore_listdircs�tj_dS)N)rr#r$r)r%rr	r&gsz<TestDiscovery.test_find_tests_socket.<locals>.restore_isfilecs�tj_dS)N)rr#r'r)r(rr	r)jsz;TestDiscovery.test_find_tests_socket.<locals>.restore_isdirZsocketcs
��d�S)Nr)r,)r#)r-rr	r.nr/z6TestDiscovery.test_find_tests_socket.<locals>.<lambda>cSsdS)NFr)r#rrr	r.qr/cSsdS)NFr)r#rrr	r.tr/cSs|dS)Nz moduler)r#rrr	r.wr/cs�||d�}||dgS)N)r2z testsr)rr2r3)r4rr	r5yszATestDiscovery.test_find_tests_socket.<locals>.loadTestsFromModulecSs|S)Nr)r6rrr	r.~r/z/fooztest*.py)N)rrrr r#r$r'r9r:r5r;rrr<r=r)rrr"r&r)r5r?r@r)r4r(r%r!r-r	�test_find_tests_socket^s.




z$TestDiscovery.test_find_tests_socketcs@t��}tj��fdd�}tjj��fdd�}tjj��fdd�}ddd	g��gggg��fd
d�t_|�|�dd�tj_|�|��fd
d�tj_|�|�Gdd�dt���fdd�|_	|j
�d�fdd�	}||_
dd�|_d|_t
|�dd��}|�|dgddgdgg�|��jddd	g�|��j|gdfg�dS)Ncs
�t_dS)N)rr r)r!rr	r"�szCTestDiscovery.test_find_tests_with_package.<locals>.restore_listdircs�tj_dS)N)rr#r$r)r%rr	r&�szBTestDiscovery.test_find_tests_with_package.<locals>.restore_isfilecs�tj_dS)N)rr#r'r)r(rr	r)�szATestDiscovery.test_find_tests_with_package.<locals>.restore_isdir�a_directory�test_directory�test_directory2cs
��d�S)Nr)r,)r#)r-rr	r.�r/z<TestDiscovery.test_find_tests_with_package.<locals>.<lambda>cSsdS)NTr)r#rrr	r.�r/cstj�|��kS)N)rr#�basename)r#)�directoriesrr	r.�r/c@s$eZdZgZgZdd�Zdd�ZdS)z:TestDiscovery.test_find_tests_with_package.<locals>.Modulecs8|�_�j�|�tj�|�dkr4�fdd�}|�_dS)NrDcs�j�|||f��jdgS)Nz load_tests)�load_tests_args�appendr#)r�testsr2)rrr	�
load_tests�szWTestDiscovery.test_find_tests_with_package.<locals>.Module.__init__.<locals>.load_tests)r#�pathsrIrrFrK)rr#rKr)rr	r
�s
zCTestDiscovery.test_find_tests_with_package.<locals>.Module.__init__cSs|j|jkS)N)r#)r�otherrrr	�__eq__�szATestDiscovery.test_find_tests_with_package.<locals>.Module.__eq__N)rrr
rLrHr
rNrrrr	�Module�s	rOcs�|�S)Nr)r)rOrr	r.�r/cs�||d�}||jdgS)N)r2z
 module tests)r#)rr2r3)r4rr	r5�szGTestDiscovery.test_find_tests_with_package.<locals>.loadTestsFromModulecSs|S)Nr)r6rrr	r.�r/z/fooztest*za_directory module testsztest_directory load_testsztest_directory module testsztest_directory2 module tests)N)rrrr r#r$r'r9�objectr:r5r;rr<r=rrLrH)rrr"r&r)r5r@r)rOrGr4r(r%r!r-r	�test_find_tests_with_package�s@





z*TestDiscovery.test_find_tests_with_packagecs@t��}tj��fdd�}tjj��fdd�}tjj��fdd�}ddd	g��gggg��fd
d�t_|�|�dd�tj_|�|��fd
d�tj_|�|�Gdd�dt���fdd�|_	|j
�d�fdd�	}||_
dd�|_d|_t
|�dd��}|�|dgddgdgg�|��jddd	g�|��j|gdfg�dS)Ncs
�t_dS)N)rr r)r!rr	r"�szWTestDiscovery.test_find_tests_default_calls_package_load_tests.<locals>.restore_listdircs�tj_dS)N)rr#r$r)r%rr	r&�szVTestDiscovery.test_find_tests_default_calls_package_load_tests.<locals>.restore_isfilecs�tj_dS)N)rr#r'r)r(rr	r)�szUTestDiscovery.test_find_tests_default_calls_package_load_tests.<locals>.restore_isdirrCrDrEcs
��d�S)Nr)r,)r#)r-rr	r.�r/zPTestDiscovery.test_find_tests_default_calls_package_load_tests.<locals>.<lambda>cSsdS)NTr)r#rrr	r.�r/cstj�|��kS)N)rr#rF)r#)rGrr	r.�r/c@s$eZdZgZgZdd�Zdd�ZdS)zNTestDiscovery.test_find_tests_default_calls_package_load_tests.<locals>.Modulecs8|�_�j�|�tj�|�dkr4�fdd�}|�_dS)NrDcs�j�|||f��jdgS)Nz load_tests)rHrIr#)rrJr2)rrr	rK�szkTestDiscovery.test_find_tests_default_calls_package_load_tests.<locals>.Module.__init__.<locals>.load_tests)r#rLrIrrFrK)rr#rKr)rr	r
�s
zWTestDiscovery.test_find_tests_default_calls_package_load_tests.<locals>.Module.__init__cSs|j|jkS)N)r#)rrMrrr	rN�szUTestDiscovery.test_find_tests_default_calls_package_load_tests.<locals>.Module.__eq__N)rrr
rLrHr
rNrrrr	rO�s	rOcs�|�S)Nr)r)rOrr	r.�r/cs�||d�}||jdgS)N)r2z
 module tests)r#)rr2r3)r4rr	r5�sz[TestDiscovery.test_find_tests_default_calls_package_load_tests.<locals>.loadTestsFromModulecSs|S)Nr)r6rrr	r.�r/z/fooztest*.pyza_directory module testsztest_directory load_testsztest_directory module testsztest_directory2 module tests)N)rrrr r#r$r'r9rPr:r5r;rr<r=rrLrH)rrr"r&r)r5r@r)rOrGr4r(r%r!r-r	�0test_find_tests_default_calls_package_load_tests�s@





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)Ncs
�t_dS)N)rr r)r!rr	r"szTTestDiscovery.test_find_tests_customize_via_package_pattern.<locals>.restore_listdircs�tj_dS)N)rr#r$r)r%rr	r&!szSTestDiscovery.test_find_tests_customize_via_package_pattern.<locals>.restore_isfilecs�tj_dS)N)rr#r'r)r(rr	r)%szRTestDiscovery.test_find_tests_customize_via_package_pattern.<locals>.restore_isdirz/foo�
my_packagez/foo/my_packagez__init__.pyztest_module.pycst�|�S)N)r<)r#)�vfsrr	�list_dir7szMTestDiscovery.test_find_tests_customize_via_package_pattern.<locals>.list_dircSs|�d�S)Nz.py)r1)r#rrr	r.:r/zMTestDiscovery.test_find_tests_customize_via_package_pattern.<locals>.<lambda>cSs
|�d�S)Nz.py)r1)r#rrr	r.;r/c@s$eZdZgZgZdd�Zdd�ZdS)zKTestDiscovery.test_find_tests_customize_via_package_pattern.<locals>.Modulecs@|�_�j�|�|�d�r*�fdd�}n�fdd�}|�_dS)NZtest_modulecs�j�|||f��jdgS)Nz load_tests)rHrIr#)rrJr2)rrr	rKEszhTestDiscovery.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_dirr2z load_tests)rHrIrr#�dirname�discover)rrJr2�__file__Zthis_dirZ	pkg_tests)rrr	rKIs
)r#rLrIr1rK)rr#rKr)rr	r
As
	zTTestDiscovery.test_find_tests_customize_via_package_pattern.<locals>.Module.__init__cSs|j|jkS)N)r#)rrMrrr	rNTszRTestDiscovery.test_find_tests_customize_via_package_pattern.<locals>.Module.__eq__N)rrr
rLrHr
rNrrrr	rO=srOcs�|�S)Nr)r)rOrr	r.Xr/cSs|S)Nr)r6rrr	r.Yr/ztest*.pyzmy_package load_testsz!my_package.test_module load_testszmy_package.test_module)rr r9r#r$r'�sys�removerrPrrr:r;rr<r=rrLrH)rr"r&r)rUrr@r)rOr(r%r!rTr	�-test_find_tests_customize_via_package_patterns<






z;TestDiscovery.test_find_tests_customize_via_package_patternc
	sbt��}tjj�tjj��fdd�}dd�tj_|�|�tjdd���fdd�}|�|�tj�tj�	d��}|�
t��|jddd	�WdQRX|�
|j|�|�|tj�d
d�tj_dd�tj_�fdd
�}|�|�g�d�fdd�	}||_t|_|�ddd�}tj�d�}tj�d�}	|�
|d�|�
|j|�|�
�|	dfg�|�|tj�dS)Ncs�tj_dS)N)rr#r$r)r%rr	r&tsz3TestDiscovery.test_discover.<locals>.restore_isfilecSsdS)NFr)r#rrr	r.wr/z-TestDiscovery.test_discover.<locals>.<lambda>cs�tjdd�<dS)N)rZr#r)�
orig_sys_pathrr	�restore_path{sz1TestDiscovery.test_discover.<locals>.restore_pathz/fooz/foo/bar)�
top_level_dircSsdS)NTr)r#rrr	r.�r/cSsdS)NTr)r#rrr	r.�r/cs�tj_dS)N)rr#r'r)r(rr	r)�sz2TestDiscovery.test_discover.<locals>.restore_isdircs��||f�dgS)NrJ)rI)rVr2�	namespace)�_find_tests_argsrr	r=�sz0TestDiscovery.test_discover.<locals>._find_testsz/foo/bar/bazr2z	['tests'])N)rrrr#r$r'r9rZr�normpathr�ImportErrorrXrr�assertInr=�strr;)
rrr&r^�	full_pathr)r=r@r_rVr)rar]r(r%r	�
test_discoveros:


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/startdirz__init__.pycst�|�S)N)r<)r#)rTrr	rU�sz[TestDiscovery.test_discover_start_dir_is_package_calls_package_load_tests.<locals>.list_dirr r$cSs
|�d�S)Nz.py)r1)r#rrr	r.�r/z[TestDiscovery.test_discover_start_dir_is_package_calls_package_load_tests.<locals>.<lambda>r'cSs|�d�S)Nz.py)r1)r#rrr	r.�r/c@s,eZdZgZgZdd�Zdd�Zdd�ZdS)zYTestDiscovery.test_discover_start_dir_is_package_calls_package_load_tests.<locals>.ModulecSs
||_dS)N)r#)rr#rrr	r
�szbTestDiscovery.test_discover_start_dir_is_package_calls_package_load_tests.<locals>.Module.__init__cSsd|jgS)Nzload_tests called )r#)rrrJr2rrr	rK�szdTestDiscovery.test_discover_start_dir_is_package_calls_package_load_tests.<locals>.Module.load_testscSs|j|jkS)N)r#)rrMrrr	rN�sz`TestDiscovery.test_discover_start_dir_is_package_calls_package_load_tests.<locals>.Module.__eq__N)rrr
rLrHr
rKrNrrrr	rO�s
rOcs�|�S)Nr)r)rOrr	r.�r/cSs|S)Nr)r6rrr	r.�r/)r_zload_tests called startdir)rr9�setattrrr r#r$r'rZr[rPrrr:r;rXr)rrUrr@r)rOrTr	�;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�gS)Nr)�_)�fakefilerr	r.�r/z8TestDiscovery.setup_import_issue_tests.<locals>.<lambda>cSsdS)NTr)rjrrr	r.�r/cs �tj_�t_�tjdd�<dS)N)rr#r$r rZr)r$r r]rr	�restore�sz7TestDiscovery.setup_import_issue_tests.<locals>.restore)rr r#r$rZr9)rrkrlr)rkr$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$r'cst�|�S)N)r<)r#)rTrr	rU�sz@TestDiscovery.setup_import_issue_package_tests.<locals>.list_dircSs|�d�S)Nz.py)r1)r#rrr	r.�r/z@TestDiscovery.setup_import_issue_package_tests.<locals>.<lambda>cSs
|�d�S)Nz.py)r1)r#rrr	r.�r/)r9rhrr r#r$r'rZ�__setitem__�slicer<)rrTrUr)rTr	� setup_import_issue_package_tests�sz.TestDiscovery.setup_import_issue_package_testsc	Cs�t��}|�d�|�d�}|�t��tj�|�	|�
�d�|�g|j�|�	dt
|j��|jd}|�d|kd|�tt|�d�d}|�t��|��WdQRXdS)Nztest_this_does_not_exist.py�.rrz6Failed to import test module: test_this_does_not_existzmissing error string in %r)rrrmrXrdr�getcwdrZr#r�countTestCases�assertNotEqual�errors�len�
assertTruer<rrcZtest_this_does_not_exist)rrr@�error�testrrr	�.test_discover_with_modules_that_fail_to_import�s



z<TestDiscovery.test_discover_with_modules_that_fail_to_importc	s td�dgtd�ddgi}|�|�g��fdd�}t��}||_|�td��}|�td�tj�|�	|�
�d�|�g|j�|�	dt
|j��|jd	}|�d
|kd|�tt|�d	�d	}|�t��|��WdQRX|�	�dg�x*ttjd�D]}t�t�||���qWdS)Nz/foorSz/foo/my_packagez__init__.pyztest_module.pycs��|�td��dS)NzCannot import Name)rIrc)r)�import_callsrr	r:�s
z`TestDiscovery.test_discover_with_init_modules_that_fail_to_import.<locals>._get_module_from_namerrz(Failed to import test module: my_packagezmissing error string in %r)rrprrr:rXrdrZr#rrsrtrurvrwr<rrcrS�range�pickle�HIGHEST_PROTOCOL�loads�dumps)rrTr:rr@rxry�protor)r{r	�3test_discover_with_init_modules_that_fail_to_import�s,



zATestDiscovery.test_discover_with_init_modules_that_fail_to_importcCs�tjjst�d��t��}dd�}||_|�d�|�d�}|�|�	�d�t�
�}|�|�|�t|j
�d�x(ttjd�D]}t�t�||��q�WdS)NzSuite cleanup is disabledcSst�d��dS)N�	skipperoo)r�SkipTest)rrrr	r:szeTestDiscovery.test_discover_with_module_that_raises_SkipTest_on_import.<locals>._get_module_from_nameztest_skip_dummy.pyrqr)r�
BaseTestSuite�_cleanupr�rr:rmrXrrs�
TestResult�runrv�skippedr|r}r~rr�)rrr:r@�resultr�rrr	�8test_discover_with_module_that_raises_SkipTest_on_imports



zFTestDiscovery.test_discover_with_module_that_raises_SkipTest_on_importcs�tjjst�d��td�dgtd�ddgi}|�|�g��fdd�}t��}||_|�td��}|�	td�t
j�|�|�
�d	�t��}|�|�|�t|j�d	�|�|jd	�|��dg�x(ttjd	�D]}t�t�||��q�WdS)
NzSuite cleanup is disabledz/foorSz/foo/my_packagez__init__.pyztest_module.pycs��|�t�d��dS)Nr�)rIrr�)r)r{rr	r:2s
zjTestDiscovery.test_discover_with_init_module_that_raises_SkipTest_on_import.<locals>._get_module_from_namer)rr�r�r�rrprr:rXrdrZr#rrsr�r�rvr�ZtestsRunr|r}r~rr�)rrTr:rr@r�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_importcCsbt�}g}|j|_|�ddg�|�|gg�g|dd�<|�ddddg�|�|ddgg�dS)N�	somethingrX�foo�bar)rrI�
_do_discovery�	parseArgsr)r�program�argsrrr	�$test_command_line_handling_parseArgsEsz2TestDiscovery.test_command_line_handling_parseArgscCsht�}g}|j|_|�dg�|�|gg�|�|jd�|�|jd�|�|jd�|�|j	d�dS)Nr�rF)
rrIr�r�rr�assertIsrrr)rr�r�rrr	�.test_command_line_handling_discover_by_defaultQsz<TestDiscovery.test_command_line_handling_discover_by_defaultcCsrt�}g}|j|_|�ddddddg�|�|gg�|�|jd�|�|jd�|�|jd�|�|j	d�dS)Nr�z-vz-bz-cz-f�T)
rrIr�r�rrr�rrr)rr�r�rrr	�;test_command_line_handling_discover_by_default_with_options]szITestDiscovery.test_command_line_handling_discover_by_default_with_optionsc
Cslt�}d|_t���.}|�t��}|�ddddg�WdQRXWdQRX|�|jj	d�|�
d|���dS)NZoneZtwoZthreeZfour)r�zusage:)rrrZcaptured_stderrr�
SystemExitr�r�	exceptionr�rd�getvalue)rr��stderr�cmrrr	�:test_command_line_handling_do_discovery_too_many_argumentsjs
&zHTestDiscovery.test_command_line_handling_do_discovery_too_many_argumentscCsLt�tj�}|��Gdd�dt�}|�|_|�dg�|�|jdg�dS)Nc@seZdZgZdd�ZdS)zYTestDiscovery.test_command_line_handling_do_discovery_uses_default_loader.<locals>.LoadercSs|j�|||f�dS)NrJ)r�rI)rrVr2r_rrr	rX|szbTestDiscovery.test_command_line_handling_do_discovery_uses_default_loader.<locals>.Loader.discoverN)rrr
r�rXrrrr	�Loaderzsr�z-v)rqztest*.pyN)	rP�__new__r�TestProgramZ_initArgParsersrr�rr�)rr�r�rrr	�;test_command_line_handling_do_discovery_uses_default_loadervs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�}|jd	dd
g|d�|�|jd�|�|jdg�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�}|jdddd	dddg|d�|�|jd�|�|jdg�|�|jd�|�
|j�|�
|j	�dS)Nc@seZdZgZdd�ZdS)zRTestDiscovery.test_command_line_handling_do_discovery_calls_loader.<locals>.LoadercSs|j�|||f�dS)NrJ)r�rI)rrVr2r_rrr	rX�sz[TestDiscovery.test_command_line_handling_do_discovery_calls_loader.<locals>.Loader.discoverN)rrr
r�rXrrrr	r��sr�z-v)r�r�rJ)rqztest*.pyNz	--verbose�fish)r�ztest*.pyN�eggs)r�r�N�ham)r�r�r�z-sz-t)rqztest*.pyr�z-p)rqr�Nz-fz-c)rrPr�rrryr�ZassertFalserrrw)rr�r�rrr	�4test_command_line_handling_do_discovery_calls_loader�srzBTestDiscovery.test_command_line_handling_do_discovery_calls_loadercs�Gdd�dt�}|tjd<tj�d��tj�tjj�tjj�����fdd�}|�	|�dd�}dd	�}d
d�}|t_|tj_|tj_�S)Nc@seZdZdZdS)z0TestDiscovery.setup_module_clash.<locals>.Modulez
bar/foo.pyN)rrr
rYrrrr	rO�srOr�cs8�t_�tj_�tj_tjd=�tjkr4tj���dS)Nr�)rr r#r$r'rZ�modulesr[r)rfr(r%r!rr	�cleanup�s
z1TestDiscovery.setup_module_clash.<locals>.cleanupcSsdgS)Nzfoo.pyr)rjrrr	r �sz1TestDiscovery.setup_module_clash.<locals>.listdircSsdS)NTr)rjrrr	r$�sz0TestDiscovery.setup_module_clash.<locals>.isfilecSsdS)NTr)rjrrr	r'�sz/TestDiscovery.setup_module_clash.<locals>.isdir)
rPrZr�rr#rr r$r'r9)rrOr�r r$r'r)rfr(r%r!r	�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$zfoo.py)rVr2r)
r�rrrr#r�re�escapeZassertRaisesRegexrcrXrrZ)rrfr�mod_dir�expected_dir�msgrrr	�test_detect_module_clash�s
z&TestDiscovery.test_detect_module_clashcsn|��}tjj�tj�d��tj�d���fdd�}|�|���fdd�}|tj_t��}|jddd�dS)	Nr�r�cs�tj_dS)N)rr#�realpathr)�original_realpathrr	r�sz5TestDiscovery.test_module_symlink_ok.<locals>.cleanupcs$|tj��d�kr tj��d�S|S)Nzfoo.py)rr#�join)r#)r�r�rr	r�sz6TestDiscovery.test_module_symlink_ok.<locals>.realpathzfoo.py)rVr2)	r�rr#r�rr9rrrX)rrfr�r�rr)r�r�r�r	�test_module_symlink_ok�s
z$TestDiscovery.test_module_symlink_okcslt��}�g�tj�tj�tjj���d�_d���fdd�	}||_	|�
d�}���j���|j
��dS)NFcsd�_��|���S)NT)�wasRunr)rVr2r`)�expectedPathrrJrr	r=szBTestDiscovery.test_discovery_from_dotted_path.<locals>._find_testsz
unittest.test)N)rrrr#rrWryrYr�r=rXrwrZ_tests)rrr=r@r)r�rrJr	�test_discovery_from_dotted_path
s
z-TestDiscovery.test_discovery_from_dotted_pathc	s�t��}tj�dd�t_tjj�tjj�dd�tj_tjdd������fdd�}|�|�|�	t
��}|�d�WdQRX|�t
|j�d�dS)NcSsdgS)Nztest_this_does_not_exist.pyr)rjrrr	r.#r/zOTestDiscovery.test_discovery_from_dotted_path_builtin_modules.<locals>.<lambda>cSsdS)NFr)rjrrr	r.&r/cs(�tj_�tj_�t_�tjdd�<dS)N)rr#r$r'r rZr)r'r$r r]rr	rl(szNTestDiscovery.test_discovery_from_dotted_path_builtin_modules.<locals>.restorerZz2Can not use builtin modules as dotted module names)rrrr r#r$r'rZr9r�	TypeErrorrXrrer�)rrrlr�r)r'r$r r]r	�/test_discovery_from_dotted_path_builtin_moduless

z=TestDiscovery.test_discovery_from_dotted_path_builtin_modulescs�t��}t�d��ddg�_tjdddgd��_�fdd�}g�d�fdd�	}||_t|_	tj
�d	|��>t�
��*tjj�d��|�d�}WdQRXWdQRXWdQRX|�|d
dg�dS)
N�packagez/az/b)r�submodule_search_locationscs�tj|<�S)N)rZr�)�packagenamer��kwargs)r�rr	�_import?s
zLTestDiscovery.test_discovery_from_dotted_namespace_packages.<locals>._importcs��||f�d|gS)Nz%s/tests)rI)rVr2r`)rarr	r=DszPTestDiscovery.test_discovery_from_dotted_namespace_packages.<locals>._find_testszbuiltins.__import__z/a/testsz/b/tests)N)rr�types�
ModuleType�__path__�SimpleNamespace�__spec__r=r<r;�mock�patchr�
DirsOnSysPathry�test_importlib�util�uncacherXr)rrr�r=r@r)rar�r	�-test_discovery_from_dotted_namespace_packages5s 


(z;TestDiscovery.test_discovery_from_dotted_namespace_packagescs�t��}t�d���fdd�}tj�d|��lt���Xtj	j
�d��>|�t
��}|�d�WdQRX|�t|j�d����WdQRXWdQRXWdQRXdS)Nr�cs�tj|<�S)N)rZr�)r�r�r�)r�rr	r�Xs
z>TestDiscovery.test_discovery_failed_discovery.<locals>._importzbuiltins.__import__z$don't know how to discover from {!r})rrr�r�r�r�rr�ryr�r�r�rr�rXrrer��format)rrr�r�r)r�r	�test_discovery_failed_discoveryTs

z-TestDiscovery.test_discovery_failed_discoveryN)rrr
rrArBrQrRr\rgrirmrprzr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrr	rs6
3(JGX.-
Jr�__main__)Zos.pathrrr�rZr�r}ryrZtest.test_importlib.utilrZ
unittest.mockZ
unittest.testr�rZTestCaserr�mainrrrr	�<module>s(S