
    dafۃ                         d dl Zd dl mZ d dlZd dlZd dlZd dlZd dlmZ d dl	m
Z
 d dlZd dlZd dlZ G d dej                        Z G d dej                         Zed	k(  r ej&                          yy)
    N)abspath)support)import_helperc                   :    e Zd ZdZdZdxZxZxZZdZ	dZ
dxZZd Zy)TestableTestProgramNT    c                      y N )selfs    </root/Python-3.12.4/Lib/test/test_unittest/test_discovery.py__init__zTestableTestProgram.__init__   s        )__name__
__module____qualname__moduleexitdefaultTestfailfast
catchbreakbuffer	verbosityprogName
testRunner
testLoaderr   r   r   r   r   r      s9    FD377K7(7Z&IH""Jr   r   c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)TestDiscoveryc                     t        j                         }d|_        |j                  d      }| j	                  |d       	 | j                  t              5  |j                  d       d d d        y # 1 sw Y   y xY w)N/fooz/foo/bar/baz.pyzbar.bazz/bar/baz.py)unittest
TestLoader_top_level_dir_get_name_from_pathassertEqualassertRaisesAssertionError)r   loadernames      r   test_get_name_from_pathz%TestDiscovery.test_get_name_from_path   so    $$& &))*;<y) ~. 	6&&}5	6 	6 	6s   A00A9c                 L   t        j                         }t        j                  fd}t        j                  j
                  fd}t        j                  j                  fd}g dddggfdt        _        | j                  |       d }|t        j                  _        | j                  |       d	 }|t        j                  _        | j                  |       d
 |_        |j                  dfd	}||_	        d |_
        t        j                  j                  d      }||_        t        |j                  |d            }	dD 
cg c]  }
|
dz   g
 }}
|j                  dD 
cg c]  }
d|
z  dz   g c}
       | j!                  |	|       y c c}
w c c}
w )Nc                       t         _        y r   oslistdiroriginal_listdirs   r   restore_listdirz6TestDiscovery.test_find_tests.<locals>.restore_listdir/   
    )BJr   c                  0     t         j                  _        y r   r/   pathisfileoriginal_isfiles   r   restore_isfilez5TestDiscovery.test_find_tests.<locals>.restore_isfile2       ,BGGNr   c                  0     t         j                  _        y r   r/   r7   isdiroriginal_isdirs   r   restore_isdirz4TestDiscovery.test_find_tests.<locals>.restore_isdir5       *BGGMr   )ztest2.pyztest1.pyznot_a_test.pytest_dirztest.fooztest-not-a-module.pyanother_dirztest4.pyztest3.pyc                 &    j                  d      S Nr   popr7   
path_listss    r   <lambda>z/TestDiscovery.test_find_tests.<locals>.<lambda>;       *.."3 r   c                 $    | j                  d      S )Ndirendswithr7   s    r   r?   z,TestDiscovery.test_find_tests.<locals>.isdir>   s    ==''r   c                 2    | j                  d       xr d| vS )NrO   rE   rP   rR   s    r   r8   z-TestDiscovery.test_find_tests.<locals>.isfileC   s    }}U++IMT4IIr   c                     | dz   S Nz moduler   rR   s    r   rL   z/TestDiscovery.test_find_tests.<locals>.<lambda>I       D94D r   c                 *     | |      }|| dz   gz   S Npatternz testsr   r   rZ   baseorig_load_testss      r   loadTestsFromModulez:TestDiscovery.test_find_tests.<locals>.loadTestsFromModuleK   "    "67;D6H,---r   c                     | S r   r   things    r   rL   z/TestDiscovery.test_find_tests.<locals>.<lambda>P       % r   r!   test*.py)test1test2rD    module tests)test3test4ztest_dir.%sr   )r"   r#   r/   r0   r7   r8   r?   
addCleanup_get_module_from_namer^   
suiteClassr   r$   list_find_testsextendr&   )r   r)   r3   r;   rB   r?   r8   r^   	top_levelsuiter*   expectedr]   rA   r:   r2   rK   s               @@@@@r   test_find_testszTestDiscovery.test_find_tests+   sl   $$&::	*''..	-	+J!:02
 4
(	(&	J  ''D$ 44	. &9"/GGOOF+	 )V''	:>?
 34TO+, 4 4&(=4/?BC ( 	))	4(s   F2F!c                   	
 t        j                         }t        j                  fd}t        j                  j
                  

fd}t        j                  j                  		fd}dggfdt        _        | j                  |       d t        j                  _        | j                  |       d t        j                  _        | j                  |       d |_        |j                  dfd		}||_	        d
 |_
        t        j                  j                  d      }||_        t        |j                  |d            }| j                  |g        y )Nc                       t         _        y r   r.   r1   s   r   r3   z=TestDiscovery.test_find_tests_socket.<locals>.restore_listdird   r4   r   c                  0     t         j                  _        y r   r6   r9   s   r   r;   z<TestDiscovery.test_find_tests_socket.<locals>.restore_isfileg   r<   r   c                  0     t         j                  _        y r   r>   r@   s   r   rB   z;TestDiscovery.test_find_tests_socket.<locals>.restore_isdirj   rC   r   socketc                 &    j                  d      S rG   rH   rJ   s    r   rL   z6TestDiscovery.test_find_tests_socket.<locals>.<lambda>n   rM   r   c                      yNFr   rR   s    r   rL   z6TestDiscovery.test_find_tests_socket.<locals>.<lambda>q       r   c                      yr{   r   rR   s    r   rL   z6TestDiscovery.test_find_tests_socket.<locals>.<lambda>t   r|   r   c                     | dz   S rU   r   rR   s    r   rL   z6TestDiscovery.test_find_tests_socket.<locals>.<lambda>w   rV   r   c                 *     | |      }|| dz   gz   S rX   r   r[   s      r   r^   zATestDiscovery.test_find_tests_socket.<locals>.loadTestsFromModuley   r_   r   c                     | S r   r   ra   s    r   rL   z6TestDiscovery.test_find_tests_socket.<locals>.<lambda>~   rc   r   r!   rd   r   )r"   r#   r/   r0   r7   r8   r?   rj   rk   r^   rl   r   r$   rm   rn   r&   )r   r)   r3   r;   rB   r^   rp   rq   r]   rA   r:   r2   rK   s           @@@@@r   test_find_tests_socketz$TestDiscovery.test_find_tests_socket^   s     $$&::	*''..	-	+  j\
3
(*&+''D$ 44	. &9"/GGOOF+	 )V''	:>?#r   c                 8  	
 t        j                         }t        j                  fd}t        j                  j
                  fd}t        j                  j                  

fd}g dg g g gfdt        _        | j                  |       d t        j                  _        | j                  |       fdt        j                  _        | j                  |        G d d	t              fd
|_	        |j                  	d	fd	}||_
        d |_        d|_        t        |j                  dd            }| j                  |dgddgdgg       | j                  j                   g d       | j                  j"                  |g dfg       y )Nc                       t         _        y r   r.   r1   s   r   r3   zCTestDiscovery.test_find_tests_with_package.<locals>.restore_listdir   r4   r   c                  0     t         j                  _        y r   r6   r9   s   r   r;   zBTestDiscovery.test_find_tests_with_package.<locals>.restore_isfile   r<   r   c                  0     t         j                  _        y r   r>   r@   s   r   rB   zATestDiscovery.test_find_tests_with_package.<locals>.restore_isdir   rC   r   a_directorytest_directorytest_directory2c                 &    j                  d      S rG   rH   rJ   s    r   rL   z<TestDiscovery.test_find_tests_with_package.<locals>.<lambda>   rM   r   c                      yNTr   rR   s    r   rL   z<TestDiscovery.test_find_tests_with_package.<locals>.<lambda>   r|   r   c                 F    t         j                  j                  |       vS r   r/   r7   basenamer7   directoriess    r   rL   z<TestDiscovery.test_find_tests_with_package.<locals>.<lambda>       bgg&6&6t&<K&O r   c                        e Zd Zg Zg Zd Zd Zy):TestDiscovery.test_find_tests_with_package.<locals>.Modulec                      | _          j                  j                  |       t        j                   j	                  |      dk(  r fd}| _        y y )Nr   c                 `    j                   j                  | ||f       j                  dz   gS N load_testsload_tests_argsappendr7   r)   testsrZ   r   s      r   
load_testszWTestDiscovery.test_find_tests_with_package.<locals>.Module.__init__.<locals>.load_tests   0    ,,33VUG4LM $		M 9::r   r7   pathsr   r/   r   r   r   r7   r   s   `  r   r   zCTestDiscovery.test_find_tests_with_package.<locals>.Module.__init__   G     	

!!$'77##D)-==; '1DO	 >r   c                 4    | j                   |j                   k(  S r   rR   r   others     r   __eq__zATestDiscovery.test_find_tests_with_package.<locals>.Module.__eq__       yyEJJ..r   Nr   r   r   r   r   r   r   r   r   r   Moduler          E O1/r   r   c                      |       S r   r   r*   r   s    r   rL   z<TestDiscovery.test_find_tests_with_package.<locals>.<lambda>       F4L r   c                 >     | |      }|| j                   dz   gz   S NrY   rg   rR   r[   s      r   r^   zGTestDiscovery.test_find_tests_with_package.<locals>.loadTestsFromModule   &    "67;D6;;8999r   c                     | S r   r   ra   s    r   rL   z<TestDiscovery.test_find_tests_with_package.<locals>.<lambda>   rc   r   r!   ztest*a_directory module teststest_directory load_teststest_directory module teststest_directory2 module testsr   r"   r#   r/   r0   r7   r8   r?   rj   objectrk   r^   rl   r$   rm   rn   r&   r   r   r   r)   r3   r;   rB   r^   rq   r   r   r]   rA   r:   r2   rK   s          @@@@@@@r   test_find_tests_with_packagez*TestDiscovery.test_find_tests_with_package   sb   $$&::	*''..	-	+ K!2r2.
3
()&O'	/V 	/  (A$ 44	: &9"/ & V''89
 	5668:9:<	= 	M	O 	//!2w/0	2r   c                 8  	
 t        j                         }t        j                  fd}t        j                  j
                  fd}t        j                  j                  

fd}g dg g g gfdt        _        | j                  |       d t        j                  _        | j                  |       fdt        j                  _        | j                  |        G d d	t              fd
|_	        |j                  	d	fd	}||_
        d |_        d|_        t        |j                  dd            }| j                  |dgddgdgg       | j                  j                   g d       | j                  j"                  |g dfg       y )Nc                       t         _        y r   r.   r1   s   r   r3   zWTestDiscovery.test_find_tests_default_calls_package_load_tests.<locals>.restore_listdir   r4   r   c                  0     t         j                  _        y r   r6   r9   s   r   r;   zVTestDiscovery.test_find_tests_default_calls_package_load_tests.<locals>.restore_isfile   r<   r   c                  0     t         j                  _        y r   r>   r@   s   r   rB   zUTestDiscovery.test_find_tests_default_calls_package_load_tests.<locals>.restore_isdir   rC   r   r   c                 &    j                  d      S rG   rH   rJ   s    r   rL   zPTestDiscovery.test_find_tests_default_calls_package_load_tests.<locals>.<lambda>   rM   r   c                      yr   r   rR   s    r   rL   zPTestDiscovery.test_find_tests_default_calls_package_load_tests.<locals>.<lambda>   r|   r   c                 F    t         j                  j                  |       vS r   r   r   s    r   rL   zPTestDiscovery.test_find_tests_default_calls_package_load_tests.<locals>.<lambda>   r   r   c                        e Zd Zg Zg Zd Zd Zy)NTestDiscovery.test_find_tests_default_calls_package_load_tests.<locals>.Modulec                      | _          j                  j                  |       t        j                   j	                  |      dk(  r fd}| _        y y )Nr   c                 `    j                   j                  | ||f       j                  dz   gS r   r   r   s      r   r   zkTestDiscovery.test_find_tests_default_calls_package_load_tests.<locals>.Module.__init__.<locals>.load_tests   r   r   r   r   s   `  r   r   zWTestDiscovery.test_find_tests_default_calls_package_load_tests.<locals>.Module.__init__   r   r   c                 4    | j                   |j                   k(  S r   rR   r   s     r   r   zUTestDiscovery.test_find_tests_default_calls_package_load_tests.<locals>.Module.__eq__   r   r   Nr   r   r   r   r   r      r   r   r   c                      |       S r   r   r   s    r   rL   zPTestDiscovery.test_find_tests_default_calls_package_load_tests.<locals>.<lambda>   r   r   c                 >     | |      }|| j                   dz   gz   S r   rR   r[   s      r   r^   z[TestDiscovery.test_find_tests_default_calls_package_load_tests.<locals>.loadTestsFromModule   r   r   c                     | S r   r   ra   s    r   rL   zPTestDiscovery.test_find_tests_default_calls_package_load_tests.<locals>.<lambda>   rc   r   r!   rd   r   r   r   r   r   r   r   s          @@@@@@@r   0test_find_tests_default_calls_package_load_testsz>TestDiscovery.test_find_tests_default_calls_package_load_tests   sb   $$&::	*''..	-	+ K!2r2.
3
()&O'	/V 	/  (A$ 44	: &9"/ & V''
;<
 	5668:9:<	= 	M	O
 	//!2z23	5r   c                   	
 t         j                  

fd}| j                  |       t         j                  j                  		fd}| j                  |       t         j                  j
                  fd}| j                  |       | j                  t        j                  j                  t        d             t        d      dgt        d      ddgifd	}|t         _        d
 t         j                  _        d t         j                  _         G d dt              t        j                         }fd|_        d |_        t        d      |_        t        |j!                  t        d      d            }| j#                  |dg dggg       | j#                  j$                  ddg       | j#                  j&                  |g df|g dfg       y )Nc                       t         _        y r   r.   r1   s   r   r3   zTTestDiscovery.test_find_tests_customize_via_package_pattern.<locals>.restore_listdir  r4   r   c                  0     t         j                  _        y r   r6   r9   s   r   r;   zSTestDiscovery.test_find_tests_customize_via_package_pattern.<locals>.restore_isfile!  r<   r   c                  0     t         j                  _        y r   r>   r@   s   r   rB   zRTestDiscovery.test_find_tests_customize_via_package_pattern.<locals>.restore_isdir%  rC   r   r!   
my_package/foo/my_package__init__.pytest_module.pyc                      t        |          S r   rm   r7   vfss    r   list_dirzMTestDiscovery.test_find_tests_customize_via_package_pattern.<locals>.list_dir7      D	?"r   c                 &    | j                  d       S Nz.pyrP   rR   s    r   rL   zMTestDiscovery.test_find_tests_customize_via_package_pattern.<locals>.<lambda>:      u)=%= r   c                 $    | j                  d      S r   rP   rR   s    r   rL   zMTestDiscovery.test_find_tests_customize_via_package_pattern.<locals>.<lambda>;      dmmE&: r   c                        e Zd Zg Zg Zd Zd Zy)KTestDiscovery.test_find_tests_customize_via_package_pattern.<locals>.Modulec                      | _          j                  j                  |       |j                  d      r fd}| _        y  fd}| _        y )Ntest_modulec                 `    j                   j                  | ||f       j                  dz   gS r   r   r   s      r   r   zhTestDiscovery.test_find_tests_customize_via_package_pattern.<locals>.Module.__init__.<locals>.load_testsE  r   r   c                     j                   j                  | ||f       d}t        j                  j	                  |      }| j                  ||      }j                  dz   |g|z   S )Nz/foo/my_package/__init__.py	start_dirrZ   r   )r   r   r/   r7   dirnamediscover)r)   r   rZ   __file__this_dir	pkg_testsr   s         r   r   zhTestDiscovery.test_find_tests_customize_via_package_pattern.<locals>.Module.__init__.<locals>.load_testsI  sn    ,,33VUG4LM#@#%77??8#<$*OO&. %4 %A	 $		M 95   ) * *r   )r7   r   r   rQ   r   r   s   `  r   r   zTTestDiscovery.test_find_tests_customize_via_package_pattern.<locals>.Module.__init__A  sD     	

!!$'==/; #-* #-r   c                 4    | j                   |j                   k(  S r   rR   r   s     r   r   zRTestDiscovery.test_find_tests_customize_via_package_pattern.<locals>.Module.__eq__T  r   r   Nr   r   r   r   r   r   =  s    E O-&/r   r   c                      |       S r   r   r   s    r   rL   zMTestDiscovery.test_find_tests_customize_via_package_pattern.<locals>.<lambda>X  r   r   c                     | S r   r   ra   s    r   rL   zMTestDiscovery.test_find_tests_customize_via_package_pattern.<locals>.<lambda>Y  rc   r   rd   zmy_package load_testsz!my_package.test_module load_testszmy_package.test_module)r/   r0   rj   r7   r8   r?   sysremover   r   r"   r#   rk   rl   r$   rm   rn   r&   r   r   )r   r3   r;   rB   r   r)   rq   r   rA   r:   r2   r   s          @@@@@r   -test_find_tests_customize_via_package_patternz;TestDiscovery.test_find_tests_customize_via_package_pattern  s   
 ::	*(''..	-'	+&9 v()M;K+LN	#
=:	/V 	/4 $$&'@$/ ' V''DE
 	2B>?A B	C 	&(@A	C 	//!2z2!2z24	5r   c                 
  
 t        j                         }t        j                  j                  t        j                  j
                  fd}d t        j                  _        | j                  |       t        j                  d d  fd}| j                  |       t        j                  j                  t        j                  j                  d            }| j                  t              5  |j                  dd       d d d        | j                  |j                  |       | j                  |t        j                         d t        j                  _        d t        j                  _        fd	}| j                  |       g 

fd
}||_        t"        |_        |j                  ddd      }t        j                  j                  d      }t        j                  j                  d      }	| j                  |d       | j                  |j                  t        j                  j                  d             | j                  
|	dfg       | j                  |t        j                         y # 1 sw Y   sxY w)Nc                  0     t         j                  _        y r   r6   r9   s   r   r;   z3TestDiscovery.test_discover.<locals>.restore_isfilet  r<   r   c                      yr{   r   rR   s    r   rL   z-TestDiscovery.test_discover.<locals>.<lambda>w  r|   r   c                  ,     t         j                  d d  y r   )r   r7   )orig_sys_paths   r   restore_pathz1TestDiscovery.test_discover.<locals>.restore_path{  s    'CHHQKr   r!   /foo/bartop_level_dirc                      yr   r   rR   s    r   rL   z-TestDiscovery.test_discover.<locals>.<lambda>  r|   r   c                      yr   r   rR   s    r   rL   z-TestDiscovery.test_discover.<locals>.<lambda>  r|   r   c                  0     t         j                  _        y r   r>   r@   s   r   rB   z2TestDiscovery.test_discover.<locals>.restore_isdir  rC   r   c                 0    j                  | |f       dgS Nr   )r   )r   rZ   _find_tests_argss     r   rn   z0TestDiscovery.test_discover.<locals>._find_tests  s    ##Y$899r   z/foo/bar/bazrZ   z	['tests'])r"   r#   r/   r7   r8   r?   rj   r   r   normpathr'   ImportErrorr   r&   r$   assertInrn   strrl   )r   r)   r;   r   	full_pathrB   rn   rq   r   r   r   r   rA   r:   s             @@@@r   test_discoverzTestDiscovery.test_discovero  s   $$&''..	- ,'	(%GGOOBGG$4$4V$<=	{+ 	>OOJfO=	> 	..	:i**)	+&	 )	:F
3GGOON3	,..0GH)Y	,B+CDmSXX.7	> 	>s   3I88Jc                 4   t         j                  j                  t         j                  j                  t        j                  d d  fd}| j                  |       d t         j                  _        d t         j                  _        t        j                         }t        |_	        d}d}|j                  ||       | j                  |j                  d        dx|_        }|j                  ||       | j                  |j                  |       y )Nc                      t         j                  _         t         j                  _        t        j                  d d  y r   )r/   r7   r8   r?   r   )rA   r:   original_sys_paths   r   restorez[TestDiscovery.test_discover_should_not_persist_top_level_dir_between_calls.<locals>.restore  s&    ,BGGN*BGGM+CHHQKr   c                      yr   r   rR   s    r   rL   z\TestDiscovery.test_discover_should_not_persist_top_level_dir_between_calls.<locals>.<lambda>  r|   r   c                      yr   r   rR   s    r   rL   z\TestDiscovery.test_discover_should_not_persist_top_level_dir_between_calls.<locals>.<lambda>  r|   r   r   r!   r   z/previous/dir)r/   r7   r8   r?   r   rj   r"   r#   r  rl   r   r&   r$   )	r   r	  r)   rO   r   dir2rA   r:   r  s	         @@@r   <test_discover_should_not_persist_top_level_dir_between_callszJTestDiscovery.test_discover_should_not_persist_top_level_dir_between_calls  s    ''..HHQK	, 	 *)$$&=9..5'66=9..5r   c                    t        d      dgt        d      dgifd}| j                  t        t        dt        j                         |t        _        | j                  t        t        j
                  dt        j
                  j                         d t        j
                  _        | j                  t        t        j
                  d	t        j
                  j                         d
 t        j
                  _        | j                  t        j
                  j                  t        d              G d dt              t        j                         }fd|_        d |_        |j                  dd      }| j!                  |dgg       y )Nz	/toplevelstartdirz/toplevel/startdirr   c                      t        |          S r   r   r   s    r   r   z[TestDiscovery.test_discover_start_dir_is_package_calls_package_load_tests.<locals>.list_dir  r   r   r0   r8   c                 $    | j                  d      S r   rP   rR   s    r   rL   z[TestDiscovery.test_discover_start_dir_is_package_calls_package_load_tests.<locals>.<lambda>  r   r   r?   c                 &    | j                  d       S r   rP   rR   s    r   rL   z[TestDiscovery.test_discover_start_dir_is_package_calls_package_load_tests.<locals>.<lambda>  r   r   c                   &    e Zd Zg Zg Zd Zd Zd Zy)YTestDiscovery.test_discover_start_dir_is_package_calls_package_load_tests.<locals>.Modulec                     || _         y r   rR   )r   r7   s     r   r   zbTestDiscovery.test_discover_start_dir_is_package_calls_package_load_tests.<locals>.Module.__init__  s	     	r   c                 "    d| j                   z   gS )Nzload_tests called rR   )r   r)   r   rZ   s       r   r   zdTestDiscovery.test_discover_start_dir_is_package_calls_package_load_tests.<locals>.Module.load_tests  s    ,tyy899r   c                 4    | j                   |j                   k(  S r   rR   r   s     r   r   z`TestDiscovery.test_discover_start_dir_is_package_calls_package_load_tests.<locals>.Module.__eq__  r   r   N)r   r   r   r   r   r   r   r   r   r   r   r   r    s    E O!:/r   r   c                      |       S r   r   r   s    r   rL   z[TestDiscovery.test_discover_start_dir_is_package_calls_package_load_tests.<locals>.<lambda>  r   r   c                     | S r   r   ra   s    r   rL   z[TestDiscovery.test_discover_start_dir_is_package_calls_package_load_tests.<locals>.<lambda>  rc   r   r   zload_tests called startdir)r   rj   setattrr/   r0   r7   r8   r?   r   r   r   r"   r#   rk   rl   r   r&   )r   r   r)   rq   r   r   s       @@r   ;test_discover_start_dir_is_package_calls_package_load_testszITestDiscovery.test_discover_start_dir_is_package_calls_package_load_tests  s    {#j\+,}o?	#Y

;
(BGGNNC:'277==A=)=>	/V 	/ $$&'@$/ 4KP 	789	;r   c                     t         j                  fdt         _        t         j                  j                  d t         j                  _        t        j                  d d  fd}| j                  |       y )Nc                 
    gS r   r   )_fakefiles    r   rL   z8TestDiscovery.setup_import_issue_tests.<locals>.<lambda>  s	    z r   c                      yr   r   r  s    r   rL   z8TestDiscovery.setup_import_issue_tests.<locals>.<lambda>  r|   r   c                  l     t         j                  _        t         _        t        j                  d d  y r   )r/   r7   r8   r0   r   )r8   r0   r   s   r   r	  z7TestDiscovery.setup_import_issue_tests.<locals>.restore  s"    #BGGN BJ'CHHQKr   )r/   r0   r7   r8   r   rj   )r   r  r	  r8   r0   r   s    ` @@@r   setup_import_issue_testsz&TestDiscovery.setup_import_issue_tests  sK    **)
'	( 	 r   c                 `   | j                  t        t        dt        j                         | j                  t        t        j                  dt        j                  j
                         | j                  t        t        j                  dt        j                  j                         | j                  t        j                  j                  t        d       t        t        j                               fd}|t        _        d t        j                  _        d t        j                  _        y )Nr0   r8   r?   c                      t        |          S r   r   r   s    r   r   z@TestDiscovery.setup_import_issue_package_tests.<locals>.list_dir  r   r   c                 &    | j                  d       S r   rP   rR   s    r   rL   z@TestDiscovery.setup_import_issue_package_tests.<locals>.<lambda>  r   r   c                 $    | j                  d      S r   rP   rR   s    r   rL   z@TestDiscovery.setup_import_issue_package_tests.<locals>.<lambda>  r   r   )rj   r  r/   r0   r7   r8   r?   r   __setitem__slicerm   )r   r   r   s    ` r    setup_import_issue_package_testsz.TestDiscovery.setup_import_issue_package_tests  s    Y

;(BGGNNC'277==A,,eDk4>J	#
=:r   c                    t        j                         }| j                  d       |j                  d      }| j	                  t        j                         t        j                         | j                  |j                         d       | j                  g |j                         | j                  dt        |j                               |j                  d   }| j                  d|v d|z         t        t        |      d         d   }| j!                  t"              5   |j$                          d d d        y # 1 sw Y   y xY w)Ntest_this_does_not_exist.py.r   r   z6Failed to import test module: test_this_does_not_existmissing error string in %r)r"   r#   r#  r   r  r/   getcwdr   r7   r&   countTestCasesassertNotEqualerrorslen
assertTruerm   r'   r  test_this_does_not_exist)r   r)   rq   errortests        r   .test_discover_with_modules_that_fail_to_importz<TestDiscovery.test_discover_with_modules_that_fail_to_import  s    $$&%%&CD$biik388,--/3B.C./a DM(50	2 DKN#A&{+ 	,)D))+	, 	, 	,s   D::Ec                    t        d      dgt        d      ddgi}| j                  |       g fd}t        j                         }||_        |j                  t        d            }| j                  t        d      t        j                         | j                  |j                         d       | j                  g |j                         | j                  dt        |j                               |j                  d   }| j                  d	|v d
|z         t        t        |      d         d   }| j!                  t"              5   |j$                          d d d        | j                  dg       t'        t(        j*                  dz         D ]+  }t)        j,                  t)        j.                  ||             - y # 1 sw Y   gxY w)Nr!   r   r   r   r   c                 <    j                  |        t        d      )NzCannot import Name)r   r  r*   import_callss    r   rk   z`TestDiscovery.test_discover_with_init_modules_that_fail_to_import.<locals>._get_module_from_name  s    %233r   r   r   z(Failed to import test module: my_packager.  )r   r*  r"   r#   rk   r   r  r   r7   r&   r0  r1  r2  r3  r4  rm   r'   r  r   rangepickleHIGHEST_PROTOCOLloadsdumps)	r   r   rk   r)   rq   r6  r7  protor<  s	           @r   3test_discover_with_init_modules_that_fail_to_importzATestDiscovery.test_discover_with_init_modules_that_fail_to_import  s   v()M;K+LN--c2	4 $$&'<$0gfosxx0--/3B.C./a 6%?(50	2 DKN#A&{+ 	DOO	~6 622Q67 	4ELLdE23	4	 	s   	GG
c                 J   t         j                  j                  st        j                  d      t        j                         }d }||_        | j                  d       |j                  d      }| j                  |j                         d       t        j                         }|j                  |       | j                  t        |j                        d       t        t        j                   dz         D ]+  }t        j"                  t        j$                  ||             - y )NSuite cleanup is disabledc                 ,    t        j                  d      N	skipperoo)r"   SkipTest)r*   s    r   rk   zeTestDiscovery.test_discover_with_module_that_raises_SkipTest_on_import.<locals>._get_module_from_name1  s    ##K00r   ztest_skip_dummy.pyr-  r   )r"   BaseTestSuite_cleanuprI  r#   rk   r#  r   r&   r0  
TestResultrunr3  skippedr=  r>  r?  r@  rA  )r   r)   rk   rq   resultrB  s         r   8test_discover_with_module_that_raises_SkipTest_on_importzFTestDiscovery.test_discover_with_module_that_raises_SkipTest_on_import+  s    %%..##$?@@$$&	1'<$%%&:;$--/3$$&		&V^^,a0 622Q67 	5ELLeU34	5r   c                 L   t         j                  j                  st        j                  d      t	        d      dgt	        d      ddgi}| j                  |       g fd}t        j                         }||_        |j                  t	        d            }| j                  t	        d      t        j                         | j                  |j                         d       t        j                         }|j                  |       | j                  t!        |j"                        d       | j                  |j$                  d       | j                  dg       t'        t(        j*                  dz         D ]+  }t)        j,                  t)        j.                  ||             - y )	NrE  r!   r   r   r   r   c                 P    j                  |        t        j                  d      rG  )r   r"   rI  r;  s    r   rk   zjTestDiscovery.test_discover_with_init_module_that_raises_SkipTest_on_import.<locals>._get_module_from_nameJ  s"    %##K00r   r   )r"   rJ  rK  rI  r   r*  r#   rk   r   r  r   r7   r&   r0  rL  rM  r3  rN  testsRunr=  r>  r?  r@  rA  )r   r   rk   r)   rq   rO  rB  r<  s          @r   =test_discover_with_init_module_that_raises_SkipTest_on_importzKTestDiscovery.test_discover_with_init_module_that_raises_SkipTest_on_importB  sJ   %%..##$?@@v()M;K+LN--c2	1 $$&'<$0gfosxx0--/3$$&		&V^^,a0!,~6 622Q67 	5ELLeU34	5r   c                     t               }g }|j                  |_        |j                  ddg       | j	                  |g g       g |d d  |j                  g d       | j	                  |ddgg       y )N	somethingr   )rV  r   foobarrW  rX  )r   r   _do_discovery	parseArgsr&   r   programargss      r   $test_command_line_handling_parseArgsz2TestDiscovery.test_command_line_handling_parseArgs]  so    %' $;
34t$QAB/0r   c                 h   t               }g }|j                  |_        |j                  dg       | j	                  |g g       | j	                  |j
                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j                  d       y )NrV  r   F
r   r   rY  rZ  r&   r   assertIsr   r   r   r[  s      r   .test_command_line_handling_discover_by_defaultz<TestDiscovery.test_command_line_handling_discover_by_defaulti  s    %' $;-(t$**A.gnne,g((%0g&&.r   c                 j   t               }g }|j                  |_        |j                  g d       | j	                  |g g       | j	                  |j
                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j                  d       y )N)rV  -vz-brd  -c-f   Tr`  r[  s      r   ;test_command_line_handling_discover_by_default_with_optionszITestDiscovery.test_command_line_handling_discover_by_default_with_optionsu  s    %' $EFt$**A.gnnd+g(($/g&&-r   c                 ~   t               }d |_        t        j                         5 }| j	                  t
              5 }|j                  g d       d d d        d d d        | j                  j                  j                  d       | j                  dj                                y # 1 sw Y   XxY w# 1 sw Y   \xY w)N)onetwothreefour)rg  zusage:)r   r   r   captured_stderrr'   
SystemExitrY  r&   	exceptionr]  r  getvalue)r   r\  stderrcms       r   :test_command_line_handling_do_discovery_too_many_argumentszHTestDiscovery.test_command_line_handling_do_discovery_too_many_arguments  s    %'!$$& 	C&z*	C.0!!"AB	C 	C 	**D1h 12	C 	C 	C 	Cs"   B3B'B3'B0	,B33B<c                     t         j                  t        j                        }|j	                           G d dt               } |       |_        |j                  dg       | j                  |j                  dg       y )Nc                       e Zd Zg Zd Zy)YTestDiscovery.test_command_line_handling_do_discovery_uses_default_loader.<locals>.Loaderc                 @    | j                   j                  |||f       yr   r]  r   r   r   rZ   r   s       r   r   zbTestDiscovery.test_command_line_handling_do_discovery_uses_default_loader.<locals>.Loader.discover      		  )Wm!DEr   Nr   r   r   r]  r   r   r   r   Loaderrw        Dr   r}  rd  r-  rd   N)	r   __new__r"   TestProgram_initArgParsersr   rY  r&   r]  r   r\  r}  s      r   ;test_command_line_handling_do_discovery_uses_default_loaderzITestDiscovery.test_command_line_handling_do_discovery_uses_default_loader  sb    ..!5!56!	V 	 $Xtf%'>&?@r   c                    t               } G d dt              }|j                  dg|       | j                  |j                  d       | j                  |j
                  d       | j                  |j                  dg       g |_        t               }|j                  dg|       | j                  |j
                  d       | j                  |j                  dg       g |_        t               }|j                  g |       | j                  |j
                  d       | j                  |j                  dg       g |_        t               }|j                  d	g|       | j                  |j
                  d       | j                  |j                  d
g       g |_        t               }|j                  d	dg|       | j                  |j
                  d       | j                  |j                  dg       g |_        t               }|j                  g d|       | j                  |j
                  d       | j                  |j                  dg       g |_        t               }|j                  dd	g|       | j                  |j
                  d       | j                  |j                  d
g       g |_        t               }|j                  dd	g|       | j                  |j
                  d       | j                  |j                  dg       g |_        t               }|j                  dd	g|       | j                  |j
                  d       | j                  |j                  dg       | j                  |j                         | j                  |j                         g |_        t               }|j                  g d|       | j                  |j
                  d       | j                  |j                  dg       | j                  |j                  d       | j                  |j                         | j                  |j                         y )Nc                       e Zd Zg Zd Zy)RTestDiscovery.test_command_line_handling_do_discovery_calls_loader.<locals>.Loaderc                 @    | j                   j                  |||f       yr   ry  rz  s       r   r   z[TestDiscovery.test_command_line_handling_do_discovery_calls_loader.<locals>.Loader.discover  r{  r   Nr|  r   r   r   r}  r    r~  r   r}  rd  )r}  rg  r   r  z	--verbosefish)r  rd   Neggs)r  r  N)r  r  ham-sz-t)r-  rd   r  -p)r-  r  N)r  r  r  r  rd  rf  re  )r   r   rY  r&   r   r7  r]  assertFalser   r   r4  r  s      r   4test_command_line_handling_do_discovery_calls_loaderzBTestDiscovery.test_command_line_handling_do_discovery_calls_loader  s   %'	V 	 	tfV4**A.w/'>&?@%'{mF;w/'>&?@%'b0w/'>&?@%'vhv6w/'A&BC%'vv.v>w/'=&>?%'5fEw/'>&?@%'tVnV<w/'A&BC%'tVnV<w/'@&AB%'tVnV<w/':&;<))*++,%'L%+ 	 	-w/'=&>?**A.(()**+r   c                 ~  	
  G d dt               }|t        j                  d<   t        j                  j                  d      t        j                  	t        j                  j                  t        j                  j                  t        j                  j                  
	
fd}| j                  |       d }d }d }|t        _        |t        j                  _        |t        j                  _        t        j                  dk(  r-t        j                  j
                  t        j                  _	        S )	Nc                       e Zd ZdZy)0TestDiscovery.setup_module_clash.<locals>.Modulez
bar/foo.pyN)r   r   r   r   r   r   r   r   r    s    #Hr   r   rW  c                      t         _        t         j                  _        t         j                  _        t         j                  _        t        j                  d=  t        j                  v r t        j                  j                          y y )NrW  )	r/   r0   r7   r8   r?   realpathr   modulesr   )r  rA   r:   r2   original_realpaths   r   cleanupz1TestDiscovery.setup_module_clash.<locals>.cleanup  sY    )BJ,BGGN*BGGM0BGGE"CHH$	* %r   c                     dgS Nfoo.pyr   r!  s    r   r0   z1TestDiscovery.setup_module_clash.<locals>.listdir  s
    :r   c                      yr   r   r!  s    r   r8   z0TestDiscovery.setup_module_clash.<locals>.isfile      r   c                      yr   r   r!  s    r   r?   z/TestDiscovery.setup_module_clash.<locals>.isdir  r  r   nt)r   r   r  r/   r7   r   r0   r8   r?   r  rj   r*   )r   r   r  r0   r8   r?   r  rA   r:   r2   r  s         @@@@@r   setup_module_clashz TestDiscovery.setup_module_clash  s    	$V 	$#EGGOOE*	::''..GG,,	+ 	+ 	 			
77d?  "wwBGGr   c                    | j                         }t        j                         }t        j                  j                  d      }t        j                  j                  d      }t        j                  d|d|d      }| j                  t        d|z  |j                  dd       | j                  t        j                  d	   |       y )
NrX  rW  z''foo' module incorrectly imported from z. Expected z$. Is this module globally installed?z^%s$r  r   r   )r  r"   r#   r/   r7   r   reescapeassertRaisesRegexr  r   r&   r   )r   r  r)   mod_direxpected_dirmsgs         r   test_detect_module_clashz&TestDiscovery.test_detect_module_clash	  s    ++-	$$&''//%(wwu-ii8?O P#vX 	 	
 	!i0r   c                    | j                         }t        j                  j                  t        j                  j	                  d      t        j                  j	                  d      fd}| j                  |       fd}|t        j                  _        t        j                         }|j                  dd       y )NrX  rW  c                  0     t         j                  _        y r   )r/   r7   r  )r  s   r   r  z5TestDiscovery.test_module_symlink_ok.<locals>.cleanup  s    0BGGr   c                     | t         j                  j                  d      k(  r t         j                  j                  d      S | S r  )r/   r7   join)r7   r  r  s    r   r  z6TestDiscovery.test_module_symlink_ok.<locals>.realpath#  s4    rww||GX66ww||L(;;Kr   r  r   )	r  r/   r7   r  r   rj   r"   r#   r   )r   r  r  r  r)   r  r  r  s        @@@r   test_module_symlink_okz$TestDiscovery.test_module_symlink_ok  s    ++-	GG,,''//%(wwu-	1 	 $$$&%:r   c                     t        j                         } gt        j                  j	                  t        j                  j                  t        j                  j                              d _	         fd}||_
        |j                  d      } j                   j                          j                  |j                         y )NFc                 :    d_         j                  |        S r   )wasRunr&   )r   rZ   expectedPathr   r   s     r   rn   zBTestDiscovery.test_discovery_from_dotted_path.<locals>._find_tests2  s    DKY5Lr   ztest.test_unittest)r"   r#   r/   r7   r   r   r7  test_unittestr   r  rn   r   r4  r&   _tests)r   r)   rn   rq   r  r   s   `   @@r   test_discovery_from_dotted_pathz-TestDiscovery.test_discovery_from_dotted_path+  s    $$&wwrwwt7I7I7R7R'ST	 ) 45$u-r   c                    t        j                         }t        j                  d t        _        t        j                  j
                  t        j                  j                  d t        j                  _        t        j                  d d  fd}| j                  |       | j                  t              5 }|j                  d       d d d        | j                  t        j                        d       y # 1 sw Y   /xY w)Nc                     dgS )Nr,  r   r!  s    r   rL   zOTestDiscovery.test_discovery_from_dotted_path_builtin_modules.<locals>.<lambda>A  s
     => r   c                      yr{   r   r!  s    r   rL   zOTestDiscovery.test_discovery_from_dotted_path_builtin_modules.<locals>.<lambda>D  r|   r   c                      t         j                  _         t         j                  _        t         _        t
        j                  d d  y r   )r/   r7   r8   r?   r0   r   )r?   r8   r0   r   s   r   r	  zNTestDiscovery.test_discovery_from_dotted_path_builtin_modules.<locals>.restoreF  s-    #BGGN!BGGM BJ'CHHQKr   r   z2Can not use builtin modules as dotted module names)r"   r#   r/   r0   r7   r8   r?   r   rj   r'   	TypeErrorr   r&   r  rp  )r   r)   r	  rs  r?   r8   r0   r   s       @@@@r   /test_discovery_from_dotted_path_builtin_modulesz=TestDiscovery.test_discovery_from_dotted_path_builtin_modules<  s    $$&**>
'	(
 	 y) 	#ROOE"	#R\\*2	3	# 	#s    D  D	c           	      T   ddl m} t        j                         }t	        j
                  d      fd}t        j                  j                  d|      5  t        j                         5  |j                  d      5  | j                  t              5 }|j                  d       d d d        | j                  t        j                         dj#                               d d d        d d d        d d d        y # 1 sw Y   VxY w# 1 sw Y   &xY w# 1 sw Y   *xY w# 1 sw Y   y xY w)Nr   )utilpackagec                 .    t         j                  | <   S r   )r   r  )packagenamer]  kwargsr  s      r   _importz>TestDiscovery.test_discovery_failed_discovery.<locals>._importY  s    '.CKK$Nr   zbuiltins.__import__z$don't know how to discover from {!r})test.test_importlibr  r"   r#   types
ModuleTypemockpatchr   DirsOnSysPathuncacher'   r  r   r&   r  rp  format)r   r  r)   r  rs  r  s        @r   test_discovery_failed_discoveryz-TestDiscovery.test_discovery_failed_discoveryS  s    ,$$&""9-	 ]]  !6@ 		7,,. 7\\), 7**95 3	23$$S%6%L&,fWo777		7 		7
3 37 77 7		7 		7sT   D+D=DC:	%<D!D)D:D?DDDD	DD'N)r   r   r   r+   rs   r   r   r   r   r  r  r  r#  r*  r8  rC  rP  rT  r^  rb  rh  rt  r  r  r  r  r  r  r  r  r   r   r   r   r      s    61*f&$PH2TE5NV5p,/\60+;Z
!	;,(4<5.56
1
/
.	3AH,T!F1;(."3.7r   r   __main__)os.pathr/   r   r  r   r  r>  r7  r   test.supportr   r"   unittest.mocktest.test_unittestr  r   TestCaser   r   mainr   r   r   <module>r     sg      	 
    &   	(.. 	K7H%% K7\ zHMMO r   