Your IP : 216.73.216.213


Current Path : /opt/alt/python36/lib64/python3.6/unittest/test/__pycache__/
Upload File :
Current File : //opt/alt/python36/lib64/python3.6/unittest/test/__pycache__/test_discovery.cpython-36.opt-1.pyc

3

� f���@s�ddlZddlmZddlZddlZddlZddlZddlmZddl	Zddl
Z
ddlZ
ddlZ
Gdd�de
j
�ZGdd�de
j�Zedkr�e
j�dS)	�N)�abspath)�supportc@s<eZdZdZdZdZZZZdZ	dZ
dZZdd�Z
dS)�TestableTestProgramNT��cCsdS)N�)�selfrr�A/opt/alt/python36/lib64/python3.6/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�
TestDiscoveryc	CsPtj�}d|_|jd�}|j|d�ds,dS|jt��|jd�WdQRXdS)Nz/fooz/foo/bar/baz.pyzbar.bazFz/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*tj�}tj��fdd�}tjj��fdd�}tjj��fdd�}ddd	d
ddd
gddgg��fdd�t_|j|�dd�}|tj_|j|�dd�}|tj_|j|�dd�|_|j	�d#�fdd�	}||_	dd�|_
tjjd�}||_t
|j|d��}	dd�d$D�}
|
jd d�d%D��|j|	|
�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
�jd�S)Nr)�pop)r#)�
path_listsrr	�<lambda>;sz/TestDiscovery.test_find_tests.<locals>.<lambda>cSs
|jd�S)N�dir)�endswith)r#rrr	r'>sz,TestDiscovery.test_find_tests.<locals>.isdircSs|jd�od|kS)Nr/r+)r0)r#rrr	r$Csz-TestDiscovery.test_find_tests.<locals>.isfilecSs|dS)Nz moduler)r#rrr	r.Iscs�||d�}||dgS)N)�patternz testsr)rr1�base)�orig_load_testsrr	�loadTestsFromModuleKsz:TestDiscovery.test_find_tests.<locals>.loadTestsFromModulecSs|S)Nr)�thingrrr	r.Psz/fooztest*.pycSsg|]}|dg�qS)z
 module testsr)�.0rrrr	�
<listcomp>Xsz1TestDiscovery.test_find_tests.<locals>.<listcomp>�test1�test2cSsg|]}d|dg�qS)ztest_dir.%sz
 module testsr)r6rrrr	r7Zs�test3�test4)N)r8r9r*)r:r;)rrrr r#r$r'�
addCleanup�_get_module_from_namer4�
suiteClassrr�list�_find_tests�extendr)rrr"r&r)r'r$r4�	top_level�suiteZexpectedr)r3r(r%r!r-r	�test_find_tests+s>







zTestDiscovery.test_find_testscs�tj�}tj��fdd�}tjj��fdd�}tjj��fdd�}dgg��fdd	�t_|j|�d
d	�tj_|j|�dd	�tj_|j|�dd	�|_|j	�d�fd
d�	}||_	dd	�|_
tjjd�}||_t
|j|d��}|j|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
�jd�S)Nr)r,)r#)r-rr	r.nsz6TestDiscovery.test_find_tests_socket.<locals>.<lambda>cSsdS)NFr)r#rrr	r.qscSsdS)NFr)r#rrr	r.tscSs|dS)Nz moduler)r#rrr	r.wscs�||d�}||dgS)N)r1z testsr)rr1r2)r3rr	r4yszATestDiscovery.test_find_tests_socket.<locals>.loadTestsFromModulecSs|S)Nr)r5rrr	r.~sz/fooztest*.py)N)rrrr r#r$r'r<r=r4r>rrr?r@r)rrr"r&r)r4rBrCr)r3r(r%r!r-r	�test_find_tests_socket^s.




z$TestDiscovery.test_find_tests_socketcs@tj�}tj��fdd�}tjj��fdd�}tjj��fdd�}ddd	g��gggg��fd
d�t_|j|�dd�tj_|j|��fd
d�tj_|j|�Gdd�dt���fdd�|_	|j
�d�fdd�	}||_
dd�|_d|_t
|jdd��}|j|dgddgdgg�|j�jddd	g�|j�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
�jd�S)Nr)r,)r#)r-rr	r.�sz<TestDiscovery.test_find_tests_with_package.<locals>.<lambda>cSsdS)NTr)r#rrr	r.�scstjj|��kS)N)rr#�basename)r#)�directoriesrr	r.�sc@s$eZdZgZgZdd�Zdd�ZdS)z:TestDiscovery.test_find_tests_with_package.<locals>.Modulecs8|�_�jj|�tjj|�dkr4�fdd�}|�_dS)NrGcs�jj|||f��jdgS)Nz load_tests)�load_tests_args�appendr#)r�testsr1)rrr	�
load_tests�szWTestDiscovery.test_find_tests_with_package.<locals>.Module.__init__.<locals>.load_tests)r#�pathsrLrrIrN)rr#rNr)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
rOrKr
rQrrrr	�Module�s	rRcs�|�S)Nr)r)rRrr	r.�scs�||d�}||jdgS)N)r1z
 module tests)r#)rr1r2)r3rr	r4�szGTestDiscovery.test_find_tests_with_package.<locals>.loadTestsFromModulecSs|S)Nr)r5rrr	r.�sz/fooztest*za_directory module testsztest_directory load_testsztest_directory module testsztest_directory2 module tests)N)rrrr r#r$r'r<�objectr=r4r>rr?r@rrOrK)rrr"r&r)r4rCr)rRrJr3r(r%r!r-r	�test_find_tests_with_package�s@





z*TestDiscovery.test_find_tests_with_packagecs@tj�}tj��fdd�}tjj��fdd�}tjj��fdd�}ddd	g��gggg��fd
d�t_|j|�dd�tj_|j|��fd
d�tj_|j|�Gdd�dt���fdd�|_	|j
�d�fdd�	}||_
dd�|_d|_t
|jdd��}|j|dgddgdgg�|j�jddd	g�|j�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_isdirrFrGrHcs
�jd�S)Nr)r,)r#)r-rr	r.�szPTestDiscovery.test_find_tests_default_calls_package_load_tests.<locals>.<lambda>cSsdS)NTr)r#rrr	r.�scstjj|��kS)N)rr#rI)r#)rJrr	r.�sc@s$eZdZgZgZdd�Zdd�ZdS)zNTestDiscovery.test_find_tests_default_calls_package_load_tests.<locals>.Modulecs8|�_�jj|�tjj|�dkr4�fdd�}|�_dS)NrGcs�jj|||f��jdgS)Nz load_tests)rKrLr#)rrMr1)rrr	rN�szkTestDiscovery.test_find_tests_default_calls_package_load_tests.<locals>.Module.__init__.<locals>.load_tests)r#rOrLrrIrN)rr#rNr)rr	r
�s
zWTestDiscovery.test_find_tests_default_calls_package_load_tests.<locals>.Module.__init__cSs|j|jkS)N)r#)rrPrrr	rQ�szUTestDiscovery.test_find_tests_default_calls_package_load_tests.<locals>.Module.__eq__N)rrr
rOrKr
rQrrrr	rR�s	rRcs�|�S)Nr)r)rRrr	r.�scs�||d�}||jdgS)N)r1z
 module tests)r#)rr1r2)r3rr	r4�sz[TestDiscovery.test_find_tests_default_calls_package_load_tests.<locals>.loadTestsFromModulecSs|S)Nr)r5rrr	r.�sz/fooztest*.pyza_directory module testsztest_directory load_testsztest_directory module testsztest_directory2 module tests)N)rrrr r#r$r'r<rSr=r4r>rr?r@rrOrK)rrr"r&r)r4rCr)rRrJr3r(r%r!r-r	�0test_find_tests_default_calls_package_load_tests�s@





z>TestDiscovery.test_find_tests_default_calls_package_load_testscsHtj��fdd�}|j|�tjj��fdd�}|j|�tjj��fdd�}|j|�|jtjjtd��td�dgtd	�d
dgi��fdd
�}|t_dd�tj_dd�tj_Gdd�dt	��t
j�}�fdd�|_dd�|_
td�|_t|jtd�d��}|j|dgdggg�|j�jddg�|j�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|jd�S)Nz.py)r0)r#rrr	r.:szMTestDiscovery.test_find_tests_customize_via_package_pattern.<locals>.<lambda>cSs
|jd�S)Nz.py)r0)r#rrr	r.;sc@s$eZdZgZgZdd�Zdd�ZdS)zKTestDiscovery.test_find_tests_customize_via_package_pattern.<locals>.Modulecs@|�_�jj|�|jd�r*�fdd�}n�fdd�}|�_dS)NZtest_modulecs�jj|||f��jdgS)Nz load_tests)rKrLr#)rrMr1)rrr	rNEszhTestDiscovery.test_find_tests_customize_via_package_pattern.<locals>.Module.__init__.<locals>.load_testscsB�jj|||f�d}tjj|�}|j||d�}�jd|g|S)Nz/foo/my_package/__init__.py)�	start_dirr1z load_tests)rKrLrr#�dirname�discover)rrMr1�__file__Zthis_dirZ	pkg_tests)rrr	rNIs
)r#rOrLr0rN)rr#rNr)rr	r
As
	zTTestDiscovery.test_find_tests_customize_via_package_pattern.<locals>.Module.__init__cSs|j|jkS)N)r#)rrPrrr	rQTszRTestDiscovery.test_find_tests_customize_via_package_pattern.<locals>.Module.__eq__N)rrr
rOrKr
rQrrrr	rR=srRcs�|�S)Nr)r)rRrr	r.XscSs|S)Nr)r5rrr	r.Ysztest*.pyzmy_package load_testsz!my_package.test_module load_testszmy_package.test_module)rr r<r#r$r'�sys�removerrSrrr=r>rr?r@rrOrK)rr"r&r)rXrrCr)rRr(r%r!rWr	�-test_find_tests_customize_via_package_patterns<






z;TestDiscovery.test_find_tests_customize_via_package_patternc
sbtj�}tjj�tjj��fdd�}dd�tj_|j|�tjdd���fdd�}|j|�tjjtjj	d��}|j
t��|jddd	�WdQRX|j
|j|�|j|tj�d
d�tj_dd�tj_�fdd
�}|j|�g�d�fdd�	}||_t|_|jddd�}tjjd�}tjjd�}	|j
|d�|j
|j|�|j
�|	dfg�|j|tj�dS)Ncs�tj_dS)N)rr#r$r)r%rr	r&tsz3TestDiscovery.test_discover.<locals>.restore_isfilecSsdS)NFr)r#rrr	r.wsz-TestDiscovery.test_discover.<locals>.<lambda>cs�tjdd�<dS)N)r]r#r)�
orig_sys_pathrr	�restore_path{sz1TestDiscovery.test_discover.<locals>.restore_pathz/fooz/foo/bar)�
top_level_dircSsdS)NTr)r#rrr	r.�scSsdS)NTr)r#rrr	r.�scs�tj_dS)N)rr#r'r)r(rr	r)�sz2TestDiscovery.test_discover.<locals>.restore_isdircs�j||f�dgS)NrM)rL)rYr1�	namespace)�_find_tests_argsrr	r@�sz0TestDiscovery.test_discover.<locals>._find_testsz/foo/bar/bazr1z	['tests'])N)rrrr#r$r'r<r]r�normpathr�ImportErrorr[rr�assertInr@�strr>)
rrr&ra�	full_pathr)r@rCrbrYr)rdr`r(r%r	�
test_discoveros:


zTestDiscovery.test_discovercs�td�dgtd�dgi��fdd�}|jttdtj�|t_|jttjdtjj�d	d
�tj_|jttjdtjj�dd
�tj_|jtjj	td��Gd
d�dt
��tj�}�fdd
�|_
dd
�|_|jddd�}|j|dgg�dS)Nz	/toplevelZstartdirz/toplevel/startdirz__init__.pycst�|�S)N)r?)r#)rWrr	rX�sz[TestDiscovery.test_discover_start_dir_is_package_calls_package_load_tests.<locals>.list_dirr r$cSs
|jd�S)Nz.py)r0)r#rrr	r.�sz[TestDiscovery.test_discover_start_dir_is_package_calls_package_load_tests.<locals>.<lambda>r'cSs|jd�S)Nz.py)r0)r#rrr	r.�sc@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#)rrrMr1rrr	rN�szdTestDiscovery.test_discover_start_dir_is_package_calls_package_load_tests.<locals>.Module.load_testscSs|j|jkS)N)r#)rrPrrr	rQ�sz`TestDiscovery.test_discover_start_dir_is_package_calls_package_load_tests.<locals>.Module.__eq__N)rrr
rOrKr
rNrQrrrr	rR�s
rRcs�|�S)Nr)r)rRrr	r.�scSs|S)Nr)r5rrr	r.�s)rbzload_tests called startdir)rr<�setattrrr r#r$r'r]r^rSrrr=r>r[r)rrXrrCr)rRrWr	�;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�}|j|�dS)Ncs�gS)Nr)�_)�fakefilerr	r.�sz8TestDiscovery.setup_import_issue_tests.<locals>.<lambda>cSsdS)NTr)rmrrr	r.�scs �tj_�t_�tjdd�<dS)N)rr#r$r r]r)r$r r`rr	�restore�sz7TestDiscovery.setup_import_issue_tests.<locals>.restore)rr r#r$r]r<)rrnror)rnr$r r`r	�setup_import_issue_tests�sz&TestDiscovery.setup_import_issue_testscs�|jttdtj�|jttjdtjj�|jttjdtjj�|jtjjt	d�t
tj���fdd�}|t_dd�tj_dd�tj_dS)	Nr r$r'cst�|�S)N)r?)r#)rWrr	rX�sz@TestDiscovery.setup_import_issue_package_tests.<locals>.list_dircSs|jd�S)Nz.py)r0)r#rrr	r.�sz@TestDiscovery.setup_import_issue_package_tests.<locals>.<lambda>cSs
|jd�S)Nz.py)r0)r#rrr	r.�s)r<rkrr r#r$r'r]�__setitem__�slicer?)rrWrXr)rWr	� setup_import_issue_package_tests�sz.TestDiscovery.setup_import_issue_package_testsc	Cs�tj�}|jd�|jd�}|jtj�tj�|j	|j
�d�|jg|j�|j	dt
|j��|jd}|jd|kd|�tt|�d�d}|jt��|j�WdQRXdS)Nztest_this_does_not_exist.py�.rrz6Failed to import test module: test_this_does_not_existzmissing error string in %r)rrrpr[rgr�getcwdr]r#r�countTestCases�assertNotEqual�errors�len�
assertTruer?rrfZtest_this_does_not_exist)rrrC�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}|j|�g��fdd�}tj�}||_|jtd��}|jtd�tj�|j	|j
�d�|jg|j�|j	dt
|j��|jd	}|jd
|kd|�tt|�d	�d	}|jt��|j�WdQRX|j	�dg�x*ttjd�D]}tjtj||���qWdS)Nz/foorVz/foo/my_packagez__init__.pyztest_module.pycs�j|�td��dS)NzCannot import Name)rLrf)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)rrsrrr=r[rgr]r#rrvrwrxryrzr?rrfrV�range�pickle�HIGHEST_PROTOCOL�loads�dumps)rrWr=rrCr{r|�protor)r~r	�3test_discover_with_init_modules_that_fail_to_import�s,



zATestDiscovery.test_discover_with_init_modules_that_fail_to_importcCs�tjjstjd��tj�}dd�}||_|jd�|jd�}|j|j	�d�tj
�}|j|�|jt|j
�d�x(ttjd�D]}tjtj||��q�WdS)NzSuite cleanup is disabledcSstjd��dS)N�	skipperoo)r�SkipTest)rrrr	r=szeTestDiscovery.test_discover_with_module_that_raises_SkipTest_on_import.<locals>._get_module_from_nameztest_skip_dummy.pyrtr)r�
BaseTestSuite�_cleanupr�rr=rpr[rrv�
TestResult�runry�skippedrr�r�r�r�)rrr=rC�resultr�rrr	�8test_discover_with_module_that_raises_SkipTest_on_imports



zFTestDiscovery.test_discover_with_module_that_raises_SkipTest_on_importcs�tjjstjd��td�dgtd�ddgi}|j|�g��fdd�}tj�}||_|jtd��}|j	td�t
j�|j|j
�d	�tj�}|j|�|jt|j�d	�|j|jd	�|j�dg�x(ttjd	�D]}tjtj||��q�WdS)
NzSuite cleanup is disabledz/foorVz/foo/my_packagez__init__.pyztest_module.pycs�j|�tjd��dS)Nr�)rLrr�)r)r~rr	r=2s
zjTestDiscovery.test_discover_with_init_module_that_raises_SkipTest_on_import.<locals>._get_module_from_namer)rr�r�r�rrsrr=r[rgr]r#rrvr�r�ryr�ZtestsRunrr�r�r�r�)rrWr=rrCr�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|_|jddg�|j|gg�g|dd�<|jddddg�|j|ddgg�dS)N�	somethingr[�foo�bar)rrL�
_do_discovery�	parseArgsr)r�program�argsrrr	�$test_command_line_handling_parseArgsEsz2TestDiscovery.test_command_line_handling_parseArgscCsht�}g}|j|_|jdg�|j|gg�|j|jd�|j|jd�|j|jd�|j|j	d�dS)Nr�rF)
rrLr�r�rr�assertIsrrr)rr�r�rrr	�.test_command_line_handling_discover_by_defaultQsz<TestDiscovery.test_command_line_handling_discover_by_defaultcCsrt�}g}|j|_|jddddddg�|j|gg�|j|jd�|j|jd�|j|jd�|j|j	d�dS)Nr�z-vz-bz-cz-f�T)
rrLr�r�rrr�rrr)rr�r�rrr	�;test_command_line_handling_discover_by_default_with_options]szITestDiscovery.test_command_line_handling_discover_by_default_with_optionscCslt�}d|_tj��.}|jt��}|jddddg�WdQRXWdQRX|j|jj	d�|j
d|j��dS)NZoneZtwoZthreeZfourr�zusage:)r�)rrrZcaptured_stderrr�
SystemExitr�r�	exceptionr�rg�getvalue)rr��stderr�cmrrr	�:test_command_line_handling_do_discovery_too_many_argumentsjs
&zHTestDiscovery.test_command_line_handling_do_discovery_too_many_argumentscCsLtjtj�}|j�Gdd�dt�}|�|_|jdg�|j|jdg�dS)Nc@seZdZgZdd�ZdS)zYTestDiscovery.test_command_line_handling_do_discovery_uses_default_loader.<locals>.LoadercSs|jj|||f�dS)NrM)r�rL)rrYr1rbrrr	r[|szbTestDiscovery.test_command_line_handling_do_discovery_uses_default_loader.<locals>.Loader.discoverN)rrr
r�r[rrrr	�Loaderzsr�z-vrt�test*.py)rtr�N)	rS�__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�|j|jd�|j|jd�|j|jdg�g|_t�}|jd	g|d�|j|jd�|j|jdg�g|_t�}|jg|d�|j|jd�|j|jdg�g|_t�}|jd
g|d�|j|jd�|j|jdg�g|_t�}|jd
dg|d�|j|jd�|j|jdg�g|_t�}|jd
ddg|d�|j|jd�|j|jdg�g|_t�}|jd
d
g|d�|j|jd�|j|jdg�g|_t�}|jdd
g|d�|j|jd�|j|jdg�g|_t�}|jdd
g|d�|j|jd�|j|jdg�|j|j�|j|j	�g|_t�}|jddd
d
dddg|d�|j|jd�|j|jdg�|j|jd�|j
|j�|j
|j	�dS)Nc@seZdZgZdd�ZdS)zRTestDiscovery.test_command_line_handling_do_discovery_calls_loader.<locals>.LoadercSs|jj|||f�dS)NrM)r�rL)rrYr1rbrrr	r[�sz[TestDiscovery.test_command_line_handling_do_discovery_calls_loader.<locals>.Loader.discoverN)rrr
r�r[rrrr	r��sr�z-v)r�r�rMrt�test*.pyz	--verbose�fish�eggs�hamz-sz-tz-pz-fz-c)rtr�N)rtr�N)rtr�N)r�r�N)r�r�N)r�r�r�)r�r�N)rtr�r�)rtr�N)r�r�N)rrSr�rrr|r�ZassertFalserrrz)rr�r�rrr	�4test_command_line_handling_do_discovery_calls_loader�srzBTestDiscovery.test_command_line_handling_do_discovery_calls_loadercs�Gdd�dt�}|tjd<tjjd��tj�tjj�tjj�����fdd�}|j	|�dd�}dd	�}d
d�}|t_|tj_|tj_�S)Nc@seZdZdZdS)z0TestDiscovery.setup_module_clash.<locals>.Modulez
bar/foo.pyN)rrr
r\rrrr	rR�srRr�cs8�t_�tj_�tj_tjd=�tjkr4tjj��dS)Nr�)rr r#r$r'r]�modulesr^r)rir(r%r!rr	�cleanup�s
z1TestDiscovery.setup_module_clash.<locals>.cleanupcSsdgS)Nzfoo.pyr)rmrrr	r �sz1TestDiscovery.setup_module_clash.<locals>.listdircSsdS)NTr)rmrrr	r$�sz0TestDiscovery.setup_module_clash.<locals>.isfilecSsdS)NTr)rmrrr	r'�sz/TestDiscovery.setup_module_clash.<locals>.isdir)
rSr]r�rr#rr r$r'r<)rrRr�r r$r'r)rir(r%r!r	�setup_module_clash�s

z TestDiscovery.setup_module_clashcCsj|j�}tj�}tjjd�}tjjd�}tjd||f�}|jt	d||j
ddd�|jtjd|�dS)Nr�r�zZ'foo' module incorrectly imported from %r. Expected %r. Is this module globally installed?z^%s$zfoo.py)rYr1r)
r�rrrr#r�re�escapeZassertRaisesRegexrfr[rr])rrir�mod_dir�expected_dir�msgrrr	�test_detect_module_clash�s
z&TestDiscovery.test_detect_module_clashcsn|j�}tjj�tjjd��tjjd���fdd�}|j|���fdd�}|tj_tj�}|jddd�dS)	Nr�r�cs�tj_dS)N)rr#�realpathr)�original_realpathrr	r�sz5TestDiscovery.test_module_symlink_ok.<locals>.cleanupcs$|tjj�d�kr tjj�d�S|S)Nzfoo.py)rr#�join)r#)r�r�rr	r�sz6TestDiscovery.test_module_symlink_ok.<locals>.realpathzfoo.py)rYr1)	r�rr#r�rr<rrr[)rrir�r�rr)r�r�r�r	�test_module_symlink_ok�s
z$TestDiscovery.test_module_symlink_okcsltj�}�g�tjjtjjtjj���d�_d���fdd�	}||_	|j
d�}�j�j��j|j
��dS)NFcsd�_�j|���S)NT)�wasRunr)rYr1rc)�expectedPathrrMrr	r@szBTestDiscovery.test_discovery_from_dotted_path.<locals>._find_testsz
unittest.test)N)rrrr#rrZr|r\r�r@r[rzrZ_tests)rrr@rCr)r�rrMr	�test_discovery_from_dotted_path
s
z-TestDiscovery.test_discovery_from_dotted_pathc
s�tj�}tj�dd�t_tjj�tjj�dd�tj_tjdd������fdd�}|j|�|j	t
��}|jd�WdQRX|jt
|j�d�dS)NcSsdgS)Nztest_this_does_not_exist.pyr)rmrrr	r.#szOTestDiscovery.test_discovery_from_dotted_path_builtin_modules.<locals>.<lambda>cSsdS)NFr)rmrrr	r.&scs(�tj_�tj_�t_�tjdd�<dS)N)rr#r$r'r r]r)r'r$r r`rr	ro(szNTestDiscovery.test_discovery_from_dotted_path_builtin_modules.<locals>.restorer]z2Can not use builtin modules as dotted module names)rrrr r#r$r'r]r<r�	TypeErrorr[rrhr�)rrror�r)r'r$r r`r	�/test_discovery_from_dotted_path_builtin_moduless

z=TestDiscovery.test_discovery_from_dotted_path_builtin_modulescs�tj�}tjd��ddg�_tjdddgd��_�fdd�}g�d�fdd�	}||_t|_	tj
jd	|��>tj
��*tjjjd��|jd�}WdQRXWdQRXWdQRX|j|d
dg�dS)
N�packagez/az/b)r�submodule_search_locationscs�tj|<�S)N)r]r�)�packagenamer��kwargs)r�rr	�_import?s
zLTestDiscovery.test_discovery_from_dotted_namespace_packages.<locals>._importcs�j||f�d|gS)Nz%s/tests)rL)rYr1rc)rdrr	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�
DirsOnSysPathr|�test_importlib�util�uncacher[r)rrr�r@rCr)rdr�r	�-test_discovery_from_dotted_namespace_packages5s 


(z;TestDiscovery.test_discovery_from_dotted_namespace_packagesc s�tj�}tjd���fdd�}tjjd|��ltj��Xtj	j
jd��>|jt
��}|jd�WdQRX|jt|j�dj���WdQRXWdQRXWdQRXdS)Nr�cs�tj|<�S)N)r]r�)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�r|r�r�r�rr�r[rrhr��format)rrr�r�r)r�r	�test_discovery_failed_discoveryTs

z-TestDiscovery.test_discovery_failed_discoveryN)rrr
rrDrErTrUr_rjrlrprsr}r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrr	rs6
3(JGX.-
Jr�__main__)Zos.pathrrr�r]r�r�r|rZtest.test_importlib.utilrZ
unittest.mockZ
unittest.testr�rZTestCaserr�mainrrrr	�<module>s(S