
    /hh               	       4   S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SK	r	S SK
r
S SKrS SKrS SKrS SKrS SKJrJr   S SKJr  S SKJr  S SKJr  \" 5         SrS SKJr  S S	KJr  S S
KJr  S SK J!r!  S SK J"r"  S SK#J$r$  S r%S r&S r' " S S5      r( " S S\(\RR                  \"SS9r* " S S\(\RR                  \"SS9r+\RX                  " \RZ                  S5       " S S\RR                  5      5       r. " S S5      r/ " S S\/\RR                  \"SS9r0 " S S \/\RR                  \"SS9r1\Rd                   " S! S"5      5       r3 " S# S$\3\RR                  \"SS9r4 " S% S&\3\RR                  \"SS9r5\6S':X  a  \Rn                  " 5         gg! \\4 a    Sr GN9f = f)(    N)mock
skipUnless)_cleanup_tests)ProcessPoolExecutor)_check_system_limitsTF)support)	os_helper)script_helper)without_source_date_epoch)SourceDateEpochTestMeta)FakePathc                 N    U(       d  Sn[         R                  R                  XS9$ )N optimization)	importlibutilcache_from_sourcescriptopts     =/opt/python-3.13.8/usr/lib/python3.13/test/test_compileall.pyget_pycr   $   s"    >>++F+EE    c                 D    S Vs/ s H  n[        X5      PM     sn$ s  snf )Nr         )r   r   s     r   get_pycsr   +   s    ,56ISGF I666s   c                     [         R                  " U 5      R                  n[         R                  " U5      R                  nX#:H  $ )z8Returns True if two files have the same inode (hardlink))osstatst_ino)	filename1	filename2inode1inode2s       r   is_hardlinkr(   /   s3    WWY&&FWWY&&Fr   c                      \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS r\" \S5      \R6                  " S5      S 5       5       rS r\" \S5      \R6                  " S5      S 5       5       r\" \S5      \R6                  " S5      \R6                  " S5      S 5       5       5       r\" \S5      \R6                  " SSS9\R6                  " S5      S 5       5       5       r S  r!S!S".S# jr"S$ r#\" \S5      S% 5       r$S& r%\" \S5      S' 5       r&S( r'S) r(S* r)S+ r*S, r+S- r,\-R\                  S. 5       r/S/r0g)0CompileallTestsBase6   c                 *   [         R                  " 5       U l        U R                  [        R
                  U R                  5        [        R                  R                  U R                  S5      U l	        [        R                  R                  U R                  5      U l        [        U R                  SSS9 nUR                  S5        S S S 5        [        R                  R                  U R                  S5      U l        [        R                  R                  U R                   5      U l        [        R$                  " U R                  U R                   5        [        R                  R                  U R                  S5      U l        [        R(                  " U R&                  5        [        R                  R                  U R&                  S5      U l        [        R$                  " U R                  U R*                  5        g ! , (       d  f       GNA= f)	N_test.pywutf-8encodingzx = 123
z	_test2.py_subdirz	_test3.py)tempfilemkdtemp	directory
addCleanupshutilrmtreer!   pathjoinsource_pathr   r   r   bc_pathopenwritesource_path2bc_path2copyfilesubdirectorymkdirsource_path3selffiles     r   setUpCompileallTestsBase.setUp8   sB   !))+t~~677<<
C ~~778H8HI$""C':dJJ{# ;GGLLE!889J9JK(($*;*;<GGLLC
""#GGLL):):KH(($*;*;< ;:s   7H
Hc                     [         R                  R                  U R                  S5      U l        [        U R                  SSS9 nUR                  S5        S S S 5        g ! , (       d  f       g = f)Nz_test_bad.pyr.   r/   r0   zx (
)r!   r9   r:   r5   bad_source_pathr=   r>   rE   s     r   add_bad_source_file'CompileallTestsBase.add_bad_source_fileH   sI    !ww||DNNNK$&&g>$JJw ?>>s   A  
A.c                 Z   [        U R                  S5       nUR                  S5      nS S S 5        [        [        R
                  " U R                  5      R                  5      n[        R                  " S[        R                  R                  SUS-  5      nWU4$ ! , (       d  f       Ny= f)Nrb   <4sLLr       )r=   r<   readintr!   r"   r;   st_mtimestructpackr   r   MAGIC_NUMBER)rF   rG   datamtimecompares        r   timestamp_metadata&CompileallTestsBase.timestamp_metadataM   s|    $,,%99R=D &BGGD,,-667++gy~~'B'BA#k13W} &%s   B
B*c                 z    [         R                  " U R                  S5        [        R                  " [        R                  " 5       5         U R                  [        R                  " U R                  5      5        S S S 5        g ! [        [        4 a    U R                  S5         Nf = f! , (       d  f       g = f)N)rR   rR   z0filesystem doesn't support timestamps near 2**32r!   utimer;   OverflowErrorOSErrorskipTest
contextlibredirect_stdoutioStringIO
assertTrue
compileallcompile_filerF   s    r    test_year_2038_mtime_compilation4CompileallTestsBase.test_year_2038_mtime_compilationU   s    	NHHT%%'=> ''6OOJ33D4D4DEF 76 w' 	NMMLM	N66   !B 0B,!B)(B),
B:c                 z    [         R                  " U R                  S5        [        R                  " [        R                  " 5       5         U R                  [        R                  " U R                  5      5        S S S 5        g ! [        [        4 a    U R                  S5         Nf = f! , (       d  f       g = f)N)         rp   z+filesystem doesn't support large timestampsr_   rk   s    r   test_larger_than_32_bit_times1CompileallTestsBase.test_larger_than_32_bit_times_   s    	IHHT%%~6 ''6OOJ33D4D4DEF 76 w' 	IMMGH	I66rn   c                    [         R                  R                  S5      (       a  [        R                  " S5      e[
        R                  " U R                  5        U R                  " U R                  5       6   [        U R                  S5       nUR                  5       [        U5      S nSSS5        [        U R                  S5       nUR                  U5        UR                  W5        SSS5        U R                  " U R                  5       6   [         R"                  " U R$                  SSS9  U R&                  " U R                  5       6   g! , (       d  f       N= f! , (       d  f       Nz= f)	zGCheck that compileall recreates bytecode when the new metadata is
used.SOURCE_DATE_EPOCHzSOURCE_DATE_EPOCH is setrO   NwbFTforcequiet)r!   environgetunittestSkipTest
py_compilecompiler;   assertEqualr\   r=   r<   rS   lenr>   assertNotEqualri   compile_dirr5   rh   )rF   metadatarG   bcs       r   recreation_check$CompileallTestsBase.recreation_checki   s     ::>>-..##$>??4++,$1134$,,%S]^,B &$,,%JJx JJrN & 	T4467t~~U$G0023 &%%%s   E	#E 
E 
E.c                     U R                  [        R                  " S[        R                  R
                  SS5      5        g )NrQ   r   r   )r   rV   rW   r   r   rX   rk   s    r   
test_mtimeCompileallTestsBase.test_mtimey   s.    fkk'9>>3N3N*+Q0 	1r   c                 &    U R                  S5        g )Ns       )r   rk   s    r   test_magic_number%CompileallTestsBase.test_magic_number~   s    k*r   c                    U R                   U R                  4 H  n [        R                  " U5        M     U R	                  [
        R                  " U R                  SSS95        U R	                  [        R                  R                  U R                   5      =(       a.    [        R                  R                  U R                  5      (       + 5        [        R                  " U R                   5        U R	                  [
        R                  " U R                  SSS95        U R	                  [        R                  R                  U R                   5      =(       a)    [        R                  R                  U R                  5      5        [        R                  " U R                   5        [        R                  " U R                  5        U R                  5         U R                  [
        R                  " U R                  SSS95        U R                  [
        R                  " U R                  SSS95        g !    GM&  = f)NFTrv   r   )r<   r@   r!   unlinkrh   ri   rj   r;   r9   isfiler   r5   rL   assertFalserK   )rF   fns     r   test_compile_files&CompileallTestsBase.test_compile_files   s   <</B		" 0
 	
//0@0@6;4I 	Jt||4 :GGNN4==99	;
		$,,
..t~~U59; 	<t||4 6t}}5	7
		$,,
		$--   "001E1E7<AG 	H//6;1F 	G#s   H99H?c                    U R                  [        R                  R                  U R                  5      5        [
        R                  " 5        nU R                  [        R                  " [        U R                  5      5      5        S S S 5        U R                  WR                  5       S5        U R                  [        R                  R                  U R                  5      5        g ! , (       d  f       Ng= f)Nz&Compiling ([^WindowsPath|PosixPath].*))r   r!   r9   r   r<   r   captured_stdoutrh   ri   rj   r   r;   assertRegexgetvalue)rF   stdouts     r   test_compile_file_pathlike.CompileallTestsBase.test_compile_file_pathlike   s    56$$&&OOJ33HT=M=M4NOP '*,UVt||45 '&s   9C((
C6c                 f   U R                  [        R                  R                  U R                  5      5        U R                  [        R                  " [        U R                  5      [        S5      SS95        U R                  [        R                  R                  U R                  5      5        g )N	ddir_pathr   )ddirrx   
r   r!   r9   r   r<   rh   ri   rj   r   r;   rk   s    r   test_compile_file_pathlike_ddir3CompileallTestsBase.test_compile_file_pathlike_ddir   sq    56
//9I9I0J5=k5J679 	: 	t||45r   c                 f   U R                  [        R                  R                  U R                  5      5        U R                  [        R                  " [        U R                  5      [        S5      SS95        U R                  [        R                  R                  U R                  5      5        g Nstripdir_pathr   )stripdirrx   r   rk   s    r   #test_compile_file_pathlike_stripdir7CompileallTestsBase.test_compile_file_pathlike_stripdir   sq    56
//9I9I0J9A/9R679 	: 	t||45r   c                 f   U R                  [        R                  R                  U R                  5      5        U R                  [        R                  " [        U R                  5      [        S5      SS95        U R                  [        R                  R                  U R                  5      5        g Nprependdir_pathr   )
prependdirrx   r   rk   s    r   %test_compile_file_pathlike_prependdir9CompileallTestsBase.test_compile_file_pathlike_prependdir   sr    56
//9I9I0J;CDU;V679 	: 	t||45r   c           	         [         R                  R                  R                  U R                  /S9   U R                  [        R                  " SS95        S S S 5        [         R                  R                  R                  U R                  /S9   U R                  5         U R                  [        R                  " SSSS95        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nr9   r   rx   FT)skip_curdirrw   rx   )
testtest_importlibr   import_stater5   rh   ri   compile_pathrL   r   rk   s    r   test_compile_path%CompileallTestsBase.test_compile_path   s      %%228H2IOOJ33!<= J   %%228H2I$$&Z44;?qJ K JI JI JIs   $C6C!
C!
C/c                    [         R                  R                  U R                  S5      n[         R                  R                  US5      n[         R                  " U5        [        US5          S S S 5        [        R                  " U5        U R                  [         R                  R                  [         R                  R                  US5      5      5        g ! , (       d  f       Nq= f)NrY   rG   ru   __pycache__)
r!   r9   r:   r5   rC   r=   ri   rj   r   exists)rF   data_dir	data_files      r   test_no_pycache_in_non_package2CompileallTestsBase.test_no_pycache_in_non_package   s     77<<7GGLL62	
)T" #	*X}(MNO #"s   -C
C(c                    U R                  5         [        R                  " [        R                  " 5       5         U R                  [        R                  " U R                  5      5        S S S 5        g ! , (       d  f       g = fN)	rL   rd   re   rf   rg   r   ri   rj   rK   rk   s    r   #test_compile_file_encoding_fallback7CompileallTestsBase.test_compile_file_encoding_fallback   sM      "''6Z44T5I5IJK 766s   0A33
Bc                 P   Su  p[         R                  " U R                  SUS9  [        R                  R                  U R                  US9nU R                  [        R                  R                  U5      5        [        R                  R                  U R                  US9nU R                  [        R                  R                  U5      5        [        R                  R                  U R                  US9nU R                  [        R                  R                  U5      5        g )NT)r   r   rx   optimizer   )ri   r   r5   r   r   r   r;   rh   r!   r9   r   r?   rD   )rF   r   r   cachedcached2cached3s         r   test_optimize!CompileallTestsBase.test_optimize   s     t~~THM11$2B2B?B 2 Dv./..2243D3D@C 3 Ew/0..2243D3D@C 3 Ew/0r   c                    U R                  [        R                  R                  U R                  5      5        [
        R                  " 5        n[        R                  " [        U R                  5      5        S S S 5        WR                  5       R                  5       S   nU R                  US5        U R                  [        R                  R                  U R                  5      5        g ! , (       d  f       Nz= f)Nr   z$Listing ([^WindowsPath|PosixPath].*))r   r!   r9   r   r<   r   r   ri   r   r   r5   r   
splitlinesr   rh   )rF   r   lines      r   test_compile_dir_pathlike-CompileallTestsBase.test_compile_dir_pathlike   s    56$$&&""8DNN#;< ' ++-a0FGt||45	 '&s   *C,,
C:c                 f   U R                  [        R                  R                  U R                  5      5        U R                  [        R                  " [        U R                  5      [        S5      SS95        U R                  [        R                  R                  U R                  5      5        g r   
r   r!   r9   r   r<   rh   ri   r   r   r5   rk   s    r   "test_compile_dir_pathlike_stripdir6CompileallTestsBase.test_compile_dir_pathlike_stripdir   so    56
..x/G8@8Q568 	9 	t||45r   c                 f   U R                  [        R                  R                  U R                  5      5        U R                  [        R                  " [        U R                  5      [        S5      SS95        U R                  [        R                  R                  U R                  5      5        g r   r   rk   s    r   $test_compile_dir_pathlike_prependdir8CompileallTestsBase.test_compile_dir_pathlike_prependdir   sp    56
..x/G:BCT:U568 	9 	t||45r   requires multiprocessingz&concurrent.futures.ProcessPoolExecutorc                 z    [         R                  " U R                  SSS9  U R                  UR                  5        g NT   rx   workersri   r   r5   rh   calledrF   	pool_mocks     r   test_compile_pool_called,CompileallTestsBase.test_compile_pool_called   s,     	t~~T1E	(()r   c                     U R                  [        S5         [        R                  " U R                  SS9  S S S 5        g ! , (       d  f       g = f)Nz%workers must be greater or equal to 0)r   )assertRaisesRegex
ValueErrorri   r   r5   rk   s    r   !test_compile_workers_non_positive5CompileallTestsBase.test_compile_workers_non_positive   s=    ##J$KM""4>>2>M M Ms    A  
Ac                     [         R                  " U R                  SSS9  U R                  UR                  S   S   S 5        g )NTr   r   r   max_workers)ri   r   r5   r   	call_argsr   s     r   test_compile_workers_cpu_count2CompileallTestsBase.test_compile_workers_cpu_count  s:     	t~~T1E,,Q/>Er   zcompileall.compile_filec                     [         R                  " U R                  SS9  U R                  UR                  5        U R                  UR                  5        g )NTr   )ri   r   r5   r   r   rh   )rF   compile_file_mockr   s      r   test_compile_one_worker+CompileallTestsBase.test_compile_one_worker  s?     	t~~T:))*)001r   Nnewc                 z    [         R                  " U R                  SSS9  U R                  UR                  5        g r   r   )rF   r   s     r   $test_compile_missing_multiprocessing8CompileallTestsBase.test_compile_missing_multiprocessing  s-     	t~~T1E)001r   c                    SnU R                   n[        SUS-   5       H}  n[        R                  R	                  USU 35      n[        R                  R	                  US5      n[        R
                  " U5        [        R                  " U R                  U5        M     [        R                  R                  W5      n[        R                  " U R                   SUS-
  S9  U R                  [        R                  R                  U5      5        [        R                  " U R                   SUS9  U R!                  [        R                  R                  U5      5        g )N   r   dir_z	script.pyT)rx   	maxlevels)r5   ranger!   r9   r:   rC   r7   rA   r;   r   r   r   ri   r   r   r   rh   )rF   depthr9   isourcepyc_filenames         r   test_compile_dir_maxlevels.CompileallTestsBase.test_compile_dir_maxlevels  s    ~~q%!)$A77<<QCj1DWW\\$4FHHTNOOD,,f5	 %
 !~~77?t~~TUQYO56t~~TUK|45r   T)parallelc                   SS/nU R                   n/ nU Hw  n[        R                  R                  XF5      n[        R                  " U5        [
        R                  " USS5        UR                  [
        R                  " USS5      5        My     U(       a  U R                  [        5        [        R                  " U R                   SUU(       a  SOS	S
9  U R                  U5        U GH  nU R                  UR                  U R                   5      U5        [        R                  R!                  U5      nU[#        U R                   [        R$                  -   5      S n	[
        R&                  " U5      u    p[        R                  R                  X5      n[(        R*                  R                  R-                  U5      nU R/                  UR0                  U5        U R3                  SU S3[        R4                  " U5      5        GM!     g)z@Recursive compile_dir ddir must contain package paths; bpo39769.r   foo__init__r   modzdef fn(): 1/0
fn()
Tr   r   )rx   r   r   N")r5   r!   r9   r:   rC   r
   make_scriptappendr6   multiprocessing_cleanup_testsri   r   rh   
startswithr   r   r   r   sepassert_python_failurer   r   get_code_from_pycr   co_filenameassertInfsdecode)rF   r   r  fullpathr9   modssubdirr  modcodemodpath_errexpected_inmod_code_objs                 r   _test_ddir_only#CompileallTestsBase._test_ddir_only+  s   E?~~F77<<-DHHTN%%dJ;KK11$2IK L	  OO9:d%1	. 	COOCNN4>>:C@nn66s;G#dnnRVV3456G%;;GDIAq'',,t5K..33EEgNL\55{CMMAk]!,bkk#.>? r   c                 "    U R                  SSS9$ )=Recursive compile_dir ddir= contains package paths; bpo39769.
<a prefix>Fr   r  r  rk   s    r   test_ddir_only_one_worker-CompileallTestsBase.test_ddir_only_one_workerH  s    ###FFr   c                 "    U R                  SSS9$ )r  r  Tr  r   rk   s    r   test_ddir_multiple_workers.CompileallTestsBase.test_ddir_multiple_workersL  s     ###EEr   c                 "    U R                  SSS9$ )?Recursive compile_dir ddir='' contains package paths; bpo39769.r   Fr  r   rk   s    r   test_ddir_empty_only_one_worker3CompileallTestsBase.test_ddir_empty_only_one_workerQ  s    ##e#<<r   c                 "    U R                  SSS9$ )r'  r   Tr  r   rk   s    r    test_ddir_empty_multiple_workers4CompileallTestsBase.test_ddir_empty_multiple_workersU  s     ##d#;;r   c                    / SQn[         R                  R                  " U R                  /UQ76 n[         R                  " U5        [
        R                  " USS5      n[        R                  R                  U5      n[         R                  R                  " U R                  /US S Q76 n[        R                  " USUS9  [
        R                  " U5      u  pgn[         R                  R                  " USS  6 n	U R                  U	[        U[        R                   " 5       S95        U R#                  U[        U[        R                   " 5       S95        g )Nr   buildrealr9   r   1 / 0r   Trx   r   r0   r!   r9   r:   r5   makedirsr
   r  r   r   r   ri   r   r  r  strsysgetdefaultencodingassertNotIn)
rF   r  r9   r   r   r   rcoutr  r  s
             r   test_strip_only#CompileallTestsBase.test_strip_onlyZ  s    4ww||DNN6X6
D**4A^^--f577<<>"1>t4(C$::2>ggllHQRL1c4467	
 	c4467	
r   c                    / SQn[         R                  R                  " U R                  /UQ76 n[         R                  " U5        [
        R                  " USS5      n[        R                  R                  U5      n[         R                  R                  " U R                  /US S S/-   Q76 n[        R                  " 5        n[        R                  " USUS9  S S S 5        U R                  SWR                  5       5        [
        R                   " U5      u  pvn[         R                  R                  " U R                  /USS  Q76 n	U R                  U[#        U[$        R&                  " 5       S	95        U R)                  U	[#        U[$        R&                  " 5       S	95        U R)                  U[#        U[$        R&                  " 5       S	95        g ! , (       d  f       N= f)
Nr.  r   r1  r   fakeTr2  znot a valid prefixr0   )r!   r9   r:   r5   r4  r
   r  r   r   r   r   r   ri   r   r  r   r  r5  r6  r7  r8  )
rF   r  r9   r   r   r   r:  r9  r  expected_not_ins
             r   test_strip_only_invalid+CompileallTestsBase.test_strip_only_invalidm  sd   4ww||DNN6X6
D**4A^^--f577<<K(2A,&2IK$$&#""4thG '*CLLN;$::2>'',,t~~EEc4467	
 	c4467	
 	c4467	
 '&s   G
G c                    / SQn[         R                  R                  " U R                  /UQ76 n[         R                  " U5        [
        R                  " USS5      n[        R                  R                  U5      nSn[        R                  " USUS9  [
        R                  " U5      u  pgn[         R                  R                  " XPR                  /UQ76 n	U R                  U	[        U[        R                   " 5       S95        g )Nr.  r   r1  /fooT)rx   r   r0   )r!   r9   r:   r5   r4  r
   r  r   r   r   ri   r   r  r  r5  r6  r7  )
rF   r  r9   r   r   r   r9  r:  r  r  s
             r   test_prepend_only%CompileallTestsBase.test_prepend_only  s    4ww||DNN6X6
D**4A^^--f5
t4JG$::2>ggll:~~IIc4467	
r   c                    / SQn[         R                  R                  " U R                  /UQ76 n[         R                  " U5        [
        R                  " USS5      n[        R                  R                  U5      n[         R                  R                  " U R                  /US S Q76 nSn[        R                  " USXVS9  [
        R                  " U5      u  pxn	[         R                  R                  " U/USS  Q76 n
U R                  U
[        U	[        R                   " 5       S95        U R#                  U[        U	[        R                   " 5       S95        g )	Nr.  r   r1  r   rC  T)rx   r   r   r0   r3  rF   r  r9   r   r   r   r   r9  r:  r  r  s              r   test_strip_and_prepend*CompileallTestsBase.test_strip_and_prepend  s   4ww||DNN6X6
D**4A^^--f577<<>"1>
t4(0	I$::2>ggll:==c4467	
 	c4467	
r   c           	      L   / SQn[         R                  R                  " U R                  /UQ76 n[         R                  " U5        [
        R                  " USS5        U R                  [        5         [        R                  " USSSSS9  S S S 5        g ! , (       d  f       g = f)N)r   r/  r0  r9   r   r   r1  Tz/barrC  )rx   r   r   r   )r!   r9   r:   r5   r4  r
   r  assertRaisesr   ri   r   )rF   r  r9   s      r   test_strip_prepend_and_ddir/CompileallTestsBase.test_strip_prepend_and_ddir  st    <ww||DNN6X6
D!!$8z*""4t&,2vG +**s   3B
B#c                    [         R                  " U R                  SS5      n/ nS H0  nUR                  [        R
                  R                  UUS95        M2     SS/SS/SS// SQ/nU Hk  n[        R                  " US	US
9  U HL  nU R                  [        R                  R                  X#   5      5         [        R                  " X#   5        MN     Mm     g ! [         a     Mb  f = f)Ntest_optimizationa = 0r   r   r   r   r   r   r   r   r   Tr   )r
   r  r5   r  r   r   r   ri   rj   rh   r!   r9   r   r   	Exception)rF   r   r   	opt_leveltest_combinationsopt_combinations         r   !test_multiple_optimization_levels5CompileallTestsBase.test_multiple_optimization_levels  s    **4>>+>+24 $IIIinn66vDM 7 O P %  VaVaVY?0O##F$-<>,	r} =>IIbm, -  1 ! s   :C
C)(C)c                 (   [         R                  R                  U R                  SSS5      n[         R                  R                  U R                  SSS5      n[         R                  R                  U R                  SSS5      n[         R                  " U5        [         R                  " U5        [         R                  " U5        [
        R                  " USS5      n[
        R                  " USS5      n[         R                  R                  US	5      n[         R                  R                  US
5      n[         R                  " XF5        [         R                  " XW5        [        R                  R                  U5      n[        R                  R                  U5      n	[        R                  " USUS9  U R                  [         R                  R                  U5      5        U R                  [         R                  R                  U	5      5        g )Nr   dirallowedsymlinks
prohibitedtest_allowedrP  test_prohibitedtest_allowed.pytest_prohibited.pyT)rx   limit_sl_dest)r!   r9   r:   r5   r4  r
   r  symlinkr   r   r   ri   r   rh   r   r   
rF   allowed_pathsymlinks_pathprohibited_pathallowed_scriptprohibited_scriptallowed_symlinkprohibited_symlink
allowed_bcprohibited_bcs
             r   test_ignore_symlink_destination3CompileallTestsBase.test_ignore_symlink_destination  s]    ww||DNNFE9MT^^VUJO'',,t~~vulS
L!
M"
O$ '22<QXY)55oGXZab'',,}6GHWW\\-9MN


>3


$9^^55oF
!889KL}DUz2367r   )rK   r<   r@   r5   r;   r?   rD   rB   )1__name__
__module____qualname____firstlineno__rH   rL   r\   rl   rq   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   _have_multiprocessingr   patchr   r   r   r   r   r   r  r!  r$  r(  r+  r;  r@  rD  rH  rL  rV  r	   skip_unless_symlinkrm  __static_attributes__ r   r   r*   r*   6   s   =  
GG4 1
+G26666K
PL1666 %'AB	ZZ89* : C*?
 %'AB	ZZ89F : CF %'AB	ZZ89	ZZ)*2 + : C2
 %'AB	ZZ8dC	ZZ)*2 + D C26" 15 @:G %'ABF CF= %'AB< C<
&
2

*G& ""8 #8r   r*   c                       \ rS rSrSrg)CompileallTestsWithSourceEpochi  rw  Nro  rp  rq  rr  rv  rw  r   r   ry  ry         	r   ry  )	metaclasssource_date_epochc                       \ rS rSrSrg)!CompileallTestsWithoutSourceEpochi  rw  Nrz  rw  r   r   r  r    r{  r   r  z tempdir is not encodable on WASIc                   *    \ rS rSrSrS rS rS rSrg)EncodingTesti  zPIssue 6716: compileall should escape source code when printing errors
to stdout.c                    [         R                  " 5       U l        [        R                  R                  U R                  S5      U l        [        U R                  SSS9 nUR                  S5        S S S 5        g ! , (       d  f       g = f)Nr-   r.   r/   r0   u   b"€")	r3   r4   r5   r!   r9   r:   r;   r=   r>   rE   s     r   rH   EncodingTest.setUp  s[    !))+77<<
C$""C':d JJ{# ;::s   A::
Bc                 D    [         R                  " U R                  5        g r   )r7   r8   r5   rk   s    r   tearDownEncodingTest.tearDown  s    dnn%r   c                    [         R                  " [         R                  " 5       SS9n[        R                  " U5         [
        R                  " U R                  5      nS S S 5        U R                  W5        UR                  S5        UR                  5       nU R                  SU5        U R                  SU5        g ! , (       d  f       Ne= f)Nasciir0   r   z<SyntaxError: bytes can only contain ASCII literal charactersUnicodeEncodeError)rf   TextIOWrapperBytesIOrd   re   ri   r   r5   r   seekrS   r  r8  )rF   buffercompiledress       r   
test_errorEncodingTest.test_error   s    !!"**,A''/!--dnn=H 0"AkkmJ	
 	-s3 0/s   !B??
C)r5   r;   N)	ro  rp  rq  rr  __doc__rH   r  r  rv  rw  r   r   r  r    s    $&4r   r  c                   p   \ rS rSrSrS r\R                  S 5       rS r	S r
S rS rS	 rS
 r\\R"                  " S5      S 5       5       r\R"                  " S5      S 5       rSS/ 4SSS/4SSS/44 H  u  rrr\\4S jr\\" 5       S\-   '   M     S rS r\S 5       rS rS r\R>                  S 5       r S r!S r"S  r#S! r$S" r%\RL                  S# 5       r'S$ r(S% r)S& r*S' r+S( r,S) r-S* r.\/" \0S+5      S, 5       r1\2Rf                  " S-5      S. 5       r4S/ r5S0 r6\R>                  S1 5       r7S2 r8S3 r9S4r:g5)6CommandLineTestsBasei  zTest compileall's CLI.c                 $   [         R                  " 5       U l        U R                  [        R
                  U R                  5        [        R                  R                  U R                  S5      U l	        [        R                  " U R                  5        [        R                  R                  U R                  S5      U l        [        R                  " U R                  SS5      U l        [        R                  " U R                  SS5      U l        g )Nr  r   r  r   bar)r3   r4   r5   r6   r	   r8   r!   r9   r:   pkgdirrC   pkgdir_cachedirr
   r  initfnbarfnrk   s    r   rH   CommandLineTestsBase.setUp  s    !))+	(($..9ggll4>>59
!ww||DKKG#//ZL"..t{{E2F
r   c              #      #    [         R                  n[        R                  R	                  U R
                  S5      n U[         l        U R
                  US.v   U[         l        g! U[         l        f = f7f)z&Adjust and restore sys.pycache_prefix.__testcache__)
PYTHONPATHPYTHONPYCACHEPREFIXN)r6  pycache_prefixr!   r9   r:   r5   )rF   
old_prefix
new_prefixs      r   temporary_pycache_prefix-CommandLineTestsBase.temporary_pycache_prefix  s]      ''
WW\\$../B
	,!+C"nn'1 
 ",CCs   ;A6A& A6&A33A6c                 @    / [         R                  " 5       QSPSPSPUQ$ )Nz-S-mri   )r   !optim_args_from_interpreter_flags)rF   argss     r   _get_run_args"CommandLineTestsBase._get_run_args)  s<    ::< ( 	r   c                     [         R                  " U R                  U5      0 UDSS0D6u  p4nU R                  SU5        U$ )NPYTHONIOENCODINGr/   r   )r
   assert_python_okr  r   rF   r  env_varsr9  r:  r  s         r   assertRunOK CommandLineTestsBase.assertRunOK.  sK    $55,,T236>3*13 	c"
r   c                 b    [         R                  " U R                  U5      0 UDSS0D6u  p4nX4U4$ )Nr  r/   )r
   r  r  r  s         r   assertRunNotOK#CommandLineTestsBase.assertRunNotOK5  s@    $::++D125=2)02 |r   c                     [         R                  R                  U5      nU R                  [        R
                  R                  U5      5        g r   )r   r   r   rh   r!   r9   r   rF   r   r9   s      r   assertCompiled#CommandLineTestsBase.assertCompiled;  s/    ~~//3t,-r   c                     [         R                  R                  U5      nU R                  [        R
                  R                  U5      5        g r   )r   r   r   r   r!   r9   r   r  s      r   assertNotCompiled&CommandLineTestsBase.assertNotCompiled?  s1    ~~//3-.r   c                 N   [         R                  " U R                  SS5      nU R                  5        nU R                  " S0 UD6  U R                  U5        U R                  U R                  5        U R                  U R                  5        S S S 5        g ! , (       d  f       g = f)Nbazr   rw  )	r
   r  r5   r  r  r  r  r  r  )rF   bazfnenvs      r   test_no_args_compiles_path/CommandLineTestsBase.test_no_args_compiles_pathC  sw    ))$..%D**,#s#&""4;;/""4::.	 -,,s   AB
B$cpuc                    [         R                  " U R                  SS5      nU R                  5        nU R                  " S0 UD6  [
        R                  R                  U5      nS S S 5        [        R                  " W[        R                  " 5       S-
  4S-  5        [        R                  " U5      R                  nU R                  " S0 WD6  [        R                  " U5      R                  nU R                  XE5        U R                  " S0 UD6  [        R                  " U5      R                  nU R                  XE5        g ! , (       d  f       N= f)Nr  r   <   r   rw  )-f)r
   r  r5   r  r  r   r   r   r!   r`   timer"   rU   r   r   )rF   r  r  pycpathrZ   mtime2s         r    test_no_args_respects_force_flag5CommandLineTestsBase.test_no_args_respects_force_flagL  s     ))$..%D**,#s#nn66u=G - 	499;r>+A-. ))3!**'%%!**E* -,s   2E
Ec                 ,   [         R                  " U R                  SS5        U R                  5        nU R                  " S0 UD6nS S S 5        U R                  SW5        U R                  " S0 WD6nU R                  SU5        g ! , (       d  f       NE= f)Nr  r   s   Listing rw  )-q)r
   r  r5   r  r  r  r8  )rF   r  noisyrx   s       r    test_no_args_respects_quiet_flag5CommandLineTestsBase.test_no_args_respects_quiet_flag_  sx    !!$..%<**,$$+s+E -k5)  --e,	 -,s   B
Bnormalpycr   z	opt-1.pyc-Odoubleoptimizez	opt-2.pycz-OOc                   ^ [         R                  " USSSU R                  /-   6   U R                  [        R
                  R                  U R                  5      5        [        U4S jS 5       5      nU R                  [        [        R                  " U R                  5      5      U5        U R                  [        R                  " U R                  5       Vs/ s H  nUR                  T5      (       d  M  UPM     sn5        g s  snf )Nr  ri   r  c              3   x   >#    U  H/  nUR                  [        R                  R                  T5      v   M1     g 7fr   )formatr6  implementation	cache_tag).0baseexts     r   	<genexpr>)CommandLineTestsBase.f.<locals>.<genexpr>t  s3      K*I$ #kk#*<*<*F*FLL*Is   7:)z__init__.{}.{}z	bar.{}.{})r
   r  r  rh   r!   r9   r   r  sortedr   listdirr   endswith)rF   r  switchexpectedr   s    `   r   fCommandLineTestsBase.fo  s    **V|T4;;7.8 : OOBGGNN4+?+?@A K*IK KHVBJJt/C/C$DExP2::dkk+B 3+BR!#S!1 !+B 3 4 3s   D7Dtest_pep3147_paths_c                 :   U R                  SSU R                  5        U R                  [        R                  R                  U R                  5      5        [        / SQ5      nU R                  [        [        R                  " U R                  5      5      U5        g )Nz-br  )__init__.pyz__init__.pyczbar.pyzbar.pyc)
r  r  r   r!   r9   r   r  r  r   r  )rF   r  s     r   test_legacy_paths&CommandLineTestsBase.test_legacy_paths|  sl     	tT[[1(<(<=> & '

4;; 78(Cr   c                 `   U R                  SU R                  5        U R                  [        R                  R                  U R                  5      5        [        R                  R                  U R                  S5      nU R                  [        R                  R                  U5      5        U R                  SU R                  5        U R                  [        R                  R                  U R                  5      5        U R                  [        R                  R                  U5      5        g )Nr  r   )	r  r  rh   r!   r9   r   r  r:   r   )rF   cachecachedirs     r   test_multiple_runs'CommandLineTestsBase.test_multiple_runs  s     	t{{+t';';<=T%9%9=I67t{{+t';';<=67r   c                 f   U R                  SU R                  5        [        R                  R	                  U R
                  5      n[        R                  " U[        R                  " 5       S-
  4S-  5        [        R                  " U5      R                  nU R                  SU R                  5        [        R                  " U5      R                  nU R                  X#5        U R                  SSU R                  5        [        R                  " U5      R                  nU R                  X#5        g )Nr  r  r   r  )r  r  r   r   r   r  r!   r`   r  r"   rU   r   r   )rF   r  rZ   r  s       r   
test_forceCommandLineTestsBase.test_force  s    t{{+..224::>
499;r>+A-. ))t{{+!**'tT[[1!**E*r   c                 T   [         R                  R                  U R                  S5      n[         R                  " U5        [
        R                  " USS5      n[
        R                  " USS5      nU R                  SSU R                  5        U R                  U5        U R                  [         R                  R                  [         R                  R                  US5      5      5        U R                  SU R                  5        U R                  U5        U R                  U5        g )Nspamr  r   hamr  z-lr   )r!   r9   r:   r  rC   r
   r  r  r  r   r   r  )rF   
subpackage	subinitfnhamfns       r   test_recursion_control+CommandLineTestsBase.test_recursion_control  s    WW\\$++v6

!--j*bI	))*eR@tT[[1y)Z(OPQt{{+I&E"r   c                    [         R                  R                  U R                  S5      n[         R                  R                  US5      n[         R                  R                  US5      nXU4 H  n[        R
                  " U5        M     [         R                  R                  US5      n[        R                  " USS5      n[        R                  " USS5      n[        R                  " USS5      nU R                  SSU R                  5        U R                  U5        U R                  [         R                  R                  [         R                  R                  US	5      5      5        U R                  SS
U R                  5        U R                  U5        U R                  U5        U R                  U5        U R                  SSU R                  5        U R                  U5        U R                  U5        U R                  U5        U R                  U5        U R                  SSU R                  5        U R                  U5        U R                  U5        U R                  U5        U R                  U5        g )Nr  r  eggsr  r   eggr  z-r 0r   z-r 1z-r 2z-r 5)r!   r9   r:   r  r
   make_pkgr  r  r  r   r   r  )	rF   r  subpackage2subpackage3pkgr  r  spamfneggfns	            r   test_recursion_limit)CommandLineTestsBase.test_recursion_limit  s   WW\\$++v6
ggll:u5ggll;7[9C""3' : GGLL];	))*eR@**;C))+ubAvt{{3y)GGNN277<<
MBC	E 	vt{{3I&E"v&vt{{3I&E"F#u%vt{{3I&E"F#E"r   c           	         [         R                  R                  U R                  S5      n[        R
                  " U5        [         R                  " S[         R                  R                  US5      5        [         R                  " S[         R                  R                  US5      5        U R                  SU R                  5        U R                  [         R                  R                  U R                  SSSS5      5        g )Nr  .evilevil2r  r  )	r!   r9   r:   r  r
   r  rb  r  r  )rF   r  s     r   test_symlink_loop&CommandLineTestsBase.test_symlink_loop  s    
 ggll4;;/s#


3S&12


3S'23t{{+BGGLLKK-
 	r   c                     U R                  U R                  5      nU R                  SU R                  5      nU R                  SU5        U R                  SU5        g )Nr  r   )r  r  r   r   )rF   r  rx   s      r   
test_quietCommandLineTestsBase.test_quiet  sL      -  t{{3C'e$r   c                    [         R                  " U R                  SS5        U R                  SU R                  5      u  pnU R                  SU R                  5      u  pnU R	                  SU5        U R                  SU5        g )Ncrunchyfrog
bad(syntaxr  z-qqr   )r
   r  r  r  r   r   )rF   r  rx   silents       r   test_silent CommandLineTestsBase.test_silent  sl    !!$++}lK))$<!**5$++>1C'f%r   c                     U R                  SSSU R                  5        U R                  U R                  5        U R	                  U R
                  5        g )Nr  z-xz
ba[^\\/]*$)r  r  r  r  r  r  rk   s    r   test_regexp CommandLineTestsBase.test_regexp  s>    t]DKK@tzz*DKK(r   c                    [         R                  R                  U R                  S5      n[         R                  " U5        [
        R                  " USS5      n[
        R                  " USS5      nU R                  SU R                  U5        U R                  U R                  5        U R                  U R                  5        U R                  U5        U R                  U5        g )Nfoo2r  r   bar2r  )r!   r9   r:   r5   rC   r
   r  r  r  r  r  r  )rF   pkgdir2init2fnbar2fns       r   test_multiple_dirs'CommandLineTestsBase.test_multiple_dirs  s    '',,t~~v6
++GZD**7FB?t{{G4DKK(DJJ'G$F#r   c                     [         R                  " U R                  SS5        U R                  SSSU R                  5      u  pnU R	                  US5        g )Nr  r  r  -ddinsdale   File "dinsdale)r
   r  r  r  r   rF   r9  r:  r  s       r   test_d_compile_error)CommandLineTestsBase.test_d_compile_error  sG    !!$++}lK**4z4;;O/0r   c                    [         R                  " U R                  SS5      nU R                  SSSU R                  5        [         R                  " U R                  SS5      n[        R
                  R                  U5      n[        R                  " U[        R                  R                  U R                  S5      5        [        R                  " U5        [         R                  " US	S
9u  pEnU R                  US5        g )Nr  zraise Exceptionr  r  r   bingz
import bazzbaz.pycF)
__isolatedr!  )r
   r  r  r  r   r   r   r!   renamer9   r:   remover  r   )rF   r  r   r  r9  r:  r  s          r   test_d_runtime_error)CommandLineTestsBase.test_d_runtime_error  s    ))$++u>OPtZ=&&t{{FLInn..u5
		#rww||DKK;<
		%$::2%P/0r   c                    U R                  S[        R                  R                  U R                  S5      U R
                  5      u  pnU R                  US5        U R                  US5        U R                  [        R                  R                  [        R                  R                  U R                  5      5      5        g )N-i
nosuchfiles   rror.*nosuchfiles	   Traceback)r  r!   r9   r:   r5   r  r   assertNotRegexr   r   r   r   r   r  r"  s       r   test_include_bad_file*CommandLineTestsBase.test_include_bad_file  s    **"'',,t~~|<dkkK12C.	(H(H,0,@,@)B C 	Dr   c                    [         R                  " U R                  SS5      n[         R                  " U R                  SS5      n[         R                  " U R                  SS5      n[         R                  " U R                  SS5      n[        [        R
                  R                  U R                  S5      SSS	9 nUR                  [        R
                  R                  U R                  S
5      [        R                  -   5        UR                  [        R
                  R                  U R                  S5      [        R                  -   5        S S S 5        U R                  S[        R
                  R                  U R                  S5      U5        U R                  U5        U R                  U5        U R                  U5        U R                  U5        g ! , (       d  f       N= f)Nf1r   f2f3f4l1r.   r/   r0   f1.pyf2.pyr-  )r
   r  r  r=   r!   r9   r:   r5   r>   linesepr  r  r  rF   r3  r4  r5  r6  r7  s         r   test_include_file_with_arg/CommandLineTestsBase.test_include_file_with_arg  sC   &&t{{D"=&&t{{D"=&&t{{D"=&&t{{D"="'',,t~~t4cGLPRHHRWW\\$++w7

BCHHRWW\\$++w7

BC M 	rww||DNNDA2FBBr"B MLs   <BG
G'c                 >   [         R                  " U R                  SS5      n[         R                  " U R                  SS5      n[         R                  " U R                  SS5      n[         R                  " U R                  SS5      n[        [        R
                  R                  U R                  S5      SSS	9 nUR                  [        R
                  R                  U R                  S
5      [        R                  -   5        S S S 5        U R                  S[        R
                  R                  U R                  S5      5        U R                  U5        U R                  U5        U R                  U5        U R                  U5        g ! , (       d  f       N= f)Nr3  r   r4  r5  r6  r7  r.   r/   r0   r9  r-  )r
   r  r  r=   r!   r9   r:   r5   r>   r:  r  r  r  r;  s         r   test_include_file_no_arg-CommandLineTestsBase.test_include_file_no_arg"  s   &&t{{D"=&&t{{D"=&&t{{D"=&&t{{D"="'',,t~~t4cGLPRHHRWW\\$++w7

BC Mrww||DNNDABr"Br"r" MLs   <AF
Fc                    [         R                  " U R                  SS5      n[         R                  " U R                  SS5      n[         R                  " U R                  SS5      n[         R                  " U R                  SS5      n[         R                  " U R	                  S5      SS/-   6 nUR
                  R                  U[        R                  -   R                  S	5      5        [         R                  " U5        U R                  U5        U R                  U5        U R                  U5        U R                  U5        g )
Nr3  r   r4  r5  r6  rw  r-  -r  )r
   r  r  spawn_pythonr  stdinr>   r!   r:  encodekill_pythonr  r  )rF   r3  r4  r5  r6  ps         r   test_include_on_stdin*CommandLineTestsBase.test_include_on_stdin/  s    &&t{{D"=&&t{{D"=&&t{{D"=&&t{{D"=&&););B)?4+)MO	r"**},,W56!!!$r"r"Br"r   c                 N   [         R                  " U R                  SS5      nU R                  SU R                  XR
                  5      u  p#nU R                  US5        U R                  U5        U R                  U R                  5        U R                  U R
                  5        g )Nr&  zsyntax(errorr.  s   rror)	r
   r  r  r  r  r  r   r  r  )rF   bingfnr9  r:  r  s        r   !test_compiles_as_much_as_possible6CommandLineTestsBase.test_compiles_as_much_as_possible<  s    **4;;O**<+1::?g&v&DKK(DJJ'r   c                 J    U R                  S5      nU R                  US5        g )Nbadfilenames   Can't list 'badfilename')r  r   )rF   r:  s     r   !test_invalid_arg_produces_message6CommandLineTestsBase.test_invalid_arg_produces_messageE  s#    }-9:r   c                    [         R                  " U R                  SS5        [        R                  R                  [        R                  R                  U R                  S5      5      nU R                  SU R                  5        [        US5       nUR                  5       nS S S 5        U R                  [        R                  WSS S5      S	5        U R                  S
U R                  5        [        US5       nUR                  5       nS S S 5        U R                  [        R                  USS S5      S5        g ! , (       d  f       N= f! , (       d  f       NI= f)Nr3  r   r8  z --invalidation-mode=checked-hashrO         littler   z"--invalidation-mode=unchecked-hashr   )r
   r  r  r   r   r   r!   r9   r:   r  r=   rS   r   rT   
from_bytes)rF   r  fprY   s       r   test_pyc_invalidation_mode/CommandLineTestsBase.test_pyc_invalidation_modeI  s    !!$++tR8nn..GGLLg.0;T[[I#t_779D Qq	8<dC=t{{K#t_779D Qq	8<dC _ _s   D?<E?
E
Er   c                    [         R                  " U R                  SS5      n/ n[        S5       H  n[        R
                  R                  U R                  SR                  U5      5      n[        R                  " U5        [         R                  " USS5      nUR                  [         R                  " USS5      5        M     U R                  U R                  SS5        U R                  U5        U H  nU R                  U5        M     g )Nr  r   r   zfoo{}r  z-j0)r
   r  r5   r   r!   r9   r:   r  rC   r  r  r  )rF   r  filessuffixr  r   rG   s          r   test_workers!CommandLineTestsBase.test_workersV  s    **4>>62FAhFWW\\$..'..2HIFHHV**6:rBBLL22662FG	  	s3F#D% r   zcompileall.compile_dirc                 <   [         R                  " S[        R                  U R                  S/S9   [
        R                  " 5         U R                  UR                  5        U R                  UR                  S   S   S5        S S S 5        g ! , (       d  f       g = f)Nzsys.argvz-j0r   r   r   r   )r   rt  r6  
executabler5   ri   mainrh   r   r   r   )rF   r   s     r   test_workers_available_cores1CommandLineTestsBase.test_workers_available_corese  sr    ZZ
 ^^T^^UCEOOOOK../[2226yA1E	E E Es   AB
Bc                    / SQn[         R                  R                  " U R                  /UQ76 n[         R                  " U5        [
        R                  " USS5      n[        R                  R                  U5      n[         R                  R                  " U R                  /US S Q76 nSnU R                  SUSXb5        [
        R                  " U5      u  pxn	[         R                  R                  " U/USS  Q76 n
U R                  U
[        U	[        R                  " 5       S95        U R!                  U[        U	[        R                  " 5       S95        g )	Nr.  r   r1  r   rC  z-sz-pr0   )r!   r9   r:   r5   r4  r
   r  r   r   r   r  r  r  r5  r6  r7  r8  rG  s              r   rH  +CommandLineTestsBase.test_strip_and_prependm  s	   4ww||DNN6X6
D**4A^^--f577<<>"1>
xz@$::2>ggll:==c4467	
 	c4467	
r   c           
      `   [         R                  R                  U R                  S5      n[         R                  " U5        [
        R                  " USS5      n/ nS H0  nUR                  [        R                  R                  UUS95        M2     SS/SS/SS// S	Q/nU Hy  nU R                  " U/S
 U 5       Q76   U HV  nU R                  [         R                  R                  U[        U5         5      5         [         R                  " X4   5        MX     M{     g ! [          a     Ml  f = f)NoptimizationsrO  rP  rQ  r   r[  12)r[  ri  rj  c              3   >   #    U  H  nS [        U5      -   v   M     g7f)z-oN)r5  )r  ns     r   r  ICommandLineTestsBase.test_multiple_optimization_levels.<locals>.<genexpr>  s     $LOqTCF]Os   )r!   r9   r:   r5   r4  r
   r  r  r   r   r   r  rh   r   rT   r   rR  )rF   r9   r   r   rS  rT  rU  s          r   rV  6CommandLineTestsBase.test_multiple_optimization_levels  s   ww||DNNO<
D**4+>+24 $IIIinn66vDM 7 O P % "3Z!3Z!3Z,.  1OTM$LO$LM,	r#i./A BCIIbm, -  1 ! s   >D
D-,D-c                 "   [         R                  R                  U R                  SSS5      n[         R                  R                  U R                  SSS5      n[         R                  R                  U R                  SSS5      n[         R                  " U5        [         R                  " U5        [         R                  " U5        [
        R                  " USS5      n[
        R                  " USS5      n[         R                  R                  US	5      n[         R                  R                  US
5      n[         R                  " XF5        [         R                  " XW5        [        R                  R                  U5      n[        R                  R                  U5      n	U R                  USU5        U R                  [         R                  R                  U5      5        U R                  [         R                  R                  U	5      5        g )Nr   rY  rZ  r[  r\  r]  rP  r^  r_  r`  z-e)r!   r9   r:   r5   r4  r
   r  rb  r   r   r   r  rh   r   r   rc  s
             r   rm  4CommandLineTestsBase.test_ignore_symlink_destination  s]    ww||DNNFE9MT^^VUJO'',,t~~vulS
L!
M"
O$ '22<QXY)55oGXZab'',,}6GHWW\\-9MN


>3


$9^^55oF
!889KLl;z2367r   c                 >    U R                  U R                  SS5        g )N-o 1--hardlink-dupes)r  r5   rk   s    r   test_hardlink_bad_args+CommandLineTestsBase.test_hardlink_bad_args  s     	DNNF4FGr   c           
      :   S H  n[         R                  " 5        nU R                  US9   [        R                  " USS5      n[        U5      n/ SQnU(       a  UR                  S5        U R                  " U/UQ76   U R                  [        US   US   5      U5        U R                  [        US   US	   5      U5        U R                  [        US   US	   5      U5        S S S 5        S S S 5        M     g ! , (       d  f       N= f! , (       d  f       GM  = f)
N)TFdedupr   rP  )r  z-o 0rr  z-o 2rs  r   r   r   )
r3   TemporaryDirectorysubTestr
   r  r   r  r  r   r(   )rF   rx  r9   r   pycsr  s         r   test_hardlink"CommandLineTestsBase.test_hardlink  s     #E,,.$\\\.*66tXwOF#F+D9D$67$$T1D1$$[a$q'%BEJ$$[a$q'%BEJ$$[a$q'%BEJ / /. #.. /.s#   D
B9C9$D
9
DD


D	)r  r5   r  r  r  N);ro  rp  rq  rr  r  rH   rd   contextmanagerr  r  r  r  r  r  r  r   r   requires_resourcer  r  namer  r  r  localsr  r  r  r  r  r	   ru  r  r  r  r  r  r#  force_not_colorizedr*  r0  r<  r?  rH  rL  rP  rX  r   rs  r^  r   rt  rc  rH  rV  rm  rt  r|  rv  rw  r   r   r  r    s    G , ,
.// u%+ & +" u%- &- 
5"	[4&)	;0c6
 F 
	4 23&-.!$D8 + +
# #D "" #%&)
	$1
   1 !1D ##(;D %'AB& C& 
ZZ()F *F
(. ""8 #80H
Kr   r  c                       \ rS rSrSrg)CommandLineTestsWithSourceEpochi  rw  Nrz  rw  r   r   r  r    r{  r   r  c                       \ rS rSrSrg)CommandLineTestsNoSourceEpochi  rw  Nrz  rw  r   r   r  r    r{  r   r  c                       \ rS rSrS r\R                  S 5       rSS jrSSSS.S	 jr	S
 r
SS jrS rS rSS jrS rS rS rS rS rSrg)HardlinkDedupTestsBasei  c                     S U l         g r   r   rk   s    r   rH   HardlinkDedupTestsBase.setUp  s	    	r   c              #      #    [         R                  " 5        nXl        Uv   S U l        S S S 5        g ! , (       d  f       g = f7fr   )r3   ry  r9   )rF   r9   s     r   temporary_directory*HardlinkDedupTestsBase.temporary_directory  s/     ((*dIJDI +**s   A3	A
AAc                 D    [         R                  " U R                  X!5      $ r   )r
   r  r9   )rF   coder  s      r   r  "HardlinkDedupTestsBase.make_script  s    ((D??r   Tr   F)rx  r   rw   c                F    [         R                  " U R                  SUXS9  g )NT)rx   r   hardlink_dupesrw   )ri   r   r9   )rF   rx  r   rw   s       r   r   "HardlinkDedupTestsBase.compile_dir  s    tyyx.3	Br   c           	         U R                  5          U R                  S5        U R                  [        5         [        R
                  " U R                  SSSS9  S S S 5        U R                  [        5         [        R
                  " U R                  SSS/SS9  S S S 5        S S S 5        g ! , (       d  f       NX= f! , (       d  f       N(= f! , (       d  f       g = f)NpassTr   )rx   r   r  )r  r  rK  r   ri   r   r9   rk   s    r   test_bad_args$HardlinkDedupTestsBase.test_bad_args  s     %%'V$"":.&&tyyq6:< / "":. &&tyy1v6:< / ('.. /. ('s:   'C"B,C7$B=C,
B:	6C=
C	C
Cc                     / nU(       a  UR                  S5        UR                  S5        U(       a  UR                  S5        SR                  U5      $ )Nz'module docstring'zx = 1zassert x == 1
)r  r:   )rF   	docstring	assertionliness       r   create_code"HardlinkDedupTestsBase.create_code  sA    LL-.WLL)yyr   c              #   Z   #    S H!  nS H  nU R                  XS9nX1U4v   M     M#     g 7f)N)FTr  r  )r  )rF   r  r  r  s       r   
iter_codes!HardlinkDedupTestsBase.iter_codes  s7     &I*	'')'Q	22 + 's   )+c           
         U R                  5        H  u  pnU R                  X#S9   U R                  5          U R                  U5      n[	        U5      nU R                  SS9  U R                  [        US   US   5      5        U R                  [        US   US   5      5        U R                  [        US   US   5      5        S S S 5        S S S 5        M     g ! , (       d  f       N= f! , (       d  f       M  = f)Nr  Frw  r   r   r   )r  rz  r  r  r   r   r   r(   )rF   r  r  r  r   r{  s         r   test_disabled$HardlinkDedupTestsBase.test_disabled  s    *.//*;&DY	G--/!--d3F#F+D$$5$1$$[a$q'%BC$$[a$q'%BC$$[a$q'%BC 0 HG +<// HGs#   C,BCC,
C)%C,,
C;	c                     [        U5      nU R                  [        US   US   5      U(       + 5        U R                  [        US   US   5      U(       + =(       a    U(       + 5        U R                  [        US   US   5      U(       + 5        g )Nr   r   r   )r   r   r(   )rF   r   r  r  r{  s        r   check_hardlinks&HardlinkDedupTestsBase.check_hardlinks  s    T!Wd1g6&	(T!Wd1g6&8y=	:T!Wd1g6&	(r   c                 F   U R                  5        Hj  u  pnU R                  X#S9   U R                  5          U R                  U5      nU R	                  5         U R                  XBU5        S S S 5        S S S 5        Ml     g ! , (       d  f       N= f! , (       d  f       M  = f)Nr  )r  rz  r  r  r   r  )rF   r  r  r  r   s        r   r|  $HardlinkDedupTestsBase.test_hardlink"  s}    *.//*;&DY	G--/!--d3F$$&((IF 0 HG +<// HGs"   B4B +B 
B
B
B 	c           	         S H  nU R                  US9   U R                  5          U R                  U R                  5       5      nU R	                  US9  [        X!S   5      n[        X!S   5      nU R                  [        X45      5        S S S 5        S S S 5        M     g ! , (       d  f       N= f! , (       d  f       M  = f)N))r   r   )r   r   )r   r   )optsr   r   r   )rz  r  r  r  r   r   rh   r(   )rF   r  r   pyc1pyc2s        r   test_only_two_levels+HardlinkDedupTestsBase.test_only_two_levels+  s    ,D4(--/ "--d.>.>.@AF$$d$3"673D"673DOOK$;< 0 )( -// )(s#   B1A%B B1 
B.*B11
C 	c                    U R                  5          U R                  U R                  5       5      nU R                  / SQS9  [	        US5      n[	        US5      nU R                  [        X#5      5        S S S 5        g ! , (       d  f       g = f)N)r   r   r   r   r  r   r   )r  r  r  r   r   rh   r(   )rF   r   r  r  s       r   test_duplicated_levels-HardlinkDedupTestsBase.test_duplicated_levels8  sq     %%' %%d&6&6&89Fl361%D61%DOOK34 (''s   A#A==
Bc           	         U R                  5          U R                  S5      nU R                  5         U R                  U5        [	        U5      n[
        R                  " US   5      R                  nU R                  S5      nU R                  SS/SS9  U R                  U[
        R                  " US   5      R                  5        U R                  [        US   US   5      5        U R                  U[
        R                  " US   5      R                  5        U R                  [        R                  " US   US   SS95        S S S 5        g ! , (       d  f       g = f)	NrP  r   print(0)r   T)r   rw   r   shallow)r  r  r   r  r   r!   r"   r#   r   rh   r(   r   r   filecmpcmprF   r   r{  inodes       r   test_recompilation)HardlinkDedupTestsBase.test_recompilationD  s    %%'%%g.F  (F#DGGDG$++E %%j1F q!fD9 UBGGDG$4$;$;<OOKQa9:rwwtAw'7'>'>?W[[a$q'4HI) (''s   D6E
Ec           	         U R                  5          U R                  U R                  5       SS9nU R                  5         U R	                  U5        [        U5      n[        R                  " US   5      R                  nU R                  SSS9n[        R                  " SSSSU R                  S	9  U R                  U[        R                  " US   5      R                  5        U R                  U[        R                  " US
   5      R                  5        U R                  [        US   US
   5      5        U R                  [        R                   " US   US
   SS95        S S S 5        g ! , (       d  f       g = f)Nmodule)r  r   r  r  z-czimport moduleF)r'  r  r   r   Tr  )r  r  r  r   r  r   r!   r"   r#   r
   r  r9   r   r   r(   r  r  r  s       r   test_import"HardlinkDedupTestsBase.test_import]  s4    %%'%%d&6&6&8x%HF  (F#DGGDG$++E %%jx%@F **dO$))
 UBGGDG$4$;$;<UBGGDG$4$;$;<[a$q':;W[[a$q'4HI- (''s   EE,,
E:r   N)r   )FF)ro  rp  rq  rr  rH   rd   r~  r  r  r   r  r  r  r  r  r|  r  r  r  r  rv  rw  r   r   r  r    sl      @ $()5 B< 3
D(G=
5J2Jr   r  c                       \ rS rSrSrg)!HardlinkDedupTestsWithSourceEpochiy  rw  Nrz  rw  r   r   r  r  y  r{  r   r  c                       \ rS rSrSrg)HardlinkDedupTestsNoSourceEpochi  rw  Nrz  rw  r   r   r  r    r{  r   r  __main__)8ri   rd   r  importlib.utilr   rf   r!   r}   r7   rV   r6  r3   test.test_importlib.utilr   r  r{   r   r   multiprocessing.utilr   r	  concurrent.futuresr   concurrent.futures.processr   rs  NotImplementedErrorModuleNotFoundErrorr   test.supportr	   r
   test.test_py_compiler   r   test.support.os_helperr   r   r   r(   r*   TestCasery  r  skipIfis_wasir  r  r  r  skip_unless_hardlinkr  r  r  ro  rb  rw  r   r   <module>r     s       	 	    
     %	" U6?   " & : 8 +F7g8 g8T	%8%-%6%6/F7;		(;(0(9(92I:?	 
"DE48$$ 4 F4:{K {K|	&:'/'8'81H9=		$8%-%6%6/F7<	 ZJ ZJ  ZJz	(>(0(9(92I:>		&<&.&7&70G8=	 zMMO ]# 	01 "!"s   F	 	
FF